From: Michael Jumper Date: Sat, 10 Mar 2012 00:38:17 +0000 (-0800) Subject: For OSK modifiers, call keydown/keyup events only on press, calling keydown if modifi... X-Git-Url: http://git.alex.org.uk 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. --- diff --git a/src/main/resources/oskeyboard.js b/src/main/resources/oskeyboard.js index ba7ea72..dc5833a 100644 --- a/src/main/resources/oskeyboard.js +++ b/src/main/resources/oskeyboard.js @@ -324,17 +324,31 @@ Guacamole.OnScreenKeyboard = function(url) { on_screen_keyboard.modifiers ^= modifierFlag; // Activate modifier if pressed - if (on_screen_keyboard.modifiers & modifierFlag) + if (on_screen_keyboard.modifiers & modifierFlag) { + addClass(keyboard, modifierClass); + + // Send key event + if (on_screen_keyboard.onkeydown && cap.keysym) + on_screen_keyboard.onkeydown(cap.keysym); + + } // Deactivate if not pressed - else + else { + removeClass(keyboard, modifierClass); + + // Send key event + if (on_screen_keyboard.onkeyup && cap.keysym) + on_screen_keyboard.onkeyup(cap.keysym); + + } } - // Send key event - if (on_screen_keyboard.onkeydown && cap.keysym) + // If not modifier, send key event now + else if (on_screen_keyboard.onkeydown && cap.keysym) on_screen_keyboard.onkeydown(cap.keysym); // 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) { // Release key if currently pressed @@ -359,8 +370,8 @@ Guacamole.OnScreenKeyboard = function(url) { removeClass(key_element, "guac-keyboard-pressed"); - // Send key event - if (on_screen_keyboard.onkeyup && cap.keysym) + // Send key event if not a modifier key + if (!cap.modifier && on_screen_keyboard.onkeyup && cap.keysym) on_screen_keyboard.onkeyup(cap.keysym); // 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("mouseout", release, true); key_element.addEventListener("touchend", release, true);