Toggle modifier pressed states.
authorMichael Jumper <zhangmaike@users.sourceforge.net>
Sat, 21 Jan 2012 20:53:18 +0000 (12:53 -0800)
committerMichael Jumper <zhangmaike@users.sourceforge.net>
Sat, 21 Jan 2012 20:53:18 +0000 (12:53 -0800)
src/main/resources/oskeyboard.js

index a1d442f..48d9989 100644 (file)
@@ -243,13 +243,30 @@ Guacamole.OnScreenKeyboard = function(url) {
                     // Set up click handler for key
                     key_element.onclick = function() {
 
+                        // Toggle pressed state
+                        key.pressed = !key.pressed;
+
                         // Get current cap based on modifier state
                         var cap = key.getCap(on_screen_keyboard.modifiers);
 
                         // Update modifier state
                         if (cap.modifier) {
-                            on_screen_keyboard.modifiers |= getModifier(cap.modifier);
-                            keyboard.classList.add("guac-keyboard-modifier-" + cap.modifier);
+
+                            // Construct classname for modifier
+                            var modifierClass = "guac-keyboard-modifier-" + cap.modifier;
+
+                            // Activate modifier if pressed
+                            if (key.pressed) {
+                                on_screen_keyboard.modifiers |= getModifier(cap.modifier);
+                                keyboard.classList.add(modifierClass);
+                            }
+
+                            // Deactivate if not pressed
+                            else {
+                                on_screen_keyboard.modifiers &= ~getModifier(cap.modifier);
+                                keyboard.classList.remove(modifierClass);
+                            }
+
                         }
 
                         // TODO: Send key event