mirror of
https://github.com/CommunityOx/ox_lib.git
synced 2026-11-03 21:55:05 +00:00
36 lines
851 B
TypeScript
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;
|
|
};
|