diff --git a/index.html b/index.html index abac3cbc..582263fb 100644 --- a/index.html +++ b/index.html @@ -114,19 +114,30 @@ keyMap = { 86: "select", } -document.body.onkeydown = function(e){ +INPUT_FPS = 100; +INPUT_STATE_PACKET = 10; + +stateUnchange = true; +unchangePacket = INPUT_STATE_PACKET; + +function setState(e, bo) { if (e.keyCode in keyMap) { - keyState[keyMap[e.keyCode]] = true; + keyState[keyMap[e.keyCode]] = bo; + stateUnchange = false; + unchangePacket = INPUT_STATE_PACKET; } +} + +document.body.onkeydown = function(e){ + setState(e, true); }; document.body.onkeyup = function(e){ - if (e.keyCode in keyMap) { - keyState[keyMap[e.keyCode]] = false; - } + setState(e, false); }; + window.startSession = () => { let sd = remoteSessionDescription if (sd === '') { @@ -139,8 +150,6 @@ window.startSession = () => { // success () => { - fps = 60; // input frame per second - setInterval(() => { // prepare key /* @@ -156,17 +165,22 @@ window.startSession = () => { ) */ - st = ""; - ["a", "b", "select", "start", "up", "down", "left", "right"].forEach(elem => { - st += keyState[elem]?1:0; - }); - ss = parseInt(st, 2); - console.log(`Key state string: ${st} ==> ${ss}`); + if (stateUnchange || unchangePacket > 0) { + st = ""; + ["a", "b", "select", "start", "up", "down", "left", "right"].forEach(elem => { + st += keyState[elem]?1:0; + }); + ss = parseInt(st, 2); + console.log(`Key state string: ${st} ==> ${ss}`); - // send - inputChannel.send(ss); + // send + inputChannel.send(ss); - }, 1000 / fps) + stateUnchange = false; + unchangePacket--; + } + + }, 1000 / INPUT_FPS) },