Better key identifiers
Previously we identified keys in keyboard events by the 'key' property if it was set, and 'keyCode' otherwise. This turns out to be problematic as Firefox no longer leaves 'key' undefined (so we fall back to using 'keyCode'), but instead sets 'key' to 'MozPrintableKey' for all printable keys. This meant that when (printable) keys are released, we can't match it against the corresponding keydown event, and instead just send a keyup event for the last keydown received. Now, if both 'key' and 'keyCode' are set, use the concatenation of both. Otherwise prefer 'keyCode', as that is at least unique for every key. This should let us release the right keys on keyup events.
This commit is contained in:
parent
c70000bac4
commit
c3f6052435
|
@ -152,11 +152,14 @@ var kbdUtil = (function() {
|
|||
// Get a key ID from a keyboard event
|
||||
// May be a string or an integer depending on the available properties
|
||||
function getKey(evt){
|
||||
if (evt.key) {
|
||||
return evt.key;
|
||||
if ('keyCode' in evt && 'key' in evt) {
|
||||
return evt.key + ':' + evt.keyCode;
|
||||
}
|
||||
else if ('keyCode' in evt) {
|
||||
return evt.keyCode;
|
||||
}
|
||||
else {
|
||||
return evt.keyCode;
|
||||
return evt.key;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue