Handle _keyDownList in _sendKeyEvent()
This makes sure it never gets out of sync with what we've actually sent.
This commit is contained in:
parent
06309160ee
commit
d6ae445773
|
@ -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");
|
||||
},
|
||||
|
||||
|
|
Loading…
Reference in New Issue