Keyup no se dispara cuando keydown abre una alerta

Tengo dos manejadores de eventos, uno para keydown y otro para keyup. El controlador de eventos keydown activa un mensaje de alerta, pero esto evita que se active el evento keyup.

Puedes ver un ejemplo muy simple aquí:http://jsfiddle.net/boblauer/jaGwT/ Cuando el keydown abre una alerta, el keyup no se dispara, pero cuando no se abre una alerta, el keyup se dispara. Aquí está el código del jsfiddle:

var i = 0;
window.addEventListener('keydown', function(e) {
    if (i++ % 2) alert('down');
    console.log('down');
});

window.addEventListener('keyup', function(e) {
    alert('up');
    console.log('up');
});

Tengo una biblioteca que admite la escucha de múltiples combinaciones de teclas (como 'd + f'), por lo que cuando se presiona una tecla, necesito agregarla a una lista de teclas que se presionan actualmente, y cuando se suelta una tecla, Necesito quitarlo de dicha lista. El problema al que me estoy enfrentando es que, si quiero que se muestre una alerta cuando se presiona d + f al mismo tiempo, mi código para eliminar esas teclas de la lista 'presionada actualmente' nunca se dispara, porque nunca se llama a mi controlador de teclas. .

No puedo pensar en una buena solución a este problema. ¿Algunas ideas?

Respuestas a la pregunta(1)

Su respuesta a la pregunta