GUACAMOLE-161: Merge do not rely on receiving keyup for Caps Lock on Mac.

This commit is contained in:
Nick Couchman
2018-01-18 13:24:35 -05:00

View File

@@ -100,7 +100,15 @@ Guacamole.Keyboard = function Keyboard(element) {
*
* @type {Boolean}
*/
altIsTypableOnly: false
altIsTypableOnly: false,
/**
* Whether we can rely on receiving a keyup event for the Caps Lock
* key.
*
* @type {Boolean}
*/
capsLockKeyupUnreliable: false
};
@@ -112,9 +120,12 @@ Guacamole.Keyboard = function Keyboard(element) {
if (navigator.platform.match(/ipad|iphone|ipod/i))
quirks.keyupUnreliable = true;
// The Alt key on Mac is never used for keyboard shortcuts
else if (navigator.platform.match(/^mac/i))
// The Alt key on Mac is never used for keyboard shortcuts, and the
// Caps Lock key never dispatches keyup events
else if (navigator.platform.match(/^mac/i)) {
quirks.altIsTypableOnly = true;
quirks.capsLockKeyupUnreliable = true;
}
}
@@ -260,6 +271,10 @@ Guacamole.Keyboard = function Keyboard(element) {
if (guac_keyboard.modifiers.meta && this.keysym !== 0xFFE7 && this.keysym !== 0xFFE8)
this.keyupReliable = false;
// We cannot rely on receiving keyup for Caps Lock on certain platforms
else if (this.keysym === 0xFFE5 && quirks.capsLockKeyupUnreliable)
this.keyupReliable = false;
// Determine whether default action for Alt+combinations must be prevented
var prevent_alt = !guac_keyboard.modifiers.ctrl && !quirks.altIsTypableOnly;