Ловить нажатия и отжатия. Самого по себе статуса какой либо клавиши нигде нет.
Примерно так:
//в самом начале
var KEYS = (function(parent){
var keys = {
pressed: {},
isPressed: function(key){
if(typeof key === 'string')
key = key.toUpperCase().charCodeAt(0);
return key in this.pressed;
},
handleEvent: function(event){
switch(event.type){
case 'blur':
for(var k in this.pressed){
delete this.pressed[k];
}
break;
case 'keyup':
delete this.pressed[event.keyCode];
break;
case 'keydown':
this.pressed[event.keyCode] = new Date();
break;
}
}
};
parent.addEventListener('keyup', keys);
parent.addEventListener('keydown', keys);
parent.addEventListener('blur', keys);
return keys;
}(window));
//сильно позже
if(KEYS.isPressed('A') || KEYS.isPressed('D'))
alert('!')