Situación: Tengo un controlador keydown
con un switch
para lo que se pulsa la tecla cosas, bastante estándar, pero cuando cualquier tecla se mantiene pulsada la keydown
desencadena el evento en varias ocasiones (en lugar de sólo una vez cuando la tecla está realmente presionada).Fuerza keydown para disparar sólo una vez por keyCode
Por qué es un problema: Quiero mantener al oyente keydown
activo, es decir, ser capaz de detectar más de una tecla que se presiona a la vez, pero sólo tienen el fuego una vez por evento keydown
. Me gustaría hacer algo en el keyup
para ese keyCode
basado en el tiempo entre abajo y arriba, pero ese tiempo se está estropeando debido a los disparos múltiples.
Lo que he tratado: Actualmente estoy manteniendo una lista de keyCodes
que están abajo, y la comprobación frente a los de mi manejador keydown
para mantener el comportamiento predeterminado suceda si el keyCode
está en mi lista. Sin embargo, el evento todavía se activa muy a menudo y me preocupa la eficiencia/elegancia de esta solución.
La pregunta real: ¿Hay una buena manera de limitar la activación del evento keydown
a solo cuando la llave se empuja hacia abajo físicamente, o para escuchar sólo para códigos de teclas específicas?
"es decir, ser capaz de detectar más de una tecla presionada a la vez" Eso significa qué? – epascarello
Por ejemplo, mantenga presionada la tecla 'y', luego presione y mantenga presionada la tecla 'o'. Esto excluye la solución de eliminar el evento de colocación de tecla y agregarlo nuevamente después de la tecla. –