teclado event ejemplo codes charcode javascript keyboard keycode

event - ¿Puede javascript decir la diferencia entre las teclas de mayúsculas izquierda y derecha?



keycode table (4)

Internet Explorer es capaz de distinguir los cambios a la izquierda y a la derecha con la propiedad shiftLeft:

propiedad shiftLeft (evento)

De lo contrario, son indistinguibles.

Sobre todo esto es un chequeo de cordura. El código de clave para ambas teclas de cambio es 16. ¿Eso significa que en realidad es imposible distinguir los eventos de cambio a izquierda y derecha en un navegador?


La forma más fácil de hacerlo.

$(document).ready(function(){ $("html").keydown(function(e) { if (e.shiftKey) { if (event.location == 1) console.log(''left shift''); if (event.location == 2) console.log(''right shift''); } }); });

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

Nota: tiene que hacer clic en el espacio en blanco interior cuando ejecute el fragmento de código para activar las teclas del teclado. Esto se prueba en Chrome y Safari.


Puede usar event.code (la cadena del teclado físico) en lugar de event.key (el valor numérico ascii).

event.code docs MDN

La propiedad KeyboardEvent.code representa una clave física en el teclado (a diferencia del carácter generado al presionar la tecla).

Si se desplaza hacia abajo a "Valores de código" en la parte inferior, puede encontrar las dos teclas de desplazamiento distintas:

"ShiftLeft" , "ShiftRight"


En los navegadores más nuevos que admiten DOM3 , puede usar event.location para verificar la ubicación.

En la especificación DOM3 , hay 4 constantes definidas para la ubicación, DOM_KEY_LOCATION_STANDARD , DOM_KEY_LOCATION_LEFT , DOM_KEY_LOCATION_RIGHT y DOM_KEY_LOCATION_NUMPAD .

En este caso, puedes hacer:

if (event.location === KeyboardEvent.DOM_KEY_LOCATION_LEFT){ } else if (event.location === KeyboardEvent.DOM_KEY_LOCATION_RIGHT){ }