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:
Michael Jumper
2012-03-09 16:38:17 -08:00
parent b11445e8dd
commit 4c4b2de654

View File

@@ -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);