35 lines
746 B
TypeScript
35 lines
746 B
TypeScript
export enum Keys {
|
|
ARROW_RIGHT = 'ArrowRight',
|
|
ARROW_LEFT = 'ArrowLeft',
|
|
p = 'p',
|
|
s = 's',
|
|
r = 'r',
|
|
}
|
|
|
|
const downKeys: Partial<Record<Keys, boolean>> = {};
|
|
const pressedKeys: Partial<Record<Keys, boolean>> = {};
|
|
|
|
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]);
|
|
},
|
|
};
|