pikvm/pikvm#281: adjustable relative mouse sensitivity

This commit is contained in:
Maxim Devaev
2021-08-17 15:01:04 +03:00
parent b7cf7b4523
commit 586c7d2077
6 changed files with 32 additions and 3 deletions

View File

@@ -157,6 +157,7 @@ export function Hid(__getResolution) {
tools.feature.setEnabled($("hid-outputs-keyboard"), keyboard_outputs.length);
tools.feature.setEnabled($("hid-outputs-mouse"), mouse_outputs.length);
tools.feature.setEnabled($("hid-mouse-squash"), has_relative);
tools.feature.setEnabled($("hid-mouse-sens"), has_relative);
tools.feature.setEnabled($("hid-connect"), (state.connected !== null));
$("hid-connect-switch").checked = !!state.connected;
}
@@ -164,6 +165,7 @@ export function Hid(__getResolution) {
tools.radio.setEnabled("hid-outputs-keyboard-radio", (state && state.online && !state.busy));
tools.radio.setEnabled("hid-outputs-mouse-radio", (state && state.online && !state.busy));
tools.el.setEnabled($("hid-mouse-squash-switch"), (has_relative_squash && !state.busy));
tools.el.setEnabled($("hid-mouse-sens-slider"), (has_relative_squash && !state.busy));
tools.el.setEnabled($("hid-connect-switch"), (state && state.online && !state.busy));
if (state) {

View File

@@ -42,6 +42,7 @@ export function Mouse(__getResolution, __recordWsEvent) {
var __sent_pos = {x: 0, y: 0};
var __wheel_delta = {x: 0, y: 0};
var __relative_deltas = [];
var __relative_sens = 1.0;
var __stream_hovered = false;
@@ -61,6 +62,12 @@ export function Mouse(__getResolution, __recordWsEvent) {
$("stream-box").onwheel = __streamWheelHandler;
$("stream-box").ontouchstart = (event) => __streamTouchMoveHandler(event);
let sens_slider = $("hid-mouse-sens-slider");
tools.slider.setParams(sens_slider, 0.1, 1.9, 0.1, 1);
sens_slider.oninput = sens_slider.onchange = __updateRelativeSens;
sens_slider.value = tools.storage.get("hid.mouse.sens", 1.0);
__updateRelativeSens();
tools.storage.bindSimpleSwitch($("hid-mouse-squash-switch"), "hid.mouse.squash", true);
setInterval(__sendMove, 100);
@@ -97,6 +104,12 @@ export function Mouse(__getResolution, __recordWsEvent) {
__keypad.releaseAll();
};
var __updateRelativeSens = function() {
__relative_sens = parseFloat($("hid-mouse-sens-slider").value);
$("hid-mouse-sens-value").innerHTML = __relative_sens.toFixed(1);
tools.storage.set("hid.mouse.sens", __relative_sens);
};
var __streamHoveredHandler = function(hovered) {
if (__absolute) {
__stream_hovered = hovered;
@@ -188,8 +201,8 @@ export function Mouse(__getResolution, __recordWsEvent) {
};
} else if (__isRelativeCaptured()) {
let delta = {
x: Math.min(Math.max(-127, event.movementX), 127),
y: Math.min(Math.max(-127, event.movementY), 127),
x: Math.min(Math.max(-127, Math.floor(event.movementX * __relative_sens)), 127),
y: Math.min(Math.max(-127, Math.floor(event.movementY * __relative_sens)), 127),
};
if (__isRelativeSquashed()) {
__relative_deltas.push(delta);

View File

@@ -274,7 +274,7 @@ export var tools = new function() {
return {
"get": function(key, default_value) {
let value = window.localStorage.getItem(key);
return (value !== null ? value : default_value);
return (value !== null ? value : `${default_value}`);
},
"set": (key, value) => window.localStorage.setItem(key, value),