From 4e74ceb0cc812c6860ec66a6d03cafc9cf3f231d Mon Sep 17 00:00:00 2001 From: TwoSquirrels Date: Wed, 10 Jul 2024 12:45:28 +0900 Subject: [PATCH] [WIP] Support keyboard --- src/main.js | 34 +++++++++++++++++++++++++++------- 1 file changed, 27 insertions(+), 7 deletions(-) diff --git a/src/main.js b/src/main.js index a1b4f29..7fe13a5 100644 --- a/src/main.js +++ b/src/main.js @@ -3,6 +3,7 @@ import "sanitize.css"; import "./style.css"; const elms = { + body: document.querySelector("body"), main: { joystickZone: document.querySelector("#joystick-zone"), buttonsZone: document.querySelector("#buttons-zone"), @@ -31,6 +32,8 @@ async function postJoystick(angle = Math.PI / 2, force = 1) { console.log("Responded joystick", await res.arrayBuffer(), await res.text()); } +/// settings + elms.settings.host.oninput = ({ target: input }) => { console.log(`Modify host ${host} -> ${input.value}`); host = input.value; @@ -48,6 +51,18 @@ elms.settings.buttons.oninput = ({ target: checkbox }) => { else elms.main.buttonsZone.classList.add("erase"); }; +document.addEventListener("DOMContentLoaded", ({}) => { + for (const input of Object.values(elms.settings)) { + input.oninput?.({ target: input }); + } +}); + +/// gamepad + +let angle, force; + +// joystick + const joystickManager = nipplejs.create({ zone: elms.main.joystickZone, color: "#55CCFF", @@ -55,8 +70,6 @@ const joystickManager = nipplejs.create({ mode: "dynamic", }); -let angle, force; - joystickManager .on("start,move", (event, data) => { angle = data.angle?.radian ?? Math.PI / 2; @@ -71,6 +84,8 @@ joystickManager postJoystick(angle, force); }); +// buttons + for (const button of elms.main.buttonsZone.childNodes) { button.onclick = async ({ target: button }) => { const id = button.innerText.toLowerCase(); @@ -80,8 +95,13 @@ for (const button of elms.main.buttonsZone.childNodes) { }; } -document.addEventListener("DOMContentLoaded", ({}) => { - for (const input of Object.values(elms.settings)) { - input.oninput?.({ target: input }); - } -}); +// keyboard + +elms.body.onkeydown = ({ target, key }) => { + if (target.nodeName === "input") return; + console.log("Pressing", key); +}; + +elms.body.onkeyup = ({ key }) => { + console.log("Finished pressing", key); +};