diff --git a/core/input/keyboard.js b/core/input/keyboard.js index fa4be9ff..82b5f5c1 100644 --- a/core/input/keyboard.js +++ b/core/input/keyboard.js @@ -43,7 +43,11 @@ export default class Keyboard { } else { // On MacOs zoom and shortcut actions are CMD based so we need to // let the remote know that it should unselect the CTRL key instead - if (browser.isMac() && code === "MetaLeft" && this._keyDownList["ControlLeft"]) { + if ( + browser.isMac() && + this._keyDownList["ControlLeft"] && + (code === "MetaLeft" || code === "MetaRight") + ) { keysym = KeyTable.XK_Control_L; code = "ControlLeft"; } @@ -135,8 +139,14 @@ export default class Keyboard { } // Translate MacOs CMD based shortcuts to their CTRL based counterpart - if (browser.isMac() && UI.rfb.translateShortcuts && code !== "MetaLeft" && e.metaKey && !e.ctrlKey && !e.altKey) { + if ( + browser.isMac() && + UI.rfb && UI.rfb.translateShortcuts && + code !== "MetaLeft" && code !== "MetaRight" && + e.metaKey && !e.ctrlKey && !e.altKey + ) { this._sendKeyEvent(this._keyDownList["MetaLeft"], "MetaLeft", false); + this._sendKeyEvent(this._keyDownList["MetaRight"], "MetaRight", false); this._sendKeyEvent(KeyTable.XK_Control_L, "ControlLeft", true); this._sendKeyEvent(keysym, code, true); stopEvent(e); diff --git a/core/rfb.js b/core/rfb.js index 28f3595a..6d16502f 100644 --- a/core/rfb.js +++ b/core/rfb.js @@ -1331,8 +1331,9 @@ export default class RFB extends EventTargetMixin { ev.preventDefault(); // On MacOs we need to translate zooming CMD+wheel to CTRL+wheel - if (isMac() && this._keyboard._keyDownList["MetaLeft"]) { + if (isMac() && (this._keyboard._keyDownList["MetaLeft"] || this._keyboard._keyDownList["MetaRight"])) { this._keyboard._sendKeyEvent(this._keyboard._keyDownList["MetaLeft"], "MetaLeft", false); + this._keyboard._sendKeyEvent(this._keyboard._keyDownList["MetaRight"], "MetaRight", false); this._keyboard._sendKeyEvent(KeyTable.XK_Control_L, "ControlLeft", true); }