]> git.proxmox.com Git - mirror_novnc.git/commitdiff
Handle _keyDownList in _sendKeyEvent()
authorPierre Ossman <ossman@cendio.se>
Fri, 9 Mar 2018 11:13:21 +0000 (12:13 +0100)
committerPierre Ossman <ossman@cendio.se>
Fri, 9 Mar 2018 11:13:21 +0000 (12:13 +0100)
This makes sure it never gets out of sync with what we've actually
sent.

core/input/keyboard.js

index 4e8dc0d5ba888b1fb765b7a10bb841d3efff41d8..872c9b9a90cdd309f129f855c7e4c3118df0f3c3 100644 (file)
@@ -39,6 +39,16 @@ Keyboard.prototype = {
     // ===== PRIVATE METHODS =====
 
     _sendKeyEvent: function (keysym, code, down) {
+        if (down) {
+            this._keyDownList[code] = keysym;
+        } else {
+            // Do we really think this key is down?
+            if (!(code in this._keyDownList)) {
+                return;
+            }
+            delete this._keyDownList[code];
+        }
+
         Log.Debug("onkeyevent " + (down ? "down" : "up") +
                   ", keysym: " + keysym, ", code: " + code);
 
@@ -180,8 +190,6 @@ Keyboard.prototype = {
         this._pendingKey = null;
         stopEvent(e);
 
-        this._keyDownList[code] = keysym;
-
         this._sendKeyEvent(keysym, code, true);
     },
 
@@ -210,8 +218,6 @@ Keyboard.prototype = {
             return;
         }
 
-        this._keyDownList[code] = keysym;
-
         this._sendKeyEvent(keysym, code, true);
     },
     _handleKeyPressTimeout: function (e) {
@@ -245,8 +251,6 @@ Keyboard.prototype = {
             keysym = 0;
         }
 
-        this._keyDownList[code] = keysym;
-
         this._sendKeyEvent(keysym, code, true);
     },
 
@@ -262,14 +266,7 @@ Keyboard.prototype = {
             return;
         }
 
-        // Do we really think this key is down?
-        if (!(code in this._keyDownList)) {
-            return;
-        }
-
         this._sendKeyEvent(this._keyDownList[code], code, false);
-
-        delete this._keyDownList[code];
     },
 
     _allKeysUp: function () {
@@ -277,7 +274,6 @@ Keyboard.prototype = {
         for (var code in this._keyDownList) {
             this._sendKeyEvent(this._keyDownList[code], code, false);
         };
-        this._keyDownList = {};
         Log.Debug("<< Keyboard.allKeysUp");
     },