Something went wrong. Try again.
Hopefully a GameBoy Advance emulator... luckasranarison.github.io/boya
gameboy-advance nintendo rust wasm emulator
Something went wrong. Try again.
123456789101112131415161718192021222324252627282930313233343536373839404142import { useRuntimeActions } from "@/stores/runtimeStore";import { usePersistantStore } from "@/stores/persistantStore";import { controls, encodeKeyEvent } from "@/lib/keymap";import { useDebuggerControls } from "./useDebuggerControls";
export function useKeyHandler() { const keymap = usePersistantStore((state) => state.keymap); const dbg = useDebuggerControls(); const { updateKeypad } = useRuntimeActions();
return (event: KeyboardEvent) => { const mapping = keymap[encodeKeyEvent(event)];
if (!mapping) return;
if (mapping && mapping.type === "gamepad") { if (event.type === "keyup") { updateKeypad((prev) => prev | mapping.value); } else if (event.type === "keydown") { updateKeypad((prev) => prev & ~mapping.value); }
event.preventDefault(); } else if ( !event.repeat && mapping.type === "debugger" && event.type === "keydown" ) { if (mapping.action === controls.reset) dbg.reset(); else if (mapping.action === controls.stepInto) dbg.stepInto(); else if (mapping.action === controls.stepOut) dbg.stepOut(); else if (mapping.action === controls.stepScanline) dbg.stepScanline(); else if (mapping.action === controls.stepFrame) dbg.stepFrame(); else if (mapping.action === controls.stepIRQ) dbg.stepIrq(); else if (mapping.action === controls.toggleRun) dbg.toggleRun(); else if (mapping.action === controls.stop) dbg.stop();
event.preventDefault(); } };}