import { useEffect } from "react"; export function useHIDScanner(onRead: (value: string) => void, enabled = false) { useEffect(() => { if (!enabled) return; let hexKeys = "ABCDEFabcdefxX0123456789"; let buffer = ""; let clearBufferTimeout: NodeJS.Timeout; function handleKeyDownEvent(event: KeyboardEvent) { if (hexKeys.includes(event.key)) { clearTimeout(clearBufferTimeout); buffer += event.key; clearBufferTimeout = setTimeout(() => { buffer = ""; }, 500); } else if (event.key === "Enter") { onRead(buffer); buffer = ""; } } document.body.addEventListener("keydown", handleKeyDownEvent); return () => { document.body.removeEventListener("keydown", handleKeyDownEvent); }; }, [onRead, enabled]); }