From cfe2fbd879c13e2887d7980d68a735bf48b4fe51 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Magalh=C3=A3es?= <joamag@gmail.com> Date: Mon, 14 Nov 2022 17:58:52 +0000 Subject: [PATCH] feat: initial gamepad --- .../components/keyboard-gb/keyboard-gb.tsx | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/examples/web/react/components/keyboard-gb/keyboard-gb.tsx b/examples/web/react/components/keyboard-gb/keyboard-gb.tsx index 32715fd7..1cd2a2b1 100644 --- a/examples/web/react/components/keyboard-gb/keyboard-gb.tsx +++ b/examples/web/react/components/keyboard-gb/keyboard-gb.tsx @@ -79,11 +79,35 @@ export const KeyboardGB: FC<KeyboardGBProps> = ({ return; } }; + const onGamepadConnected = (event: GamepadEvent) => { + const gamepad = event.gamepad; + + console.log( + "Gamepad connected at index %d: %s. %d buttons, %d axes.", + event.gamepad.index, + event.gamepad.id, + event.gamepad.buttons.length, + event.gamepad.axes.length + ); + + const updateStatus = () => { + event.gamepad.buttons.forEach((button, index) => { + if (button.pressed) { + console.info(`${index} => ${button.pressed}`); + } + }); + requestAnimationFrame(updateStatus); + }; + + requestAnimationFrame(updateStatus); + }; document.addEventListener("keydown", _onKeyDown); document.addEventListener("keyup", _onKeyUp); + window.addEventListener("gamepadconnected", onGamepadConnected); return () => { document.removeEventListener("keydown", _onKeyDown); document.removeEventListener("keyup", _onKeyUp); + window.removeEventListener("gamepadconnected", onGamepadConnected); }; }, []); const renderKey = ( -- GitLab