From 225804b5bddee3012af44177406c07ef5613de12 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Jo=C3=A3o=20Magalh=C3=A3es?= <joamag@gmail.com>
Date: Sun, 30 Oct 2022 10:45:33 +0000
Subject: [PATCH] refactor: arrow keys prevent

---
 examples/web/index.ts      | 11 +++++++++++
 examples/web/react/app.tsx |  3 +++
 2 files changed, 14 insertions(+)

diff --git a/examples/web/index.ts b/examples/web/index.ts
index 13ff3e00..cd74123f 100644
--- a/examples/web/index.ts
+++ b/examples/web/index.ts
@@ -53,6 +53,13 @@ const KEYS: Record<string, number> = {
     s: PadKey.B
 };
 
+const ARROW_KEYS: Record<string, boolean> = {
+    ArrowUp: true,
+    ArrowDown: true,
+    ArrowLeft: true,
+    ArrowRight: true
+};
+
 const ROM_PATH = require("../../res/roms/20y.gb");
 
 /**
@@ -399,6 +406,8 @@ class GameboyEmulator extends Observable implements Emulator {
     registerKeys() {
         document.addEventListener("keydown", (event) => {
             const keyCode = KEYS[event.key];
+            const isArrow = KEYS[event.key] ?? false;
+            if (isArrow) event.preventDefault();
             if (keyCode !== undefined) {
                 this.gameBoy!.key_press(keyCode);
                 return;
@@ -421,6 +430,8 @@ class GameboyEmulator extends Observable implements Emulator {
 
         document.addEventListener("keyup", (event) => {
             const keyCode = KEYS[event.key];
+            const isArrow = KEYS[event.key] ?? false;
+            if (isArrow) event.preventDefault();
             if (keyCode !== undefined) {
                 this.gameBoy!.key_lift(keyCode);
                 return;
diff --git a/examples/web/react/app.tsx b/examples/web/react/app.tsx
index 5832fdc8..36c13768 100644
--- a/examples/web/react/app.tsx
+++ b/examples/web/react/app.tsx
@@ -136,6 +136,9 @@ export const App: FC<AppProps> = ({ emulator, backgrounds = ["264653"] }) => {
             await handler(undefined, require("../res/storm.png"), 0.2);
         });
     };
+    const onKeyDown = (event: KeyboardEvent) => {
+        
+    }
     useEffect(() => {
         document.body.style.backgroundColor = `#${getBackground()}`;
     });
-- 
GitLab