diff options
author | Maxim Devaev <[email protected]> | 2024-12-30 18:55:59 +0200 |
---|---|---|
committer | Maxim Devaev <[email protected]> | 2024-12-30 18:55:59 +0200 |
commit | fed3bf1efdea7528919eb9f318c5ada2dcf35410 (patch) | |
tree | f1bd27d882b85cf845b92b489b1c494c4d1dd715 /web/share | |
parent | d52bb34bb9f5bc669f6b915ba585461356128e39 (diff) |
pikvm/pikvm#1334: Bad link mode for keyboard events
Diffstat (limited to 'web/share')
-rw-r--r-- | web/share/js/kvm/keyboard.js | 8 | ||||
-rw-r--r-- | web/share/js/kvm/recorder.js | 6 | ||||
-rw-r--r-- | web/share/js/kvm/session.js | 3 |
3 files changed, 15 insertions, 2 deletions
diff --git a/web/share/js/kvm/keyboard.js b/web/share/js/kvm/keyboard.js index 2377d07a..f30dbfe9 100644 --- a/web/share/js/kvm/keyboard.js +++ b/web/share/js/kvm/keyboard.js @@ -52,6 +52,7 @@ export function Keyboard(__recordWsEvent) { window.addEventListener("focusin", __updateOnlineLeds); window.addEventListener("focusout", __updateOnlineLeds); + tools.storage.bindSimpleSwitch($("hid-keyboard-bad-link-switch"), "hid.keyboard.bad_link", false); tools.storage.bindSimpleSwitch($("hid-keyboard-swap-cc-switch"), "hid.keyboard.swap_cc", false); }; @@ -140,11 +141,16 @@ export function Keyboard(__recordWsEvent) { } let event = { "event_type": "key", - "event": {"key": code, "state": state}, + "event": { + "key": code, + "state": state, + "finish": $("hid-keyboard-bad-link-switch").checked, + }, }; if (__ws && !$("hid-mute-switch").checked) { __ws.sendHidEvent(event); } + delete event.event.finish; __recordWsEvent(event); }; diff --git a/web/share/js/kvm/recorder.js b/web/share/js/kvm/recorder.js index 5d9d1553..cf792bc2 100644 --- a/web/share/js/kvm/recorder.js +++ b/web/share/js/kvm/recorder.js @@ -336,7 +336,11 @@ export function Recorder() { }); return; - } else if (["key", "mouse_button", "mouse_move", "mouse_wheel", "mouse_relative"].includes(event.event_type)) { + } else if (event.event_type === "key") { + event.event.finish = $("hid-keyboard-bad-link-switch").checked; + __ws.sendHidEvent(event); + + } else if (["mouse_button", "mouse_move", "mouse_wheel", "mouse_relative"].includes(event.event_type)) { __ws.sendHidEvent(event); } else if (event.event_type === "mouse_move_random") { diff --git a/web/share/js/kvm/session.js b/web/share/js/kvm/session.js index c9839aca..38508f18 100644 --- a/web/share/js/kvm/session.js +++ b/web/share/js/kvm/session.js @@ -316,6 +316,9 @@ export function Session() { if (event_type == "key") { let data = __ascii_encoder.encode("\x01\x00" + event.key); data[1] = (event.state ? 1 : 0); + if (event.finish === true) { // Optional + data[1] |= 0x02; + } ws.send(data); } else if (event_type == "mouse_button") { |