¿Cuál es la mejor manera de manejar múltiples eventos clave en Javascript?

Al presionar la barra espaciadora en el juego se disparará un personaje, al presionar la barra espaciadora cuando se muestra un cuadro de confirmación, este cuadro desaparecerá y al presionar la barra espaciadora en una forma de puntaje alto se agregará un espacio en un cuadro de entrada. En este ejemplo, hay varios eventos para la misma clave, pero solo se dispara uno a la vez.

¿Existe un método general (o específico para Javascript) o una forma de programación para agregar eventos a una determinada clave, por lo que solo se ejecutan bajo ciertas circunstancias?

Por supuesto, se puede hacer así:

var inGame = true|false;
var inConfirmationBox = true|false;

function spaceBarHandler(){
    if(inGame){ /*shoot*/}
    else if(inConfirmationBox){ /*remove box*/}
}

document.onkeydown = function(){ /* call space bar handler if space bar was pressed */ };

Pero esta es una forma muy confusa de programación, ya que las acciones específicas se mezclan en una función de controlador de barra espaciadora, lo que dificulta el mantenimiento.

¿Cuál es la mejor manera de manejar múltiples eventos para una clave, de modo que estos eventos solo se disparen bajo ciertas circunstancias?

Respuestas a la pregunta(4)

Su respuesta a la pregunta