contro-max
Version:
Game controls done in the best possible way!
26 lines (25 loc) • 705 B
JavaScript
import { useState } from 'react';
import useEventListener from 'use-typed-event-listener';
/**
* @example
* ```ts
* const isPressed = useKeyPressed('KeyZ')
* ```
*/
export const useKeyPressed = (key, options) => {
const [pressed, setIsPressed] = useState(false);
useEventListener(window, 'keydown', key => { });
useEventListener(window, 'keydown', async (key) => {
// key.k
});
return pressed;
};
export const usePointerLockActive = () => {
const [l, setL] = useState(() => !!document.pointerLockElement);
useEventListener(document, 'pointerlockchange', () => {
setL(!!document.pointerLockElement);
});
return {
pointerLocked: l,
};
};