web: refactoring

This commit is contained in:
Maxim Devaev 2025-05-14 18:59:26 +03:00
parent 191eb4b430
commit 8b97eed743
12 changed files with 260 additions and 260 deletions

View File

@ -94,17 +94,17 @@ export function Keypad(__keys_parent, __sendKey, __apply_fixes) {
} }
}; };
self.emitByKeyEvent = function(event, state) { self.emitByKeyEvent = function(ev, state) {
if (event.repeat) { if (ev.repeat) {
return; return;
} }
let code = event.code; let code = ev.code;
if (__apply_fixes) { if (__apply_fixes) {
// https://github.com/pikvm/pikvm/issues/819 // https://github.com/pikvm/pikvm/issues/819
if (code === "IntlBackslash" && ["`", "~"].includes(event.key)) { if (code === "IntlBackslash" && ["`", "~"].includes(ev.key)) {
code = "Backquote"; code = "Backquote";
} else if (code === "Backquote" && ["§", "±"].includes(event.key)) { } else if (code === "Backquote" && ["§", "±"].includes(ev.key)) {
code = "IntlBackslash"; code = "IntlBackslash";
} }
} }

View File

@ -39,13 +39,13 @@ export function Keyboard(__recordWsEvent) {
$("hid-keyboard-led").title = "Keyboard free"; $("hid-keyboard-led").title = "Keyboard free";
$("keyboard-window").onkeydown = (event) => __keyboardHandler(event, true); $("keyboard-window").onkeydown = (ev) => __keyboardHandler(ev, true);
$("keyboard-window").onkeyup = (event) => __keyboardHandler(event, false); $("keyboard-window").onkeyup = (ev) => __keyboardHandler(ev, false);
$("keyboard-window").onfocus = __updateOnlineLeds; $("keyboard-window").onfocus = __updateOnlineLeds;
$("keyboard-window").onblur = __updateOnlineLeds; $("keyboard-window").onblur = __updateOnlineLeds;
$("stream-window").onkeydown = (event) => __keyboardHandler(event, true); $("stream-window").onkeydown = (ev) => __keyboardHandler(ev, true);
$("stream-window").onkeyup = (event) => __keyboardHandler(event, false); $("stream-window").onkeyup = (ev) => __keyboardHandler(ev, false);
$("stream-window").onfocus = __updateOnlineLeds; $("stream-window").onfocus = __updateOnlineLeds;
$("stream-window").onblur = __updateOnlineLeds; $("stream-window").onblur = __updateOnlineLeds;
@ -125,9 +125,9 @@ export function Keyboard(__recordWsEvent) {
$("hid-keyboard-led").title = title; $("hid-keyboard-led").title = title;
}; };
var __keyboardHandler = function(event, state) { var __keyboardHandler = function(ev, state) {
event.preventDefault(); ev.preventDefault();
__keypad.emitByKeyEvent(event, state); __keypad.emitByKeyEvent(ev, state);
}; };
var __sendKey = function(code, state) { var __sendKey = function(code, state) {
@ -139,7 +139,7 @@ export function Keyboard(__recordWsEvent) {
code = "ControlLeft"; code = "ControlLeft";
} }
} }
let event = { let ev = {
"event_type": "key", "event_type": "key",
"event": { "event": {
"key": code, "key": code,
@ -148,10 +148,10 @@ export function Keyboard(__recordWsEvent) {
}, },
}; };
if (__ws && !$("hid-mute-switch").checked) { if (__ws && !$("hid-mute-switch").checked) {
__ws.sendHidEvent(event); __ws.sendHidEvent(ev);
} }
delete event.event.finish; delete ev.event.finish;
__recordWsEvent(event); __recordWsEvent(ev);
}; };
__init__(); __init__();

View File

@ -34,10 +34,10 @@ export function main() {
if (checkBrowser(null, "kvm/x-mobile.css")) { if (checkBrowser(null, "kvm/x-mobile.css")) {
tools.storage.bindSimpleSwitch($("page-close-ask-switch"), "page.close.ask", true, function(value) { tools.storage.bindSimpleSwitch($("page-close-ask-switch"), "page.close.ask", true, function(value) {
if (value) { if (value) {
window.onbeforeunload = function(event) { window.onbeforeunload = function(ev) {
let text = "Are you sure you want to close PiKVM session?"; let text = "Are you sure you want to close PiKVM session?";
if (event) { if (ev) {
event.returnValue = text; ev.returnValue = text;
} }
return text; return text;
}; };

View File

@ -63,9 +63,9 @@ export function Mouse(__getGeometry, __recordWsEvent) {
document.addEventListener("pointerlockerror", __relativeCapturedHandler); document.addEventListener("pointerlockerror", __relativeCapturedHandler);
$("stream-box").addEventListener("mouseenter", () => __streamHoveredHandler(true)); $("stream-box").addEventListener("mouseenter", () => __streamHoveredHandler(true));
$("stream-box").addEventListener("mouseleave", () => __streamHoveredHandler(false)); $("stream-box").addEventListener("mouseleave", () => __streamHoveredHandler(false));
$("stream-box").addEventListener("mousedown", (event) => __streamButtonHandler(event, true)); $("stream-box").addEventListener("mousedown", (ev) => __streamButtonHandler(ev, true));
$("stream-box").addEventListener("mouseup", (event) => __streamButtonHandler(event, false)); $("stream-box").addEventListener("mouseup", (ev) => __streamButtonHandler(ev, false));
$("stream-box").addEventListener("contextmenu", (event) => event.preventDefault()); $("stream-box").addEventListener("contextmenu", (ev) => ev.preventDefault());
$("stream-box").addEventListener("mousemove", __streamMoveHandler); $("stream-box").addEventListener("mousemove", __streamMoveHandler);
$("stream-box").addEventListener("wheel", __streamScrollHandler); $("stream-box").addEventListener("wheel", __streamScrollHandler);
$("stream-box").addEventListener("touchstart", __streamTouchStartHandler); $("stream-box").addEventListener("touchstart", __streamTouchStartHandler);
@ -194,11 +194,11 @@ export function Mouse(__getGeometry, __recordWsEvent) {
__updateOnlineLeds(); __updateOnlineLeds();
}; };
var __streamButtonHandler = function(event, state) { var __streamButtonHandler = function(ev, state) {
// https://www.w3schools.com/jsref/event_button.asp // https://www.w3schools.com/jsref/event_button.asp
event.preventDefault(); ev.preventDefault();
if (__absolute || __isRelativeCaptured()) { if (__absolute || __isRelativeCaptured()) {
switch (event.button) { switch (ev.button) {
case 0: __keypad.emitByCode("left", state); break; case 0: __keypad.emitByCode("left", state); break;
case 2: __keypad.emitByCode("right", state); break; case 2: __keypad.emitByCode("right", state); break;
case 1: __keypad.emitByCode("middle", state); break; case 1: __keypad.emitByCode("middle", state); break;
@ -210,25 +210,25 @@ export function Mouse(__getGeometry, __recordWsEvent) {
} }
}; };
var __streamTouchStartHandler = function(event) { var __streamTouchStartHandler = function(ev) {
event.preventDefault(); ev.preventDefault();
if (event.touches.length === 1) { if (ev.touches.length === 1) {
if (__absolute) { if (__absolute) {
__planned_pos = __getTouchPosition(event, 0); __planned_pos = __getTouchPosition(ev, 0);
__sendPlannedMove(); __sendPlannedMove();
} else { } else {
__relative_touch_pos = __getTouchPosition(event, 0); __relative_touch_pos = __getTouchPosition(ev, 0);
} }
} else if (event.touches.length >= 2) { } else if (ev.touches.length >= 2) {
__planned_pos = null; __planned_pos = null;
__relative_touch_pos = null; __relative_touch_pos = null;
} }
}; };
var __streamTouchMoveHandler = function(event) { var __streamTouchMoveHandler = function(ev) {
event.preventDefault(); ev.preventDefault();
if (event.touches.length === 1) { if (ev.touches.length === 1) {
let pos = __getTouchPosition(event, 0); let pos = __getTouchPosition(ev, 0);
if (__absolute) { if (__absolute) {
__planned_pos = pos; __planned_pos = pos;
} else if (__relative_touch_pos === null) { } else if (__relative_touch_pos === null) {
@ -240,8 +240,8 @@ export function Mouse(__getGeometry, __recordWsEvent) {
}); });
__relative_touch_pos = pos; __relative_touch_pos = pos;
} }
} else if (event.touches.length >= 2) { } else if (ev.touches.length >= 2) {
let pos = __getTouchPosition(event, 0); let pos = __getTouchPosition(ev, 0);
if (__scroll_touch_pos === null) { if (__scroll_touch_pos === null) {
__scroll_touch_pos = pos; __scroll_touch_pos = pos;
} else { } else {
@ -263,47 +263,47 @@ export function Mouse(__getGeometry, __recordWsEvent) {
} }
}; };
var __streamTouchEndHandler = function(event) { var __streamTouchEndHandler = function(ev) {
event.preventDefault(); ev.preventDefault();
__sendPlannedMove(); __sendPlannedMove();
__scroll_touch_pos = null; __scroll_touch_pos = null;
if (event.touches.length >= 2) { if (ev.touches.length >= 2) {
__planned_pos = null; __planned_pos = null;
__relative_touch_pos = null; __relative_touch_pos = null;
} }
}; };
var __getTouchPosition = function(event, index) { var __getTouchPosition = function(ev, index) {
if (event.touches[index].target && event.touches[index].target.getBoundingClientRect) { if (ev.touches[index].target && ev.touches[index].target.getBoundingClientRect) {
let rect = event.touches[index].target.getBoundingClientRect(); let rect = ev.touches[index].target.getBoundingClientRect();
return { return {
"x": Math.round(event.touches[index].clientX - rect.left), "x": Math.round(ev.touches[index].clientX - rect.left),
"y": Math.round(event.touches[index].clientY - rect.top), "y": Math.round(ev.touches[index].clientY - rect.top),
}; };
} }
return null; return null;
}; };
var __streamMoveHandler = function(event) { var __streamMoveHandler = function(ev) {
if (__absolute) { if (__absolute) {
let rect = event.target.getBoundingClientRect(); let rect = ev.target.getBoundingClientRect();
__planned_pos = { __planned_pos = {
"x": Math.max(Math.round(event.clientX - rect.left), 0), "x": Math.max(Math.round(ev.clientX - rect.left), 0),
"y": Math.max(Math.round(event.clientY - rect.top), 0), "y": Math.max(Math.round(ev.clientY - rect.top), 0),
}; };
} else if (__isRelativeCaptured()) { } else if (__isRelativeCaptured()) {
__sendOrPlanRelativeMove({ __sendOrPlanRelativeMove({
"x": event.movementX, "x": ev.movementX,
"y": event.movementY, "y": ev.movementY,
}); });
} }
}; };
var __streamScrollHandler = function(event) { var __streamScrollHandler = function(ev) {
// https://learn.javascript.ru/mousewheel // https://learn.javascript.ru/mousewheel
// https://stackoverflow.com/a/24595588 // https://stackoverflow.com/a/24595588
event.preventDefault(); ev.preventDefault();
if (!__absolute && !__isRelativeCaptured()) { if (!__absolute && !__isRelativeCaptured()) {
return; return;
@ -311,30 +311,30 @@ export function Mouse(__getGeometry, __recordWsEvent) {
let delta = {"x": 0, "y": 0}; let delta = {"x": 0, "y": 0};
if ($("hid-mouse-cumulative-scrolling-switch").checked) { if ($("hid-mouse-cumulative-scrolling-switch").checked) {
if (__scroll_delta.x && Math.sign(__scroll_delta.x) !== Math.sign(event.deltaX)) { if (__scroll_delta.x && Math.sign(__scroll_delta.x) !== Math.sign(ev.deltaX)) {
delta.x = __scroll_delta.x; delta.x = __scroll_delta.x;
__scroll_delta.x = 0; __scroll_delta.x = 0;
} else { } else {
__scroll_delta.x += event.deltaX * __scroll_fix; __scroll_delta.x += ev.deltaX * __scroll_fix;
if (Math.abs(__scroll_delta.x) >= 100) { if (Math.abs(__scroll_delta.x) >= 100) {
delta.x = __scroll_delta.x; delta.x = __scroll_delta.x;
__scroll_delta.x = 0; __scroll_delta.x = 0;
} }
} }
if (__scroll_delta.y && Math.sign(__scroll_delta.y) !== Math.sign(event.deltaY)) { if (__scroll_delta.y && Math.sign(__scroll_delta.y) !== Math.sign(ev.deltaY)) {
delta.y = __scroll_delta.y; delta.y = __scroll_delta.y;
__scroll_delta.y = 0; __scroll_delta.y = 0;
} else { } else {
__scroll_delta.y += event.deltaY * __scroll_fix; __scroll_delta.y += ev.deltaY * __scroll_fix;
if (Math.abs(__scroll_delta.y) >= 100) { if (Math.abs(__scroll_delta.y) >= 100) {
delta.y = __scroll_delta.y; delta.y = __scroll_delta.y;
__scroll_delta.y = 0; __scroll_delta.y = 0;
} }
} }
} else { } else {
delta.x = event.deltaX; delta.x = ev.deltaX;
delta.y = event.deltaY; delta.y = ev.deltaY;
} }
__sendScroll(delta); __sendScroll(delta);
}; };
@ -400,12 +400,12 @@ export function Mouse(__getGeometry, __recordWsEvent) {
__sendEvent("mouse_button", {"button": button, "state": state}); __sendEvent("mouse_button", {"button": button, "state": state});
}; };
var __sendEvent = function(event_type, event) { var __sendEvent = function(ev_type, ev) {
event = {"event_type": event_type, "event": event}; ev = {"event_type": ev_type, "event": ev};
if (__ws && !$("hid-mute-switch").checked) { if (__ws && !$("hid-mute-switch").checked) {
__ws.sendHidEvent(event); __ws.sendHidEvent(ev);
} }
__recordWsEvent(event); __recordWsEvent(ev);
}; };
__init__(); __init__();

View File

@ -53,14 +53,14 @@ export function Ocr(__getGeometry) {
$("stream-ocr-window").addEventListener("resize", __resetSelection); $("stream-ocr-window").addEventListener("resize", __resetSelection);
$("stream-ocr-window").close_hook = __resetSelection; $("stream-ocr-window").close_hook = __resetSelection;
$("stream-ocr-window").onkeyup = function(event) { $("stream-ocr-window").onkeyup = function(ev) {
event.preventDefault(); ev.preventDefault();
if (event.code === "Enter") { if (ev.code === "Enter") {
if (__sel) { if (__sel) {
__recognizeSelection(); __recognizeSelection();
wm.closeWindow($("stream-ocr-window")); wm.closeWindow($("stream-ocr-window"));
} }
} else if (event.code === "Escape") { } else if (ev.code === "Escape") {
wm.closeWindow($("stream-ocr-window")); wm.closeWindow($("stream-ocr-window"));
} }
}; };
@ -98,17 +98,17 @@ export function Ocr(__getGeometry) {
el.value = tools.storage.get("stream.ocr.lang", langs["default"]); el.value = tools.storage.get("stream.ocr.lang", langs["default"]);
}; };
var __startSelection = function(event) { var __startSelection = function(ev) {
if (__start_pos === null) { if (__start_pos === null) {
tools.hidden.setVisible($("stream-ocr-selection"), false); tools.hidden.setVisible($("stream-ocr-selection"), false);
__start_pos = __getGlobalPosition(event); __start_pos = __getGlobalPosition(ev);
__end_pos = null; __end_pos = null;
} }
}; };
var __changeSelection = function(event) { var __changeSelection = function(ev) {
if (__start_pos !== null) { if (__start_pos !== null) {
__end_pos = __getGlobalPosition(event); __end_pos = __getGlobalPosition(ev);
let width = Math.abs(__start_pos.x - __end_pos.x); let width = Math.abs(__start_pos.x - __end_pos.x);
let height = Math.abs(__start_pos.y - __end_pos.y); let height = Math.abs(__start_pos.y - __end_pos.y);
let el = $("stream-ocr-selection"); let el = $("stream-ocr-selection");
@ -120,8 +120,8 @@ export function Ocr(__getGeometry) {
} }
}; };
var __endSelection = function(event) { var __endSelection = function(ev) {
__changeSelection(event); __changeSelection(ev);
let el = $("stream-ocr-selection"); let el = $("stream-ocr-selection");
let ok = ( let ok = (
el.offsetWidth > 1 && el.offsetHeight > 1 el.offsetWidth > 1 && el.offsetHeight > 1
@ -149,13 +149,13 @@ export function Ocr(__getGeometry) {
__end_pos = null; __end_pos = null;
}; };
var __getGlobalPosition = function(event) { var __getGlobalPosition = function(ev) {
let rect = $("stream-box").getBoundingClientRect(); let rect = $("stream-box").getBoundingClientRect();
let geo = __getGeometry(); let geo = __getGeometry();
let offset = __getNavbarOffset(); let offset = __getNavbarOffset();
return { return {
"x": Math.min(Math.max(event.clientX, rect.left + geo.x), rect.right - geo.x), "x": Math.min(Math.max(ev.clientX, rect.left + geo.x), rect.right - geo.x),
"y": Math.min(Math.max(event.clientY - offset, rect.top + geo.y - offset), rect.bottom - geo.y - offset), "y": Math.min(Math.max(ev.clientY - offset, rect.top + geo.y - offset), rect.bottom - geo.y - offset),
}; };
}; };

View File

@ -33,8 +33,8 @@ export function Paste(__recorder) {
/************************************************************************/ /************************************************************************/
var __init__ = function() { var __init__ = function() {
$("hid-pak-text").addEventListener("keyup", function(event) { $("hid-pak-text").addEventListener("keyup", function(ev) {
if (event.ctrlKey && event.code == "Enter") { if (ev.ctrlKey && ev.code == "Enter") {
$("hid-pak-button").click(); $("hid-pak-button").click();
} }
}); });

View File

@ -63,8 +63,8 @@ export function Recorder() {
__refresh(); __refresh();
}; };
self.recordWsEvent = function(event) { self.recordWsEvent = function(ev) {
__recordEvent(event); __recordEvent(ev);
}; };
self.recordPrintEvent = function(text, keymap, slow) { self.recordPrintEvent = function(text, keymap, slow) {
@ -83,7 +83,7 @@ export function Recorder() {
__recordEvent({"event_type": "gpio_pulse", "event": {"channel": channel}}); __recordEvent({"event_type": "gpio_pulse", "event": {"channel": channel}});
}; };
var __recordEvent = function(event) { var __recordEvent = function(ev) {
if (__recording) { if (__recording) {
let now = new Date().getTime(); let now = new Date().getTime();
if (__last_event_ts) { if (__last_event_ts) {
@ -92,7 +92,7 @@ export function Recorder() {
__events_time += delay; __events_time += delay;
} }
__last_event_ts = now; __last_event_ts = now;
__events.push(event); __events.push(ev);
__setCounters(__events.length, __events_time); __setCounters(__events.length, __events_time);
} }
}; };
@ -149,73 +149,73 @@ export function Recorder() {
let raw_events = JSON.parse(reader.result); let raw_events = JSON.parse(reader.result);
__checkType(raw_events, "object", "Base of script is not an objects list"); __checkType(raw_events, "object", "Base of script is not an objects list");
for (let event of raw_events) { for (let ev of raw_events) {
__checkType(event, "object", "Non-dict event"); __checkType(ev, "object", "Non-dict event");
__checkType(event.event, "object", "Non-dict event"); __checkType(ev.event, "object", "Non-dict event");
if (event.event_type === "delay") { if (ev.event_type === "delay") {
__checkUnsigned(event.event.millis, "Non-unsigned delay"); __checkUnsigned(ev.event.millis, "Non-unsigned delay");
events_time += event.event.millis; events_time += ev.event.millis;
} else if (event.event_type === "print") { } else if (ev.event_type === "print") {
__checkType(event.event.text, "string", "Non-string print text"); __checkType(ev.event.text, "string", "Non-string print text");
if (event.event.keymap !== undefined) { if (ev.event.keymap !== undefined) {
__checkType(event.event.keymap, "string", "Non-string keymap"); __checkType(ev.event.keymap, "string", "Non-string keymap");
} }
if (event.event.slow !== undefined) { if (ev.event.slow !== undefined) {
__checkType(event.event.slow, "boolean", "Non-bool slow"); __checkType(ev.event.slow, "boolean", "Non-bool slow");
} }
} else if (event.event_type === "key") { } else if (ev.event_type === "key") {
__checkType(event.event.key, "string", "Non-string key code"); __checkType(ev.event.key, "string", "Non-string key code");
__checkType(event.event.state, "boolean", "Non-bool key state"); __checkType(ev.event.state, "boolean", "Non-bool key state");
} else if (event.event_type === "mouse_button") { } else if (ev.event_type === "mouse_button") {
__checkType(event.event.button, "string", "Non-string mouse button code"); __checkType(ev.event.button, "string", "Non-string mouse button code");
__checkType(event.event.state, "boolean", "Non-bool mouse button state"); __checkType(ev.event.state, "boolean", "Non-bool mouse button state");
} else if (event.event_type === "mouse_move") { } else if (ev.event_type === "mouse_move") {
__checkType(event.event.to, "object", "Non-object mouse move target"); __checkType(ev.event.to, "object", "Non-object mouse move target");
__checkInt(event.event.to.x, "Non-int mouse move X"); __checkInt(ev.event.to.x, "Non-int mouse move X");
__checkInt(event.event.to.y, "Non-int mouse move Y"); __checkInt(ev.event.to.y, "Non-int mouse move Y");
} else if (event.event_type === "mouse_relative") { } else if (ev.event_type === "mouse_relative") {
__checkMouseRelativeDelta(event.event.delta); __checkMouseRelativeDelta(ev.event.delta);
__checkType(event.event.squash, "boolean", "Non-boolean squash"); __checkType(ev.event.squash, "boolean", "Non-boolean squash");
} else if (event.event_type === "mouse_wheel") { } else if (ev.event_type === "mouse_wheel") {
__checkType(event.event.delta, "object", "Non-object mouse wheel delta"); __checkType(ev.event.delta, "object", "Non-object mouse wheel delta");
__checkInt(event.event.delta.x, "Non-int mouse delta X"); __checkInt(ev.event.delta.x, "Non-int mouse delta X");
__checkInt(event.event.delta.y, "Non-int mouse delta Y"); __checkInt(ev.event.delta.y, "Non-int mouse delta Y");
} else if (event.event_type === "atx_button") { } else if (ev.event_type === "atx_button") {
__checkType(event.event.button, "string", "Non-string ATX button"); __checkType(ev.event.button, "string", "Non-string ATX button");
} else if (event.event_type === "gpio_switch") { } else if (ev.event_type === "gpio_switch") {
__checkType(event.event.channel, "string", "Non-string GPIO channel"); __checkType(ev.event.channel, "string", "Non-string GPIO channel");
__checkType(event.event.state, "boolean", "Non-bool GPIO state"); __checkType(ev.event.state, "boolean", "Non-bool GPIO state");
} else if (event.event_type === "gpio_pulse") { } else if (ev.event_type === "gpio_pulse") {
__checkType(event.event.channel, "string", "Non-string GPIO channel"); __checkType(ev.event.channel, "string", "Non-string GPIO channel");
} else if (event.event_type === "delay_random") { } else if (ev.event_type === "delay_random") {
__checkType(event.event.range, "object", "Non-object random delay range"); __checkType(ev.event.range, "object", "Non-object random delay range");
__checkUnsigned(event.event.range.min, "Non-unsigned random delay range min"); __checkUnsigned(ev.event.range.min, "Non-unsigned random delay range min");
__checkUnsigned(event.event.range.max, "Non-unsigned random delay range max"); __checkUnsigned(ev.event.range.max, "Non-unsigned random delay range max");
__checkRangeMinMax(event.event.range, "Invalid random delay range"); __checkRangeMinMax(ev.event.range, "Invalid random delay range");
events_time += event.event.range.max; events_time += ev.event.range.max;
} else if (event.event_type === "mouse_move_random") { // Hack for pikvm/pikvm#1041 } else if (ev.event_type === "mouse_move_random") { // Hack for pikvm/pikvm#1041
__checkType(event.event.range, "object", "Non-object random mouse move range"); __checkType(ev.event.range, "object", "Non-object random mouse move range");
__checkInt(event.event.range.min, "Non-int random mouse move range min"); __checkInt(ev.event.range.min, "Non-int random mouse move range min");
__checkInt(event.event.range.max, "Non-int random mouse move range max"); __checkInt(ev.event.range.max, "Non-int random mouse move range max");
__checkRangeMinMax(event.event.range, "Invalid random mouse move range"); __checkRangeMinMax(ev.event.range, "Invalid random mouse move range");
} else { } else {
throw `Unknown event type: ${event.event_type}`; throw `Unknown event type: ${ev.event_type}`;
} }
events.push(event); events.push(ev);
} }
__events = events; __events = events;
@ -274,24 +274,24 @@ export function Recorder() {
var __runEvents = function(index, time=0) { var __runEvents = function(index, time=0) {
while (index < __events.length) { while (index < __events.length) {
__setCounters(__events.length - index + 1, __events_time - time); __setCounters(__events.length - index + 1, __events_time - time);
let event = __events[index]; let ev = __events[index];
if (["delay", "delay_random"].includes(event.event_type)) { if (["delay", "delay_random"].includes(ev.event_type)) {
let millis = ( let millis = (
event.event_type === "delay" ev.event_type === "delay"
? event.event.millis ? ev.event.millis
: tools.getRandomInt(event.event.range.min, event.event.range.max) : tools.getRandomInt(ev.event.range.min, ev.event.range.max)
); );
__play_timer = setTimeout(() => __runEvents(index + 1, time + millis), millis); __play_timer = setTimeout(() => __runEvents(index + 1, time + millis), millis);
return; return;
} else if (event.event_type === "print") { } else if (ev.event_type === "print") {
let params = {"limit": 0}; let params = {"limit": 0};
if (event.event.keymap !== undefined) { if (ev.event.keymap !== undefined) {
params["keymap"] = event.event.keymap; params["keymap"] = ev.event.keymap;
} }
if (event.event.slow !== undefined) { if (ev.event.slow !== undefined) {
params["slow"] = event.event.slow; params["slow"] = ev.event.slow;
} }
tools.httpPost("api/hid/print", params, function(http) { tools.httpPost("api/hid/print", params, function(http) {
if (http.status === 413) { if (http.status === 413) {
@ -303,11 +303,11 @@ export function Recorder() {
} else if (http.status === 200) { } else if (http.status === 200) {
__play_timer = setTimeout(() => __runEvents(index + 1, time), 0); __play_timer = setTimeout(() => __runEvents(index + 1, time), 0);
} }
}, event.event.text, "text/plain"); }, ev.event.text, "text/plain");
return; return;
} else if (event.event_type === "atx_button") { } else if (ev.event_type === "atx_button") {
tools.httpPost("api/atx/click", {"button": event.event.button}, function(http) { tools.httpPost("api/atx/click", {"button": ev.event.button}, function(http) {
if (http.status !== 200) { if (http.status !== 200) {
wm.error("ATX error", http.responseText); wm.error("ATX error", http.responseText);
__stopProcess(); __stopProcess();
@ -317,12 +317,12 @@ export function Recorder() {
}); });
return; return;
} else if (["gpio_switch", "gpio_pulse"].includes(event.event_type)) { } else if (["gpio_switch", "gpio_pulse"].includes(ev.event_type)) {
let path = "api/gpio"; let path = "api/gpio";
let params = {"channel": event.event.channel}; let params = {"channel": ev.event.channel};
if (event.event_type === "gpio_switch") { if (ev.event_type === "gpio_switch") {
path += "/switch"; path += "/switch";
params["state"] = event.event.to; params["state"] = ev.event.to;
} else { // gpio_pulse } else { // gpio_pulse
path += "/pulse"; path += "/pulse";
} }
@ -336,19 +336,19 @@ export function Recorder() {
}); });
return; return;
} else if (event.event_type === "key") { } else if (ev.event_type === "key") {
event.event.finish = $("hid-keyboard-bad-link-switch").checked; ev.event.finish = $("hid-keyboard-bad-link-switch").checked;
__ws.sendHidEvent(event); __ws.sendHidEvent(ev);
} else if (["mouse_button", "mouse_move", "mouse_wheel", "mouse_relative"].includes(event.event_type)) { } else if (["mouse_button", "mouse_move", "mouse_wheel", "mouse_relative"].includes(ev.event_type)) {
__ws.sendHidEvent(event); __ws.sendHidEvent(ev);
} else if (event.event_type === "mouse_move_random") { } else if (ev.event_type === "mouse_move_random") {
__ws.sendHidEvent({ __ws.sendHidEvent({
"event_type": "mouse_move", "event_type": "mouse_move",
"event": {"to": { "event": {"to": {
"x": tools.getRandomInt(event.event.range.min, event.event.range.max), "x": tools.getRandomInt(ev.event.range.min, ev.event.range.max),
"y": tools.getRandomInt(event.event.range.min, event.event.range.max), "y": tools.getRandomInt(ev.event.range.min, ev.event.range.max),
}}, }},
}); });
} }

View File

@ -72,15 +72,15 @@ export function Session() {
tools.httpGet("api/auth/check", null, function(http) { tools.httpGet("api/auth/check", null, function(http) {
if (http.status === 200) { if (http.status === 200) {
__ws = new WebSocket(tools.makeWsUrl("api/ws")); __ws = new WebSocket(tools.makeWsUrl("api/ws"));
__ws.sendHidEvent = (event) => __sendHidEvent(__ws, event.event_type, event.event); __ws.sendHidEvent = (ev) => __sendHidEvent(__ws, ev.event_type, ev.event);
__ws.binaryType = "arraybuffer"; __ws.binaryType = "arraybuffer";
__ws.onopen = __wsOpenHandler; __ws.onopen = __wsOpenHandler;
__ws.onmessage = async (event) => { __ws.onmessage = async (ev) => {
if (typeof event.data === "string") { if (typeof ev.data === "string") {
event = JSON.parse(event.data); ev = JSON.parse(ev.data);
__wsJsonHandler(event.event_type, event.event); __wsJsonHandler(ev.event_type, ev.event);
} else { // Binary } else { // Binary
__wsBinHandler(event.data); __wsBinHandler(ev.data);
} }
}; };
__ws.onerror = __wsErrorHandler; __ws.onerror = __wsErrorHandler;
@ -96,8 +96,8 @@ export function Session() {
}); });
}; };
var __wsOpenHandler = function(event) { var __wsOpenHandler = function(ev) {
tools.debug("Session: socket opened:", event); tools.debug("Session: socket opened:", ev);
$("link-led").className = "led-green"; $("link-led").className = "led-green";
$("link-led").title = "Connected"; $("link-led").title = "Connected";
__recorder.setSocket(__ws); __recorder.setSocket(__ws);
@ -113,36 +113,36 @@ export function Session() {
} }
}; };
var __wsJsonHandler = function(event_type, event) { var __wsJsonHandler = function(ev_type, ev) {
switch (event_type) { switch (ev_type) {
case "info": __info.setState(event); break; case "info": __info.setState(ev); break;
case "gpio": __gpio.setState(event); break; case "gpio": __gpio.setState(ev); break;
case "hid": __hid.setState(event); break; case "hid": __hid.setState(ev); break;
case "hid_keymaps": __paste.setState(event); break; case "hid_keymaps": __paste.setState(ev); break;
case "atx": __atx.setState(event); break; case "atx": __atx.setState(ev); break;
case "streamer": __streamer.setState(event); break; case "streamer": __streamer.setState(ev); break;
case "ocr": __ocr.setState(event); break; case "ocr": __ocr.setState(ev); break;
case "msd": case "msd":
if (event.online === false) { if (ev.online === false) {
__switch.setMsdConnected(false); __switch.setMsdConnected(false);
} else if (event.drive !== undefined) { } else if (ev.drive !== undefined) {
__switch.setMsdConnected(event.drive.connected); __switch.setMsdConnected(ev.drive.connected);
} }
__msd.setState(event); __msd.setState(ev);
break; break;
case "switch": case "switch":
if (event.model) { if (ev.model) {
__atx.setHasSwitch(event.model.ports.length > 0); __atx.setHasSwitch(ev.model.ports.length > 0);
} }
__switch.setState(event); __switch.setState(ev);
break; break;
} }
}; };
var __wsErrorHandler = function(event) { var __wsErrorHandler = function(ev) {
tools.error("Session: socket error:", event); tools.error("Session: socket error:", ev);
if (__ws) { if (__ws) {
__ws.onclose = null; __ws.onclose = null;
__ws.close(); __ws.close();
@ -150,8 +150,8 @@ export function Session() {
} }
}; };
var __wsCloseHandler = function(event) { var __wsCloseHandler = function(ev) {
tools.debug("Session: socket closed:", event); tools.debug("Session: socket closed:", ev);
$("link-led").className = "led-gray"; $("link-led").className = "led-gray";
if (__ping_timer) { if (__ping_timer) {
@ -190,43 +190,43 @@ export function Session() {
var __ascii_encoder = new TextEncoder("ascii"); var __ascii_encoder = new TextEncoder("ascii");
var __sendHidEvent = function(ws, event_type, event) { var __sendHidEvent = function(ws, ev_type, ev) {
if (event_type === "key") { if (ev_type === "key") {
let data = __ascii_encoder.encode("\x01\x00" + event.key); let data = __ascii_encoder.encode("\x01\x00" + ev.key);
data[1] = (event.state ? 1 : 0); data[1] = (ev.state ? 1 : 0);
if (event.finish === true) { // Optional if (ev.finish === true) { // Optional
data[1] |= 0x02; data[1] |= 0x02;
} }
ws.send(data); ws.send(data);
} else if (event_type === "mouse_button") { } else if (ev_type === "mouse_button") {
let data = __ascii_encoder.encode("\x02\x00" + event.button); let data = __ascii_encoder.encode("\x02\x00" + ev.button);
data[1] = (event.state ? 1 : 0); data[1] = (ev.state ? 1 : 0);
ws.send(data); ws.send(data);
} else if (event_type === "mouse_move") { } else if (ev_type === "mouse_move") {
let data = new Uint8Array([ let data = new Uint8Array([
3, 3,
(event.to.x >> 8) & 0xFF, event.to.x & 0xFF, (ev.to.x >> 8) & 0xFF, ev.to.x & 0xFF,
(event.to.y >> 8) & 0xFF, event.to.y & 0xFF, (ev.to.y >> 8) & 0xFF, ev.to.y & 0xFF,
]); ]);
ws.send(data); ws.send(data);
} else if (event_type === "mouse_relative" || event_type === "mouse_wheel") { } else if (ev_type === "mouse_relative" || ev_type === "mouse_wheel") {
let data; let data;
if (Array.isArray(event.delta)) { if (Array.isArray(ev.delta)) {
data = new Int8Array(2 + event.delta.length * 2); data = new Int8Array(2 + ev.delta.length * 2);
let index = 0; let index = 0;
for (let delta of event.delta) { for (let delta of ev.delta) {
data[index + 2] = delta["x"]; data[index + 2] = delta["x"];
data[index + 3] = delta["y"]; data[index + 3] = delta["y"];
index += 2; index += 2;
} }
} else { } else {
data = new Int8Array([0, 0, event.delta.x, event.delta.y]); data = new Int8Array([0, 0, ev.delta.x, ev.delta.y]);
} }
data[0] = (event_type === "mouse_relative" ? 4 : 5); data[0] = (ev_type === "mouse_relative" ? 4 : 5);
data[1] = (event.squash ? 1 : 0); data[1] = (ev.squash ? 1 : 0);
ws.send(data); ws.send(data);
} }
}; };

View File

@ -87,13 +87,13 @@ export function MediaStreamer(__setActive, __setInactive, __setInfo, __orient) {
__ws.onopen = __wsOpenHandler; __ws.onopen = __wsOpenHandler;
__ws.onerror = __wsErrorHandler; __ws.onerror = __wsErrorHandler;
__ws.onclose = __wsCloseHandler; __ws.onclose = __wsCloseHandler;
__ws.onmessage = async (event) => { __ws.onmessage = async (ev) => {
try { try {
if (typeof event.data === "string") { if (typeof ev.data === "string") {
event = JSON.parse(event.data); ev = JSON.parse(ev.data);
__wsJsonHandler(event.event_type, event.event); __wsJsonHandler(ev.event_type, ev.event);
} else { // Binary } else { // Binary
await __wsBinHandler(event.data); await __wsBinHandler(ev.data);
} }
} catch (ex) { } catch (ex) {
__wsErrorHandler(ex); __wsErrorHandler(ex);
@ -102,8 +102,8 @@ export function MediaStreamer(__setActive, __setInactive, __setInfo, __orient) {
} }
}; };
var __wsOpenHandler = function(event) { var __wsOpenHandler = function(ev) {
__logInfo("Socket opened:", event); __logInfo("Socket opened:", ev);
__missed_heartbeats = 0; __missed_heartbeats = 0;
__ping_timer = setInterval(__ping, 1000); __ping_timer = setInterval(__ping, 1000);
}; };
@ -136,14 +136,14 @@ export function MediaStreamer(__setActive, __setInactive, __setInfo, __orient) {
__setInactive(); __setInactive();
}; };
var __wsErrorHandler = function(event) { var __wsErrorHandler = function(ev) {
__logInfo("Socket error:", event); __logInfo("Socket error:", ev);
__setInfo(false, false, event); __setInfo(false, false, ev);
__wsForceClose(); __wsForceClose();
}; };
var __wsCloseHandler = function(event) { var __wsCloseHandler = function(ev) {
__logInfo("Socket closed:", event); __logInfo("Socket closed:", ev);
if (__ping_timer) { if (__ping_timer) {
clearInterval(__ping_timer); clearInterval(__ping_timer);
__ping_timer = null; __ping_timer = null;
@ -157,9 +157,9 @@ export function MediaStreamer(__setActive, __setInactive, __setInfo, __orient) {
} }
}; };
var __wsJsonHandler = function(event_type, event) { var __wsJsonHandler = function(ev_type, ev) {
if (event_type === "media") { if (ev_type === "media") {
__setupCodec(event.video); __setupCodec(ev.video);
} }
}; };

View File

@ -40,9 +40,9 @@ export function main() {
}, false); }, false);
tools.el.setOnClick($("login-button"), __login); tools.el.setOnClick($("login-button"), __login);
$("user-input").onkeyup = $("passwd-input").onkeyup = $("code-input").onkeyup = function(event) { $("user-input").onkeyup = $("passwd-input").onkeyup = $("code-input").onkeyup = function(ev) {
if (event.code === "Enter") { if (ev.code === "Enter") {
event.preventDefault(); ev.preventDefault();
$("login-button").click(); $("login-button").click();
} }
}; };

View File

@ -152,25 +152,25 @@ export var tools = new function() {
self.el = new function() { self.el = new function() {
return { return {
"setOnClick": function(el, callback, prevent_default=true) { "setOnClick": function(el, callback, prevent_default=true) {
el.onclick = el.ontouchend = function(event) { el.onclick = el.ontouchend = function(ev) {
if (prevent_default) { if (prevent_default) {
event.preventDefault(); ev.preventDefault();
} }
callback(); callback();
}; };
}, },
"setOnDown": function(el, callback, prevent_default=true) { "setOnDown": function(el, callback, prevent_default=true) {
el.onmousedown = el.ontouchstart = function(event) { el.onmousedown = el.ontouchstart = function(ev) {
if (prevent_default) { if (prevent_default) {
event.preventDefault(); ev.preventDefault();
} }
callback(); callback();
}; };
}, },
"setOnUp": function(el, callback, prevent_default=true) { "setOnUp": function(el, callback, prevent_default=true) {
el.onmouseup = el.ontouchend = function(event) { el.onmouseup = el.ontouchend = function(ev) {
if (prevent_default) { if (prevent_default) {
event.preventDefault(); ev.preventDefault();
} }
callback(); callback();
}; };
@ -210,9 +210,9 @@ export var tools = new function() {
el.__pressed = true; el.__pressed = true;
}; };
el.onmouseup = el.ontouchend = function(event) { el.onmouseup = el.ontouchend = function(ev) {
let value = self.slider.getValue(el); let value = self.slider.getValue(el);
event.preventDefault(); ev.preventDefault();
clear_timer(); clear_timer();
el.__execution_timer = setTimeout(function() { el.__execution_timer = setTimeout(function() {
el.__pressed = false; el.__pressed = false;

View File

@ -145,8 +145,8 @@ function __WindowManager() {
window.addEventListener("mouseup", __globalMouseButtonHandler); window.addEventListener("mouseup", __globalMouseButtonHandler);
window.addEventListener("touchend", __globalMouseButtonHandler); window.addEventListener("touchend", __globalMouseButtonHandler);
window.addEventListener("focusin", (event) => __focusInOut(event.target, true)); window.addEventListener("focusin", (ev) => __focusInOut(ev.target, true));
window.addEventListener("focusout", (event) => __focusInOut(event.target, false)); window.addEventListener("focusout", (ev) => __focusInOut(ev.target, false));
// Окна с iframe нуждаются в особенной логике для подсветки, // Окна с iframe нуждаются в особенной логике для подсветки,
// потому что из iframe не приходят события фокуса. // потому что из iframe не приходят события фокуса.
@ -183,9 +183,9 @@ function __WindowManager() {
document.addEventListener("fullscreenchange", __onFullScreenChange); document.addEventListener("fullscreenchange", __onFullScreenChange);
document.addEventListener("keyup", function(event) { document.addEventListener("keyup", function(ev) {
if (__catch_menu_esc && event.code === "Escape") { if (__catch_menu_esc && ev.code === "Escape") {
event.preventDefault(); ev.preventDefault();
__closeAllMenues(); __closeAllMenues();
__activateLastWindow(); __activateLastWindow();
} }
@ -302,11 +302,11 @@ function __WindowManager() {
el_cancel_bt.className = "row50"; el_cancel_bt.className = "row50";
} }
el_win.addEventListener("keyup", function (event) { el_win.addEventListener("keyup", function (ev) {
event.preventDefault(); ev.preventDefault();
if (ok && event.code === "Enter") { if (ok && ev.code === "Enter") {
el_ok_bt.click(); el_ok_bt.click();
} else if (cancel && event.code === "Escape") { } else if (cancel && ev.code === "Escape") {
el_cancel_bt.click(); el_cancel_bt.click();
} }
}); });
@ -464,13 +464,13 @@ function __WindowManager() {
return el_parent; return el_parent;
}; };
var __globalMouseButtonHandler = function(event) { var __globalMouseButtonHandler = function(ev) {
if ( if (
event.target.closest ev.target.closest
&& !event.target.closest(".menu-button") && !ev.target.closest(".menu-button")
&& !event.target.closest(".modal") && !ev.target.closest(".modal")
) { ) {
for (let el = event.target; el && el !== document; el = el.parentNode) { for (let el = ev.target; el && el !== document; el = el.parentNode) {
if (el.classList.contains("menu")) { if (el.classList.contains("menu")) {
return; return;
} else if (el.hasAttribute("data-force-hide-menu")) { } else if (el.hasAttribute("data-force-hide-menu")) {
@ -607,41 +607,41 @@ function __WindowManager() {
let prev_pos = {"x": 0, "y": 0}; let prev_pos = {"x": 0, "y": 0};
let moving = false; let moving = false;
function startMoving(event) { function startMoving(ev) {
// При перетаскивании resizable-окна за правый кран экрана оно ужимается. // При перетаскивании resizable-окна за правый кран экрана оно ужимается.
// Этот костыль фиксит это. // Этот костыль фиксит это.
el_win.style.width = el_win.offsetWidth + "px"; el_win.style.width = el_win.offsetWidth + "px";
__closeAllMenues(); __closeAllMenues();
__activateWindow(el_win); __activateWindow(el_win);
event = (event || window.event); ev = (ev || window.ev);
event.preventDefault(); ev.preventDefault();
if (!event.touches || event.touches.length === 1) { if (!ev.touches || ev.touches.length === 1) {
el_header.classList.add("window-header-grabbed"); el_header.classList.add("window-header-grabbed");
prev_pos = getEventPosition(event); prev_pos = getEventPosition(ev);
moving = true; moving = true;
} }
} }
function doMoving(event) { function doMoving(ev) {
if (!moving) { if (!moving) {
return; return;
} }
el_win.removeAttribute("data-centered"); el_win.removeAttribute("data-centered");
event = (event || window.event); ev = (ev || window.ev);
event.preventDefault(); ev.preventDefault();
let event_pos = getEventPosition(event); let ev_pos = getEventPosition(ev);
let x = prev_pos.x - event_pos.x; let x = prev_pos.x - ev_pos.x;
let y = prev_pos.y - event_pos.y; let y = prev_pos.y - ev_pos.y;
el_win.style.top = (el_win.offsetTop - y) + "px"; el_win.style.top = (el_win.offsetTop - y) + "px";
el_win.style.left = (el_win.offsetLeft - x) + "px"; el_win.style.left = (el_win.offsetLeft - x) + "px";
prev_pos = event_pos; prev_pos = ev_pos;
} }
function stopMoving() { function stopMoving() {
@ -649,11 +649,11 @@ function __WindowManager() {
moving = false; moving = false;
} }
function getEventPosition(event) { function getEventPosition(ev) {
if (event.touches) { if (ev.touches) {
return {"x": event.touches[0].clientX, "y": event.touches[0].clientY}; return {"x": ev.touches[0].clientX, "y": ev.touches[0].clientY};
} else { } else {
return {"x": event.clientX, "y": event.clientY}; return {"x": ev.clientX, "y": ev.clientY};
} }
} }
@ -672,8 +672,8 @@ function __WindowManager() {
el_grab.addEventListener("touchstart", startMoving); el_grab.addEventListener("touchstart", startMoving);
}; };
var __onFullScreenChange = function(event) { var __onFullScreenChange = function(ev) {
let el_win = event.target; let el_win = ev.target;
if (!document.fullscreenElement) { if (!document.fullscreenElement) {
let rect = el_win.before_full_screen; let rect = el_win.before_full_screen;
if (rect) { if (rect) {