mirror of
https://github.com/mofeng-git/One-KVM.git
synced 2026-01-29 09:01:54 +08:00
pikvm/pikvm#1334: Bad link mode for keyboard events
This commit is contained in:
@@ -285,7 +285,7 @@
|
||||
</tr>
|
||||
</table>
|
||||
<details>
|
||||
<summary>Keyboard & Mouse (HID) settings</summary>
|
||||
<summary>Keyboard & mouse (HID) settings</summary>
|
||||
<div class="spoiler">
|
||||
<table class="kv">
|
||||
<tr>
|
||||
@@ -401,6 +401,15 @@
|
||||
</div>
|
||||
</details>
|
||||
<table class="kv">
|
||||
<tr>
|
||||
<td>Bad link mode (release keys immediately):</td>
|
||||
<td align="right">
|
||||
<div class="switch-box">
|
||||
<input type="checkbox" id="hid-keyboard-bad-link-switch">
|
||||
<label for="hid-keyboard-bad-link-switch"><span class="switch-inner"></span><span class="switch"></span></label>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="feature-disabled" id="hid-connect">
|
||||
<td>Connect HID to Server:</td>
|
||||
<td align="right">
|
||||
@@ -420,7 +429,7 @@
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Mute HID input events:</td>
|
||||
<td>Mute all input HID events:</td>
|
||||
<td align="right">
|
||||
<div class="switch-box">
|
||||
<input type="checkbox" id="hid-mute-switch">
|
||||
|
||||
@@ -85,7 +85,7 @@ li(id="system-dropdown" class="right")
|
||||
td Mouse #[a(target="_blank" href="https://docs.pikvm.org/mouse") mode]:
|
||||
td #[div(id="hid-outputs-mouse-box" class="radio-box")]
|
||||
details
|
||||
summary Keyboard & Mouse (HID) settings
|
||||
summary Keyboard & mouse (HID) settings
|
||||
div(class="spoiler")
|
||||
table(class="kv")
|
||||
tr
|
||||
@@ -127,12 +127,14 @@ li(id="system-dropdown" class="right")
|
||||
tr
|
||||
+menu_switch_notable("page-full-tab-stream-switch", "Expand for the entire tab by default", true, false)
|
||||
table(class="kv")
|
||||
tr
|
||||
+menu_switch_notable("hid-keyboard-bad-link-switch", "Bad link mode (release keys immediately)", true, false)
|
||||
tr(id="hid-connect" class="feature-disabled")
|
||||
+menu_switch_notable("hid-connect-switch", "Connect HID to Server", true, true)
|
||||
tr(id="hid-jiggler" class="feature-disabled")
|
||||
+menu_switch_notable("hid-jiggler-switch", "<a href=\"https://docs.pikvm.org/mouse_jiggler\" target=\"_blank\">Mouse jiggler</a>", false, false)
|
||||
tr
|
||||
+menu_switch_notable("hid-mute-switch", "Mute HID input events", true, false)
|
||||
+menu_switch_notable("hid-mute-switch", "Mute all input HID events", true, false)
|
||||
tr(id="v3-usb-breaker" class="feature-disabled")
|
||||
+menu_switch_notable_gpio("__v3_usb_breaker__", "Connect main USB to Server",
|
||||
"Turning off this switch will disconnect the main USB from the server. Are you sure you want to continue?")
|
||||
|
||||
@@ -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);
|
||||
};
|
||||
|
||||
|
||||
@@ -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") {
|
||||
|
||||
@@ -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") {
|
||||
|
||||
Reference in New Issue
Block a user