From 6b49e70d0278cb4a8db143239dc75f6be8b55646 Mon Sep 17 00:00:00 2001 From: Ylian Saint-Hilaire Date: Tue, 22 Feb 2022 18:21:34 -0800 Subject: [PATCH] Added AMT KVM mouse wheel support. --- amt-desktop-0.0.2.js | 14 ++++++++++ index.html | 3 +- translate/translate.json | 60 ++++++++++++++++++++-------------------- 3 files changed, 46 insertions(+), 31 deletions(-) diff --git a/amt-desktop-0.0.2.js b/amt-desktop-0.0.2.js index 98b7c36..2ff6804 100644 --- a/amt-desktop-0.0.2.js +++ b/amt-desktop-0.0.2.js @@ -884,6 +884,7 @@ var CreateAmtRemoteDesktop = function (divid, scrolldiv) { c.onmouseup = obj.mouseup; c.onmousedown = obj.mousedown; c.onmousemove = obj.mousemove; + c.onmousewheel = obj.mousewheel; //if (navigator.userAgent.match(/mozilla/i)) c.DOMMouseScroll = obj.xxDOMMouseScroll; else c.onmousewheel = obj.xxMouseWheel; _MouseInputGrab = true; } @@ -894,6 +895,7 @@ var CreateAmtRemoteDesktop = function (divid, scrolldiv) { c.onmousemove = null; c.onmouseup = null; c.onmousedown = null; + c.onmousewheel = null; //if (navigator.userAgent.match(/mozilla/i)) c.DOMMouseScroll = null; else c.onmousewheel = null; _MouseInputGrab = false; } @@ -921,6 +923,18 @@ var CreateAmtRemoteDesktop = function (divid, scrolldiv) { // RFB 'PointerEvent' and mouse handlers obj.mousedblclick = function (e) { } + obj.mousewheel = function (e) { + var v = 0; + if (typeof e.deltaY == 'number') { v = -1 * e.deltaY; } + else if (typeof e.detail == 'number') { v = -1 * e.detail; } + else if (typeof e.wheelDelta == 'number') { v = e.wheelDelta; } + if (v == 0) return; + var tmpmask = obj.buttonmask; + obj.buttonmask |= (1 << ((v > 0) ? 3 : 4)); + obj.mousemove(e, 1); + obj.buttonmask = tmpmask; + return obj.mousemove(e, 1); + } obj.mousedown = function (e) { obj.buttonmask |= (1 << e.button); return obj.mousemove(e, 1); } obj.mouseup = function (e) { obj.buttonmask &= (0xFFFF - (1 << e.button)); return obj.mousemove(e, 1); } obj.mousemove = function (e, force) { diff --git a/index.html b/index.html index 84c2bb6..e46b0e6 100644 --- a/index.html +++ b/index.html @@ -8906,12 +8906,13 @@ function dmousedown(e) { if (!xxdialogMode && (!Q('id_DeskVO').checked)) desktop.m.mousedown(e); } function dmouseup(e) { if (!xxdialogMode && (!Q('id_DeskVO').checked)) desktop.m.mouseup(e); } function dmousemove(e) { if (!xxdialogMode && (!Q('id_DeskVO').checked)) desktop.m.mousemove(e); } + function dmousewheel(e) { if (!xxdialogMode && (!Q('id_DeskVO').checked)) desktop.m.mousewheel(e); } // ###END###{!DesktopInband} // ###BEGIN###{DesktopInband} function dmousedown(e) { if (!xxdialogMode && (!Q('id_DeskVO').checked)) { if ((webRtcDesktop != null) && (webRtcDesktop.softdesktop != null)) { webRtcDesktop.softdesktop.m.mousedown(e); desktop.m.sendKeepAlive(); } else { desktop.m.mousedown(e); } } } function dmouseup(e) { if (!xxdialogMode && (!Q('id_DeskVO').checked)) { if ((webRtcDesktop != null) && (webRtcDesktop.softdesktop != null)) { webRtcDesktop.softdesktop.m.mouseup(e); desktop.m.sendKeepAlive(); } else { desktop.m.mouseup(e); } } } function dmousemove(e) { if (!xxdialogMode && (!Q('id_DeskVO').checked)) { if ((webRtcDesktop != null) && (webRtcDesktop.softdesktop != null)) { webRtcDesktop.softdesktop.m.mousemove(e); desktop.m.sendKeepAlive(); } else { desktop.m.mousemove(e); } } } - function dmousewheel(e) { if (!xxdialogMode && (!Q('id_DeskVO').checked)) { if ((webRtcDesktop != null) && (webRtcDesktop.softdesktop != null)) { webRtcDesktop.softdesktop.m.mousewheel(e); desktop.m.sendKeepAlive(); } } } + function dmousewheel(e) { if (!xxdialogMode && (!Q('id_DeskVO').checked)) { if ((webRtcDesktop != null) && (webRtcDesktop.softdesktop != null)) { webRtcDesktop.softdesktop.m.mousewheel(e); desktop.m.sendKeepAlive(); } else { desktop.m.mousewheel(e); } } } // ###END###{DesktopInband} function drotate(x) { diff --git a/translate/translate.json b/translate/translate.json index 55d51d0..531b966 100644 --- a/translate/translate.json +++ b/translate/translate.json @@ -65,49 +65,49 @@ ] }, { - "de": " 1 Minute", + "de": " 1 Minute ", "en": " 1 minute ", - "es": " 1 minuto", - "fr": " 1 minute", - "it": " 1 minuto", - "ja": " 1分", - "ko": " 1 분", - "nl": " 1 minuut", - "pt": " 1 minuto", - "ru": " 1 минута", - "zh-chs": " 1分钟", + "es": " 1 minuto ", + "fr": " 1 minute ", + "it": " 1 minuto ", + "ja": " 1分 ", + "ko": " 1 분 ", + "nl": " 1 minuut ", + "pt": " 1 minuto ", + "ru": " 1 минута ", + "zh-chs": " 1分钟 ", "xloc": [ "index.html->id_computerSelector->dialog->21->1508" ] }, { - "de": " 1 Minute", + "de": " 1 minute ", "en": " 1 minutes ", - "es": " 1 minuto", - "fr": " 1 minutes", - "it": " 1 minuti", - "ja": " 1分", - "ko": " 1 분", - "nl": " 1 minuut", - "pt": " 1 minuto", - "ru": " 1 минута", - "zh-chs": " 1分钟", + "es": " 1 minuto ", + "fr": " 1 minutes ", + "it": " 1 minuti ", + "ja": " 1分 ", + "ko": " 1 분 ", + "nl": " 1 minuut ", + "pt": " 1 minuto ", + "ru": " 1 минута ", + "zh-chs": " 1分钟 ", "xloc": [ "index.html->id_computerSelector->dialog->21->1507" ] }, { - "de": ": Zu protokollierendes Ereignis", + "de": " : Zu protokollierendes Ereignis", "en": " : Event to log", - "es": ": Evento para registrar", - "fr": ": Événement à consigner", - "it": ": Evento da registrare", - "ja": ":ログに記録するイベント", - "ko": ": 기록 할 이벤트", - "nl": ": Te loggen gebeurtenis", - "pt": ": Evento a ser registrado", - "ru": ": Событие для входа", - "zh-chs": ":要记录的事件", + "es": " : Evento para registrar", + "fr": " : Événement à consigner", + "it": " : Evento da registrare", + "ja": " :ログに記録するイベント", + "ko": " : 기록 할 이벤트", + "nl": " : Te loggen gebeurtenis", + "pt": " : Evento a ser registrado", + "ru": " : Событие для входа", + "zh-chs": " :要记录的事件", "xloc": [ "index.html->id_computerSelector->dialog->21->770" ]