separate keyboard and mouse output handling

This commit is contained in:
Maxim Devaev 2021-07-23 22:38:01 +03:00
parent 189ff59379
commit 11bf43de92
3 changed files with 22 additions and 19 deletions

View File

@ -175,16 +175,16 @@
<div class="feature-disabled" id="hid-outputs"> <div class="feature-disabled" id="hid-outputs">
<hr> <hr>
<table class="kv"> <table class="kv">
<tr> <tr class="feature-disabled" id="hid-outputs-keyboard">
<td>Keyboard mode:</td> <td>Keyboard mode:</td>
<td> <td>
<div class="radio-box" id="hid-outputs-keyboard"></div> <div class="radio-box" id="hid-outputs-keyboard-box"></div>
</td> </td>
</tr> </tr>
<tr> <tr class="feature-disabled" id="hid-outputs-mouse">
<td>Mouse <a target="_blank" href="https://github.com/pikvm/pikvm/blob/master/pages/mouse.md">mode</a>:</td> <td>Mouse <a target="_blank" href="https://github.com/pikvm/pikvm/blob/master/pages/mouse.md">mode</a>:</td>
<td> <td>
<div class="radio-box" id="hid-outputs-mouse"></div> <div class="radio-box" id="hid-outputs-mouse-box"></div>
</td> </td>
</tr> </tr>
</table> </table>

View File

@ -48,12 +48,12 @@ li(class="right")
div(id="hid-outputs" class="feature-disabled") div(id="hid-outputs" class="feature-disabled")
hr hr
table(class="kv") table(class="kv")
tr tr(id="hid-outputs-keyboard", class="feature-disabled")
td Keyboard mode: td Keyboard mode:
td #[div(id="hid-outputs-keyboard" class="radio-box")] td #[div(id="hid-outputs-keyboard-box" class="radio-box")]
tr tr(id="hid-outputs-mouse", class="feature-disabled")
td Mouse #[a(target="_blank" href="https://github.com/pikvm/pikvm/blob/master/pages/mouse.md") mode]: td Mouse #[a(target="_blank" href="https://github.com/pikvm/pikvm/blob/master/pages/mouse.md") mode]:
td #[div(id="hid-outputs-mouse" class="radio-box")] td #[div(id="hid-outputs-mouse-box" class="radio-box")]
table(class="kv") table(class="kv")
tr(id="hid-mouse-squash" class="feature-disabled") tr(id="hid-mouse-squash" class="feature-disabled")
+menu_switch_notable("hid-mouse-squash-switch", "Squash relative mouse moves", true, true) +menu_switch_notable("hid-mouse-squash-switch", "Squash relative mouse moves", true, true)

View File

@ -112,10 +112,8 @@ export function Hid(__getResolution) {
if (state && state.online) { if (state && state.online) {
let keyboard_outputs = state.keyboard.outputs.available; let keyboard_outputs = state.keyboard.outputs.available;
let mouse_outputs = state.mouse.outputs.available; let mouse_outputs = state.mouse.outputs.available;
let has_outputs = (keyboard_outputs.length || mouse_outputs.length); if (keyboard_outputs.length) {
let has_relative = false; if ($("hid-outputs-keyboard-box").outputs !== keyboard_outputs) {
if (has_outputs) {
if ($("hid-outputs-keyboard").outputs !== keyboard_outputs) {
let html = ""; let html = "";
for (let args of [ for (let args of [
["USB", "usb"], ["USB", "usb"],
@ -126,11 +124,15 @@ export function Hid(__getResolution) {
html += tools.radioMakeItem("hid-outputs-keyboard-radio", args[0], args[1]); html += tools.radioMakeItem("hid-outputs-keyboard-radio", args[0], args[1]);
} }
} }
$("hid-outputs-keyboard").innerHTML = html; $("hid-outputs-keyboard-box").innerHTML = html;
$("hid-outputs-keyboard").outputs = keyboard_outputs; $("hid-outputs-keyboard-box").outputs = keyboard_outputs;
tools.radioSetOnClick("hid-outputs-keyboard-radio", () => __clickOutputsRadio("keyboard")); tools.radioSetOnClick("hid-outputs-keyboard-radio", () => __clickOutputsRadio("keyboard"));
} }
if ($("hid-outputs-mouse").outputs !== mouse_outputs) { tools.radioSetValue("hid-outputs-keyboard-radio", state.keyboard.outputs.active);
}
let has_relative = false;
if (mouse_outputs.length) {
if ($("hid-outputs-mouse-box").outputs !== mouse_outputs) {
let html = ""; let html = "";
for (let args of [ for (let args of [
["USB", "usb", false], ["USB", "usb", false],
@ -143,18 +145,19 @@ export function Hid(__getResolution) {
has_relative = (has_relative || args[2]); has_relative = (has_relative || args[2]);
} }
} }
$("hid-outputs-mouse").innerHTML = html; $("hid-outputs-mouse-box").innerHTML = html;
$("hid-outputs-mouse").outputs = mouse_outputs; $("hid-outputs-mouse-box").outputs = mouse_outputs;
tools.radioSetOnClick("hid-outputs-mouse-radio", () => __clickOutputsRadio("mouse")); tools.radioSetOnClick("hid-outputs-mouse-radio", () => __clickOutputsRadio("mouse"));
} }
tools.radioSetValue("hid-outputs-keyboard-radio", state.keyboard.outputs.active);
tools.radioSetValue("hid-outputs-mouse-radio", state.mouse.outputs.active); tools.radioSetValue("hid-outputs-mouse-radio", state.mouse.outputs.active);
has_relative_squash = ["usb_rel", "ps2"].includes(state.mouse.outputs.active); has_relative_squash = ["usb_rel", "ps2"].includes(state.mouse.outputs.active);
} else { } else {
has_relative = !state.mouse.absolute; has_relative = !state.mouse.absolute;
has_relative_squash = has_relative; has_relative_squash = has_relative;
} }
tools.featureSetEnabled($("hid-outputs"), has_outputs); tools.featureSetEnabled($("hid-outputs"), (keyboard_outputs.length || mouse_outputs.length));
tools.featureSetEnabled($("hid-outputs-keyboard"), keyboard_outputs.length);
tools.featureSetEnabled($("hid-outputs-mouse"), mouse_outputs.length);
tools.featureSetEnabled($("hid-mouse-squash"), has_relative); tools.featureSetEnabled($("hid-mouse-squash"), has_relative);
tools.featureSetEnabled($("hid-connect"), (state.connected !== null)); tools.featureSetEnabled($("hid-connect"), (state.connected !== null));
$("hid-connect-switch").checked = !!state.connected; $("hid-connect-switch").checked = !!state.connected;