expo-key-event
Version:
Provides an interface for reading key events such as from external bluetooth keyboards on Android, iOS and Web.
35 lines • 1.1 kB
JavaScript
import { useCallback, useEffect, useState } from "react";
/**
*
* @param listenOnMount Pass 'false' to prevent automatic key event listening
* - Use startListening/stopListening to control the listener manually
* @returns
*
*/
export function useKeyEvent(listenOnMount = true) {
const [keyEvent, setKeyEvent] = useState(null);
const onKeyDown = useCallback((event) => {
setKeyEvent({ key: event.code });
}, []);
const startListening = useCallback(() => addEventListener("keydown", onKeyDown), [onKeyDown]);
const stopListening = useCallback(() => removeEventListener("keydown", onKeyDown), [onKeyDown]);
useEffect(() => {
if (listenOnMount)
startListening();
return () => {
stopListening();
};
}, [listenOnMount, startListening, stopListening]);
return {
/**
* Start listening for key events
*/
startListening,
/**
* Stop listening for key events
*/
stopListening,
keyEvent,
};
}
//# sourceMappingURL=useKeyEvent.web.js.map