summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPierre Ossman <ossman@cendio.se>2018-03-09 12:13:21 +0100
committerPierre Ossman <ossman@cendio.se>2018-03-09 12:13:21 +0100
commitd6ae4457738a54593f8d230d16cd1a464b151100 (patch)
treec479647519a285db613b5580cbef797564bff4d2
parent06309160ee25b7b99c96008f3d4d28933b097715 (diff)
downloadnovnc-d6ae4457738a54593f8d230d16cd1a464b151100.tar.gz
Handle _keyDownList in _sendKeyEvent()
This makes sure it never gets out of sync with what we've actually sent.
-rw-r--r--core/input/keyboard.js24
1 files changed, 10 insertions, 14 deletions
diff --git a/core/input/keyboard.js b/core/input/keyboard.js
index 4e8dc0d..872c9b9 100644
--- a/core/input/keyboard.js
+++ b/core/input/keyboard.js
@@ -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");
},