Spaces:
Running
Running
| "use client"; | |
| import { useEffect } from "react"; | |
| type KeyHandler = (e: KeyboardEvent) => void; | |
| export function useKey(target: string | string[], handler: KeyHandler) { | |
| useEffect(() => { | |
| const keys = Array.isArray(target) ? target : [target]; | |
| function onKey(e: KeyboardEvent) { | |
| if (keys.includes(e.key)) handler(e); | |
| } | |
| window.addEventListener("keydown", onKey); | |
| return () => window.removeEventListener("keydown", onKey); | |
| }, [target, handler]); | |
| } | |