Files
ox_lib/web/src/hooks/useKeyPress.ts
T
Luke 59051d505b fix(web/skillcheck): fix not being able to hit skill check with capslock
apparently the return key for event can differentiate lower and uppercase keys
2022-11-16 23:16:17 +01:00

36 lines
851 B
TypeScript

import React from 'react';
export const useKeyPress = (targetKey: KeyboardEvent['key']) => {
const [keyPressed, setKeyPressed] = React.useState(false);
const downHandler = React.useCallback(
({ key }: KeyboardEvent) => {
if (key.toLowerCase() === targetKey) {
setKeyPressed(true);
}
},
[targetKey]
);
const upHandler = React.useCallback(
({ key }: KeyboardEvent) => {
if (key.toLowerCase() === targetKey) {
setKeyPressed(false);
}
},
[targetKey]
);
React.useEffect(() => {
window.addEventListener('keydown', downHandler);
window.addEventListener('keyup', upHandler);
return () => {
window.removeEventListener('keydown', downHandler);
window.removeEventListener('keyup', upHandler);
};
}, [downHandler, upHandler]);
return keyPressed;
};