From d6ae4457738a54593f8d230d16cd1a464b151100 Mon Sep 17 00:00:00 2001 From: Pierre Ossman Date: Fri, 9 Mar 2018 12:13:21 +0100 Subject: [PATCH] Handle _keyDownList in _sendKeyEvent() This makes sure it never gets out of sync with what we've actually sent. --- core/input/keyboard.js | 24 ++++++++++-------------- 1 file changed, 10 insertions(+), 14 deletions(-) diff --git a/core/input/keyboard.js b/core/input/keyboard.js index 4e8dc0d5..872c9b9a 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"); },