UNPKG

portal-www

Version:

Nova Portal Website. Based on Next starter by Ueno

35 lines (26 loc) 839 B
import * as React from 'react'; /** * Custom hooks that return the keys that are pressed on the keyboard */ export const useKeyDown = () => { const [keys, setKeys] = React.useState<string[]>([]); const handleKeyDown = ({ key }: KeyboardEvent) => { if (keys.includes(key)) { return; } setKeys([...keys, key]); }; const handleKeyUp = ({ key }: KeyboardEvent) => { const d = keys.indexOf(key, 0); setKeys([...keys.slice(0, d), ...keys.slice(d + 1)]); }; React.useEffect(() => { document.addEventListener('keydown', handleKeyDown, false); document.addEventListener('keyup', handleKeyUp, false); return () => { document.removeEventListener('keydown', handleKeyDown, false); document.removeEventListener('keyup', handleKeyUp, false); }; }, [keys]); return keys; };