better mac cmd handling

This commit is contained in:
Devaev Maxim 2021-03-13 20:01:43 +03:00
parent de3a144673
commit 1c1bb3b2e6
2 changed files with 26 additions and 14 deletions

View File

@ -69,30 +69,42 @@ export function Keypad(keys_parent, key_callback) {
/************************************************************************/ /************************************************************************/
self.releaseAll = function(release_hook=false) { self.releaseAll = function() {
for (let dict of [__keys, __modifiers]) { for (let dict of [__keys, __modifiers]) {
for (let code in dict) { for (let code in dict) {
if (__isActive(dict[code][0])) { if (__isActive(dict[code][0])) {
self.emit(code, false, release_hook); self.emit(code, false);
} }
} }
} }
}; };
self.emit = function(code, state, release_hook=false) { self.emit = function(code, state, fix_mac_cmd=false) {
if (code in __merged) { if (code in __merged) {
__commonHandler(__merged[code][0], state, false); __commonHandler(__merged[code][0], state, false);
if (release_hook) { if (fix_mac_cmd) {
for (let code in __keys) { __fixMacCmd();
if (__isActive(__keys[code][0])) {
self.emit(code, false);
}
}
} }
__unholdModifiers(); __unholdModifiers();
} }
}; };
var __fixMacCmd = function() {
if (__isMacCmdActive()) {
for (let code in __keys) {
setTimeout(function() {
if (__isActive(__keys[code][0])) {
self.emit(code, false);
}
}, 100);
}
}
};
var __isMacCmdActive = function() {
return (__isActive(__modifiers["MetaLeft"][0]) || __isActive(__modifiers["MetaRight"][0]));
};
var __clickHandler = function(el_key, state) { var __clickHandler = function(el_key, state) {
__commonHandler(el_key, state, false); __commonHandler(el_key, state, false);
__unholdModifiers(); __unholdModifiers();

View File

@ -35,7 +35,7 @@ export function Keyboard(record_callback) {
var __online = true; var __online = true;
var __keypad = null; var __keypad = null;
var __use_release_hook = false; var __fix_mac_cmd = false;
var __init__ = function() { var __init__ = function() {
__keypad = new Keypad("div#keyboard-window", __sendKey); __keypad = new Keypad("div#keyboard-window", __sendKey);
@ -58,8 +58,8 @@ export function Keyboard(record_callback) {
if (tools.browser.is_mac) { if (tools.browser.is_mac) {
// https://bugs.chromium.org/p/chromium/issues/detail?id=28089 // https://bugs.chromium.org/p/chromium/issues/detail?id=28089
// https://bugzilla.mozilla.org/show_bug.cgi?id=1299553 // https://bugzilla.mozilla.org/show_bug.cgi?id=1299553
tools.info("Keyboard: enabled Mac-CMD-Hook"); tools.info("Keyboard: enabled Fix-Mac-CMD");
__use_release_hook = true; __fix_mac_cmd = true;
} }
}; };
@ -95,7 +95,7 @@ export function Keyboard(record_callback) {
}; };
self.releaseAll = function() { self.releaseAll = function() {
__keypad.releaseAll(__use_release_hook); __keypad.releaseAll();
}; };
self.emit = function(code, state) { self.emit = function(code, state) {
@ -139,7 +139,7 @@ export function Keyboard(record_callback) {
if (!event.repeat) { if (!event.repeat) {
// https://bugs.chromium.org/p/chromium/issues/detail?id=28089 // https://bugs.chromium.org/p/chromium/issues/detail?id=28089
// https://bugzilla.mozilla.org/show_bug.cgi?id=1299553 // https://bugzilla.mozilla.org/show_bug.cgi?id=1299553
__keypad.emit(event.code, state, __use_release_hook); __keypad.emit(event.code, state, __fix_mac_cmd);
} }
}; };