summaryrefslogtreecommitdiff
path: root/web/share
diff options
context:
space:
mode:
authorMaxim Devaev <[email protected]>2024-12-30 18:55:59 +0200
committerMaxim Devaev <[email protected]>2024-12-30 18:55:59 +0200
commitfed3bf1efdea7528919eb9f318c5ada2dcf35410 (patch)
treef1bd27d882b85cf845b92b489b1c494c4d1dd715 /web/share
parentd52bb34bb9f5bc669f6b915ba585461356128e39 (diff)
pikvm/pikvm#1334: Bad link mode for keyboard events
Diffstat (limited to 'web/share')
-rw-r--r--web/share/js/kvm/keyboard.js8
-rw-r--r--web/share/js/kvm/recorder.js6
-rw-r--r--web/share/js/kvm/session.js3
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") {