I'd like to implement hotkeys with this behavior:
Hold Alt, press A, release A, press 1, release 1, release Alt
Then execute some logic bound to Alt-A1 hotkey.
I thought that I could track all the keys between keydown and keyup of Alt. But unfortunately, I can't catch keyup event for Alt in the end.
Strangely enough, when a press Alt only, I catch both keydown and keyup event. But when I press something else while holding Alt (even Alt-A, for intsance), it seems like some other logic takes place and suppresses keyup event for Alt.
Is it some IE specific issue (I tried with IE8 and IE11)? Because I can catch it in Chrome, for example. What approach would you recommend here?
UPD: Actually there's a bug closed as not reproducible by The Internet Explorer Team: https://connect.microsoft.com/IE/feedback/details/807606/ie-does-not-catch-keyup-for-alt-button-after-pressing-key-combination
var keys = [];
document.body.innerHTML = "Keys currently pressed: "
window.addEventListener("keydown",
function(e){
keys[e.keyCode] = e.keyCode;
var keysArray = getNumberArray(keys);
document.body.innerHTML = "Keys currently pressed:" + keysArray;
if(keysArray.toString() == "18,65"){
document.body.innerHTML += " Did it!"
}
},
false);
window.addEventListener('keyup',
function(e){
keys[e.keyCode] = false;
document.body.innerHTML = "Keys currently pressed: " + getNumberArray(keys);
},
false);
function getNumberArray(arr){
var newArr = new Array();
for(var i = 0; i < arr.length; i++){
if(typeof arr[i] == "number"){
newArr[newArr.length] = arr[i];
}
}
return newArr;
}