diff options
author | Maxim Devaev <[email protected]> | 2023-10-23 08:10:19 +0300 |
---|---|---|
committer | Maxim Devaev <[email protected]> | 2023-10-23 08:10:19 +0300 |
commit | 4038754c375e38d5379a701ea5d65411bfb19034 (patch) | |
tree | 16e501286e95aa88228624747bd805c652c97bc8 /web | |
parent | 73f96fa0c7fb9cda167521349c646a7b9a91253b (diff) |
pikvm/pikvm#57: Mouse jiggler
Diffstat (limited to 'web')
-rw-r--r-- | web/kvm/index.html | 9 | ||||
-rw-r--r-- | web/kvm/navbar-system.pug | 2 | ||||
-rw-r--r-- | web/share/js/kvm/hid.js | 17 |
3 files changed, 28 insertions, 0 deletions
diff --git a/web/kvm/index.html b/web/kvm/index.html index 15e1ea4e..74485ade 100644 --- a/web/kvm/index.html +++ b/web/kvm/index.html @@ -339,6 +339,15 @@ </td> </tr> <tr> + <td>Mouse jiggler:</td> + <td align="right"> + <div class="switch-box"> + <input disabled type="checkbox" id="hid-jiggler-switch"> + <label for="hid-jiggler-switch"><span class="switch-inner"></span><span class="switch"></span></label> + </div> + </td> + </tr> + <tr> <td>Mute HID input events:</td> <td align="right"> <div class="switch-box"> diff --git a/web/kvm/navbar-system.pug b/web/kvm/navbar-system.pug index 77723f9a..f8d53793 100644 --- a/web/kvm/navbar-system.pug +++ b/web/kvm/navbar-system.pug @@ -100,6 +100,8 @@ li(id="system-dropdown" class="right") tr(id="hid-connect" class="feature-disabled") +menu_switch_notable("hid-connect-switch", "Connect HID to Server", true, true) tr + +menu_switch_notable("hid-jiggler-switch", "Mouse jiggler", false, false) + tr +menu_switch_notable("hid-mute-switch", "Mute HID input events", true, false) tr(id="v3-usb-breaker" class="feature-disabled") td Connect main USB to Server: diff --git a/web/share/js/kvm/hid.js b/web/share/js/kvm/hid.js index 3f399b67..6d9d8597 100644 --- a/web/share/js/kvm/hid.js +++ b/web/share/js/kvm/hid.js @@ -111,6 +111,8 @@ export function Hid(__getGeometry, __recorder) { } tools.storage.bindSimpleSwitch($("hid-sysrq-ask-switch"), "hid.sysrq.ask", true); + + tools.el.setOnClick($("hid-jiggler-switch"), __clickJigglerSwitch); }; /************************************************************************/ @@ -119,6 +121,7 @@ export function Hid(__getGeometry, __recorder) { tools.el.setEnabled($("hid-pak-text"), ws); tools.el.setEnabled($("hid-pak-button"), ws); tools.el.setEnabled($("hid-reset-button"), ws); + tools.el.setEnabled($("hid-jiggler-switch"), ws); if (!ws) { self.setState(null); } @@ -129,6 +132,9 @@ export function Hid(__getGeometry, __recorder) { self.setState = function(state) { let has_relative_squash = false; + if (state) { + $("hid-jiggler-switch").checked = !!state.jiggler.enabled; + } if (state && state.online) { let keyboard_outputs = state.keyboard.outputs.available; let mouse_outputs = state.mouse.outputs.available; @@ -290,6 +296,17 @@ export function Hid(__getGeometry, __recorder) { }); }; + var __clickJigglerSwitch = function() { + let enabled = $("hid-jiggler-switch").checked; + let http = tools.makeRequest("POST", `/api/hid/set_params?jiggler=${enabled}`, function() { + if (http.readyState === 4) { + if (http.status !== 200) { + wm.error(`Can't ${enabled ? "enabled" : "disable"} mouse juggler:<br>`, http.responseText); + } + } + }); + }; + var __clickConnectSwitch = function() { let connected = $("hid-connect-switch").checked; let http = tools.makeRequest("POST", `/api/hid/set_connected?connected=${connected}`, function() { |