pikvm/pikvm#880: Fixed mouse position at edges

This commit is contained in:
Maxim Devaev
2025-05-12 19:26:48 +03:00
parent 5273199e0b
commit df8898684f
5 changed files with 13 additions and 17 deletions

View File

@@ -380,8 +380,8 @@ export function Mouse(__getGeometry, __recordWsEvent) {
if (pos !== null && (pos.x !== __sent_pos.x || pos.y !== __sent_pos.y)) {
let geo = __getGeometry();
let to = {
"x": tools.remap(pos.x, geo.x, geo.width, -32768, 32767),
"y": tools.remap(pos.y, geo.y, geo.height, -32768, 32767),
"x": tools.remap(pos.x - geo.x, 0, geo.width - 1, -32768, 32767),
"y": tools.remap(pos.y - geo.y, 0, geo.height - 1, -32768, 32767),
};
tools.debug("Mouse: moved:", to);
__sendEvent("mouse_move", {"to": to});

View File

@@ -137,10 +137,10 @@ export function Ocr(__getGeometry) {
let rel_bottom = Math.max(__start_pos.y, __end_pos.y) - rect.top + offset;
let geo = __getGeometry();
__sel = {
"left": tools.remap(rel_left, geo.x, geo.width, 0, geo.real_width),
"right": tools.remap(rel_right, geo.x, geo.width, 0, geo.real_width),
"top": tools.remap(rel_top, geo.y, geo.height, 0, geo.real_height),
"bottom": tools.remap(rel_bottom, geo.y, geo.height, 0, geo.real_height),
"left": tools.remap(rel_left - geo.x, 0, geo.width, 0, geo.real_width),
"right": tools.remap(rel_right - geo.x, 0, geo.width, 0, geo.real_width),
"top": tools.remap(rel_top - geo.y, 0, geo.height, 0, geo.real_height),
"bottom": tools.remap(rel_bottom - geo.y, 0, geo.height, 0, geo.real_height),
};
} else {
__sel = null;

View File

@@ -136,14 +136,9 @@ export var tools = new function() {
return `${hours}:${mins}:${secs}.${millis}`;
};
self.remap = function(x, a1, b1, a2, b2) {
let remapped = Math.round((x - a1) / b1 * (b2 - a2) + a2);
if (remapped < a2) {
return a2;
} else if (remapped > b2) {
return b2;
}
return remapped;
self.remap = function(value, in_min, in_max, out_min, out_max) {
let result = Math.round((value - in_min) * (out_max - out_min) / ((in_max - in_min) || 1) + out_min);
return Math.min(Math.max(result, out_min), out_max);
};
self.getRandomInt = function(min, max) {