mirror of
https://github.com/mofeng-git/One-KVM.git
synced 2025-12-12 09:10:30 +08:00
better mac cmd handling
This commit is contained in:
parent
de3a144673
commit
1c1bb3b2e6
@ -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 code in dict) {
|
||||
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) {
|
||||
__commonHandler(__merged[code][0], state, false);
|
||||
if (release_hook) {
|
||||
for (let code in __keys) {
|
||||
if (__isActive(__keys[code][0])) {
|
||||
self.emit(code, false);
|
||||
}
|
||||
}
|
||||
if (fix_mac_cmd) {
|
||||
__fixMacCmd();
|
||||
}
|
||||
__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) {
|
||||
__commonHandler(el_key, state, false);
|
||||
__unholdModifiers();
|
||||
|
||||
@ -35,7 +35,7 @@ export function Keyboard(record_callback) {
|
||||
var __online = true;
|
||||
|
||||
var __keypad = null;
|
||||
var __use_release_hook = false;
|
||||
var __fix_mac_cmd = false;
|
||||
|
||||
var __init__ = function() {
|
||||
__keypad = new Keypad("div#keyboard-window", __sendKey);
|
||||
@ -58,8 +58,8 @@ export function Keyboard(record_callback) {
|
||||
if (tools.browser.is_mac) {
|
||||
// https://bugs.chromium.org/p/chromium/issues/detail?id=28089
|
||||
// https://bugzilla.mozilla.org/show_bug.cgi?id=1299553
|
||||
tools.info("Keyboard: enabled Mac-CMD-Hook");
|
||||
__use_release_hook = true;
|
||||
tools.info("Keyboard: enabled Fix-Mac-CMD");
|
||||
__fix_mac_cmd = true;
|
||||
}
|
||||
};
|
||||
|
||||
@ -95,7 +95,7 @@ export function Keyboard(record_callback) {
|
||||
};
|
||||
|
||||
self.releaseAll = function() {
|
||||
__keypad.releaseAll(__use_release_hook);
|
||||
__keypad.releaseAll();
|
||||
};
|
||||
|
||||
self.emit = function(code, state) {
|
||||
@ -139,7 +139,7 @@ export function Keyboard(record_callback) {
|
||||
if (!event.repeat) {
|
||||
// https://bugs.chromium.org/p/chromium/issues/detail?id=28089
|
||||
// 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);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user