diff --git a/app/ui.js b/app/ui.js index 48d9af8e..e7072d19 100644 --- a/app/ui.js +++ b/app/ui.js @@ -274,6 +274,9 @@ const UI = { return mouseButtonMapper; } + mouseButtonMapper.set(0, XVNC_BUTTONS.LEFT_BUTTON); + mouseButtonMapper.set(1, XVNC_BUTTONS.MIDDLE_BUTTON); + mouseButtonMapper.set(2, XVNC_BUTTONS.RIGHT_BUTTON); mouseButtonMapper.set(3, XVNC_BUTTONS.BACK_BUTTON); mouseButtonMapper.set(4, XVNC_BUTTONS.FORWARD_BUTTON); WebUtil.writeSetting("mouseButtonMapper", mouseButtonMapper.dump()); diff --git a/core/mousebuttonmapper.js b/core/mousebuttonmapper.js index 565e813b..b69475a4 100644 --- a/core/mousebuttonmapper.js +++ b/core/mousebuttonmapper.js @@ -1,15 +1,19 @@ export const XVNC_BUTTONS = { - LEFT_BUTTON: 0, - MIDDLE_BUTTON: 1, - RIGHT_BUTTON: 2, - TURN_SCROLL_WHEEL_UP: 3, - TURN_SCROLL_WHEEL_DOWN: 4, - PUSH_SCROLL_WHEEL_LEFT: 5, - PUSH_SCROLL_WHEEL_RIGHT: 6, - BACK_BUTTON: 7, - FORWARD_BUTTON: 8 + LEFT_BUTTON: 1, + MIDDLE_BUTTON: 2, + RIGHT_BUTTON: 3, + TURN_SCROLL_WHEEL_UP: 4, + TURN_SCROLL_WHEEL_DOWN: 5, + PUSH_SCROLL_WHEEL_LEFT: 6, + PUSH_SCROLL_WHEEL_RIGHT: 7, + BACK_BUTTON: 8, + FORWARD_BUTTON: 9 }; +export function xvncButtonToMask(xvncButton) { + return 1 << (xvncButton - 1); +} + export default class MouseButtonMapper { constructor() { this.map = new Map(); diff --git a/core/rfb.js b/core/rfb.js index 252beb04..90a95549 100644 --- a/core/rfb.js +++ b/core/rfb.js @@ -26,7 +26,7 @@ import DES from "./des.js"; import KeyTable from "./input/keysym.js"; import XtScancode from "./input/xtscancodes.js"; import { encodings } from "./encodings.js"; -import MouseButtonMapper from "./mousebuttonmapper.js"; +import { MouseButtonMapper, xvncButtonToMask } from "./mousebuttonmapper.js"; import RawDecoder from "./decoders/raw.js"; import CopyRectDecoder from "./decoders/copyrect.js"; @@ -1578,11 +1578,11 @@ export default class RFB extends EventTargetMixin { this.checkLocalClipboard(); this._handleMouseButton(pos.x, pos.y, - true, 1 << mappedButton); + true, xvncButtonToMask(mappedButton)); break; case 'mouseup': this._handleMouseButton(pos.x, pos.y, - false, 1 << mappedButton); + false, xvncButtonToMask(mappedButton)); break; case 'mousemove': this._handleMouseMove(pos.x, pos.y);