summaryrefslogtreecommitdiff
path: root/kvmd/web/js/mouse.js
diff options
context:
space:
mode:
Diffstat (limited to 'kvmd/web/js/mouse.js')
-rw-r--r--kvmd/web/js/mouse.js74
1 files changed, 33 insertions, 41 deletions
diff --git a/kvmd/web/js/mouse.js b/kvmd/web/js/mouse.js
index 468c9449..0f2379fe 100644
--- a/kvmd/web/js/mouse.js
+++ b/kvmd/web/js/mouse.js
@@ -1,38 +1,24 @@
var mouse = new function() {
- var __send_move_timer = null;
+ var __ws = null;
var __current_pos = {x: 0, y:0};
var __sent_pos = {x: 0, y:0};
- this.installCapture = function(ws) {
- tools.info("Installing mouse capture ...");
+ this.init = function() {
el_stream_image = $("stream-image");
- el_stream_image.onmousedown = (event) => __buttonHandler(ws, event, true);
- el_stream_image.onmouseup = (event) => __buttonHandler(ws, event, false);
+ el_stream_image.onmousedown = (event) => __buttonHandler(event, true);
+ el_stream_image.onmouseup = (event) => __buttonHandler(event, false);
el_stream_image.oncontextmenu = (event) => event.preventDefault();
el_stream_image.onmousemove = __moveHandler;
- el_stream_image.onwheel = (event) => __wheelHandler(ws, event);
- __send_move_timer = setInterval(() => __sendMove(ws), 100);
- $("hid-mouse-led").className = "led-on";
+ el_stream_image.onwheel = (event) => __wheelHandler(event);
+ setInterval(__sendMove, 100);
};
- this.clearCapture = function() {
- tools.info("Removing mouse capture ...");
- if (__send_move_timer) {
- clearInterval(__send_move_timer);
- __send_move_timer = null;
- }
- __current_pos = {x: 0, y:0};
- __sent_pos = {x: 0, y:0};
- el_stream_image = $("stream-image");
- el_stream_image.onmousedown = null;
- el_stream_image.onmouseup = null;
- el_stream_image.oncontextmenu = null;
- el_stream_image.onmousemove = null;
- el_stream_image.onwheel = null;
- $("hid-mouse-led").className = "led-off";
+ this.setSocket = function(ws) {
+ $("hid-mouse-led").className = (ws ? "led-on" : "led-off");
+ __ws = ws;
};
- var __buttonHandler = function(ws, event, state) {
+ var __buttonHandler = function(event, state) {
// https://www.w3schools.com/jsref/event_button.asp
switch (event.button) {
case 0: var button = "left"; break;
@@ -40,14 +26,16 @@ var mouse = new function() {
default: var button = null; break;
}
if (button) {
- tools.debug("Mouse button", (state ? "pressed:" : "released:"), button);
event.preventDefault();
- __sendMove(ws);
- ws.send(JSON.stringify({
- event_type: "mouse_button",
- button: button,
- state: state,
- }));
+ tools.debug("Mouse button", (state ? "pressed:" : "released:"), button);
+ __sendMove();
+ if (__ws) {
+ __ws.send(JSON.stringify({
+ event_type: "mouse_button",
+ button: button,
+ state: state,
+ }));
+ }
}
};
@@ -59,28 +47,32 @@ var mouse = new function() {
};
};
- var __sendMove = function(ws) {
+ var __sendMove = function() {
var pos = __current_pos;
if (pos.x !== __sent_pos.x || pos.y !== __sent_pos.y) {
tools.debug("Mouse move:", pos);
- ws.send(JSON.stringify({
- event_type: "mouse_move",
- to: pos,
- }));
+ if (__ws) {
+ __ws.send(JSON.stringify({
+ event_type: "mouse_move",
+ to: pos,
+ }));
+ }
__sent_pos = pos;
}
};
- var __wheelHandler = function(ws, event) {
+ var __wheelHandler = function(event) {
// https://learn.javascript.ru/mousewheel
if (event.preventDefault) {
event.preventDefault();
}
delta = {x: event.deltaX, y: event.deltaY};
tools.debug("Mouse wheel:", delta);
- ws.send(JSON.stringify({
- event_type: "mouse_wheel",
- delta: delta,
- }));
+ if (__ws) {
+ __ws.send(JSON.stringify({
+ event_type: "mouse_wheel",
+ delta: delta,
+ }));
+ }
};
};