export enum Keys { ARROW_RIGHT = 'ArrowRight', ARROW_LEFT = 'ArrowLeft', p = 'p', s = 's', r = 'r', } const downKeys: Partial> = {}; const pressedKeys: Partial> = {}; document.addEventListener('keydown', e => { downKeys[e.key as Keys] = true; }); document.addEventListener('keypress', e => { pressedKeys[e.key as Keys] = true; }); document.addEventListener('keyup', e => { downKeys[e.key as Keys] = false; }); export const keyboard = { pressedKeys: downKeys, isKeyPressed(key: Keys): boolean { const isPressed = Boolean(pressedKeys[key]); pressedKeys[key] = false; return isPressed; }, isKeyDown(key: Keys): boolean { return Boolean(downKeys[key]); }, };