diff options
author | Pierre Ossman <ossman@cendio.se> | 2018-03-09 12:13:21 +0100 |
---|---|---|
committer | Pierre Ossman <ossman@cendio.se> | 2018-03-09 12:13:21 +0100 |
commit | d6ae4457738a54593f8d230d16cd1a464b151100 (patch) | |
tree | c479647519a285db613b5580cbef797564bff4d2 | |
parent | 06309160ee25b7b99c96008f3d4d28933b097715 (diff) | |
download | novnc-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.js | 24 |
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"); }, |