regresar a la lección

Extendiendo atajos de teclado

importancia: 5

Crea una función runOnKeys(func, code1, code2, ... code_n) que ejecute func al presionar simultáneamente las teclas con códigos code1, code2, …, code_n.

Por ejemplo, el siguiente código muestra un alert cuando "Q" y "W" se presionan juntas (en cualquier lenguaje, con o sin mayúscula)

runOnKeys(
  () => alert("¡Hola!"),
  "KeyQ",
  "KeyW"
);

Demo en nueva ventana

Debemos manejar dos eventos: document.onkeydown y document.onkeyup.

Creemos un set pressed = new Set() para registrar las teclas presionads actualmente.

El primer manejador las agrega en él, mientras que el segundo las quita. Con cada keydown verificamos si tenemos suficientes teclas presionadas, y ejecutamos la función si es así.

Abrir la solución en un entorno controlado.