diff options
Diffstat (limited to 'kvmd/web/js/mouse.js')
-rw-r--r-- | kvmd/web/js/mouse.js | 74 |
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, + })); + } }; }; |