Al principio pensé que se trataba de un error, ya que se devuelve el valor en minúsculas espera para el evento keypress
. Resulta que en keyup/keydown
siempre se devuelve la versión mayúscula ASCII/no desplazada de una llave.
Desde este enlace: http://www.javascriptkit.com/jsref/eventkeyboardmouse.shtml
Tenga cuidado cuando se accede a la propiedad keyCode durante un evento onkeyup onkeydown o , ya que se encuentra cada vez se pulsa cualquier tecla, incluyendo teclas no de carácter como "Shift ". Este significa que si intenta presionar "Mayús + a" para intente obtener el código de clave para "A", siempre obtendrá dos códigos de clave , uno para "Mayúsculas" y para "A" en ese orden Lo que no conseguirá independientemente es el código clave de "a", como keyCode siempre devuelve el valor Unicode de la versión en mayúsculas de carácter
- pulsar Shift + a cuenta como una evento único
keypress
.
- pulsar Shift + a cuenta como dos
keydown
eventos cuando se pulsan las teclas hacia abajo y dos keyup
evento cuando se sueltan las teclas.
keypress
devuelve valor compuesto de de una o más teclas presionadas al unísono.
keydown
y keyup
devuelva el valor de una sola clave ignorando las combinaciones de teclas.
Ahora aquí es la parte confusa: por alguna razón el valor de la clave no desplazada a
se devuelve como código de la llave 65. Pero 65 es una mayúscula en la tabla ASCII. Así que en algún momento el navegador está tomando la minúscula (código ASCII 97), transformándolo a mayúsculas A, después de pasarlo keydown/keyup
como el personaje no desplazada. Extraño, ¿no es así?
No estoy seguro si me gustaría llamar el comportamiento "raro", es sólo una convención. https://developer.mozilla.org/en/DOM/event.charCode toma nota de que el caso no es respetado por 'eventos keyCode'. Un 'keyCode' le indica qué tecla * se presionó, no el carácter que resulta de ella. Y como todas las letras están impresas en mayúscula en prácticamente todos los teclados, parece tener sentido usar la variante en mayúscula. Buena respuesta de lo contrario. :) – deceze