From e014cbcedff6d7e96a1d5d6417ed5b9362d927c5 Mon Sep 17 00:00:00 2001 From: Maxim Devaev Date: Wed, 11 Dec 2024 21:09:49 +0200 Subject: pikvm/pikvm#858, pikvm/pikvm#1249: Added slow typing mode for /api/hid/print --- web/kvm/index.html | 15 ++++++++++++--- web/kvm/navbar-text.pug | 4 +++- web/share/js/kvm/paste.js | 6 ++++-- web/share/js/kvm/recorder.js | 14 ++++++++++---- 4 files changed, 29 insertions(+), 10 deletions(-) (limited to 'web') diff --git a/web/kvm/index.html b/web/kvm/index.html index 5e18ac31..08093288 100644 --- a/web/kvm/index.html +++ b/web/kvm/index.html @@ -728,11 +728,11 @@ - + @@ -745,6 +745,15 @@ + + + +
Ask paste confirmation:Slow typing:
- - + +
Ask paste confirmation: +
+ + +
+


diff --git a/web/kvm/navbar-text.pug b/web/kvm/navbar-text.pug index 4b344964..e4a37919 100644 --- a/web/kvm/navbar-text.pug +++ b/web/kvm/navbar-text.pug @@ -18,9 +18,11 @@ li(id="text-dropdown" class="right") select(id="hid-pak-keymap-selector") table(class="kv") tr - +menu_switch_notable("hid-pak-ask-switch", "Ask paste confirmation", true, true) + +menu_switch_notable("hid-pak-slow-switch", "Slow typing", true, false) tr +menu_switch_notable("hid-pak-secure-switch", "Hide input text", true, false) + tr + +menu_switch_notable("hid-pak-ask-switch", "Ask paste confirmation", true, true) div(id="stream-ocr" class="feature-disabled") hr br diff --git a/web/share/js/kvm/paste.js b/web/share/js/kvm/paste.js index 3fe1d62c..f42fa22c 100644 --- a/web/share/js/kvm/paste.js +++ b/web/share/js/kvm/paste.js @@ -34,6 +34,7 @@ export function Paste(__recorder) { var __init__ = function() { tools.storage.bindSimpleSwitch($("hid-pak-ask-switch"), "hid.pak.ask", true); + tools.storage.bindSimpleSwitch($("hid-pak-slow-switch"), "hid.pak.slow", false); tools.storage.bindSimpleSwitch($("hid-pak-secure-switch"), "hid.pak.secure", false, function(value) { $("hid-pak-text").style.setProperty("-webkit-text-security", (value ? "disc" : "none")); }); @@ -67,10 +68,11 @@ export function Paste(__recorder) { tools.el.setEnabled($("hid-pak-keymap-selector"), false); let keymap = $("hid-pak-keymap-selector").value; + let slow = $("hid-pak-slow-switch").checked; tools.debug(`HID: paste-as-keys ${keymap}: ${text}`); - tools.httpPost("/api/hid/print", {"limit": 0, "keymap": keymap}, function(http) { + tools.httpPost("/api/hid/print", {"limit": 0, "keymap": keymap, "slow": slow}, function(http) { tools.el.setEnabled($("hid-pak-text"), true); tools.el.setEnabled($("hid-pak-button"), true); tools.el.setEnabled($("hid-pak-keymap-selector"), true); @@ -80,7 +82,7 @@ export function Paste(__recorder) { } else if (http.status !== 200) { wm.error("HID paste error", http.responseText); } else if (http.status === 200) { - __recorder.recordPrintEvent(text, keymap); + __recorder.recordPrintEvent(text, keymap, slow); } }, text, "text/plain"); }; diff --git a/web/share/js/kvm/recorder.js b/web/share/js/kvm/recorder.js index 822aa972..5d9d1553 100644 --- a/web/share/js/kvm/recorder.js +++ b/web/share/js/kvm/recorder.js @@ -67,8 +67,8 @@ export function Recorder() { __recordEvent(event); }; - self.recordPrintEvent = function(text, keymap) { - __recordEvent({"event_type": "print", "event": {"text": text, "keymap": keymap}}); + self.recordPrintEvent = function(text, keymap, slow) { + __recordEvent({"event_type": "print", "event": {"text": text, "keymap": keymap, "slow": slow}}); }; self.recordAtxButtonEvent = function(button) { @@ -159,9 +159,12 @@ export function Recorder() { } else if (event.event_type === "print") { __checkType(event.event.text, "string", "Non-string print text"); - if (event.event.keymap) { + if (event.event.keymap !== undefined) { __checkType(event.event.keymap, "string", "Non-string keymap"); } + if (event.event.slow !== undefined) { + __checkType(event.event.slow, "boolean", "Non-bool slow"); + } } else if (event.event_type === "key") { __checkType(event.event.key, "string", "Non-string key code"); @@ -284,9 +287,12 @@ export function Recorder() { } else if (event.event_type === "print") { let params = {"limit": 0}; - if (event.event.keymap) { + if (event.event.keymap !== undefined) { params["keymap"] = event.event.keymap; } + if (event.event.slow !== undefined) { + params["slow"] = event.event.slow; + } tools.httpPost("/api/hid/print", params, function(http) { if (http.status === 413) { wm.error("Too many text for paste!"); -- cgit v1.2.3