mirror of
https://github.com/gyurix1968/guacamole-client.git
synced 2025-09-06 13:17:41 +00:00
For OSK modifiers, call keydown/keyup events only on press, calling keydown if modifier activated, and keyup if modifier deactivated. Do not call keyup on release if key is a modifier.
This commit is contained in:
@@ -324,17 +324,31 @@ Guacamole.OnScreenKeyboard = function(url) {
|
|||||||
on_screen_keyboard.modifiers ^= modifierFlag;
|
on_screen_keyboard.modifiers ^= modifierFlag;
|
||||||
|
|
||||||
// Activate modifier if pressed
|
// Activate modifier if pressed
|
||||||
if (on_screen_keyboard.modifiers & modifierFlag)
|
if (on_screen_keyboard.modifiers & modifierFlag) {
|
||||||
|
|
||||||
addClass(keyboard, modifierClass);
|
addClass(keyboard, modifierClass);
|
||||||
|
|
||||||
|
// Send key event
|
||||||
|
if (on_screen_keyboard.onkeydown && cap.keysym)
|
||||||
|
on_screen_keyboard.onkeydown(cap.keysym);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
// Deactivate if not pressed
|
// Deactivate if not pressed
|
||||||
else
|
else {
|
||||||
|
|
||||||
removeClass(keyboard, modifierClass);
|
removeClass(keyboard, modifierClass);
|
||||||
|
|
||||||
|
// Send key event
|
||||||
|
if (on_screen_keyboard.onkeyup && cap.keysym)
|
||||||
|
on_screen_keyboard.onkeyup(cap.keysym);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Send key event
|
// If not modifier, send key event now
|
||||||
if (on_screen_keyboard.onkeydown && cap.keysym)
|
else if (on_screen_keyboard.onkeydown && cap.keysym)
|
||||||
on_screen_keyboard.onkeydown(cap.keysym);
|
on_screen_keyboard.onkeydown(cap.keysym);
|
||||||
|
|
||||||
// Mark key as pressed
|
// Mark key as pressed
|
||||||
@@ -346,9 +360,6 @@ Guacamole.OnScreenKeyboard = function(url) {
|
|||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
key_element.addEventListener("mousedown", press, true);
|
|
||||||
key_element.addEventListener("touchstart", press, true);
|
|
||||||
|
|
||||||
function release(e) {
|
function release(e) {
|
||||||
|
|
||||||
// Release key if currently pressed
|
// Release key if currently pressed
|
||||||
@@ -359,8 +370,8 @@ Guacamole.OnScreenKeyboard = function(url) {
|
|||||||
|
|
||||||
removeClass(key_element, "guac-keyboard-pressed");
|
removeClass(key_element, "guac-keyboard-pressed");
|
||||||
|
|
||||||
// Send key event
|
// Send key event if not a modifier key
|
||||||
if (on_screen_keyboard.onkeyup && cap.keysym)
|
if (!cap.modifier && on_screen_keyboard.onkeyup && cap.keysym)
|
||||||
on_screen_keyboard.onkeyup(cap.keysym);
|
on_screen_keyboard.onkeyup(cap.keysym);
|
||||||
|
|
||||||
// Mark key as released
|
// Mark key as released
|
||||||
@@ -372,6 +383,9 @@ Guacamole.OnScreenKeyboard = function(url) {
|
|||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
key_element.addEventListener("mousedown", press, true);
|
||||||
|
key_element.addEventListener("touchstart", press, true);
|
||||||
|
|
||||||
key_element.addEventListener("mouseup", release, true);
|
key_element.addEventListener("mouseup", release, true);
|
||||||
key_element.addEventListener("mouseout", release, true);
|
key_element.addEventListener("mouseout", release, true);
|
||||||
key_element.addEventListener("touchend", release, true);
|
key_element.addEventListener("touchend", release, true);
|
||||||
|
Reference in New Issue
Block a user