code y keyCode de 120 teclas
Los valores que entrega un KeyboardEvent. code es la posición física y no cambia con la distribución; key es lo que se escribe, y eso sí cambia.
code frente a key
code es la posición física, igual en un teclado coreano o francés. key es lo que se escribe y cambia: el mismo sitio da a, A o ㅁ. Usa code para saber qué sitio se pulsó y key para saber qué se escribió.
keyCode quedó fuera del estándar. Escribe código nuevo con code o key; los números de aquí sirven para leer código antiguo.
Letras26
La posición está fijada como KeyA. Aunque se escriba un ㅁ coreano, el code sigue siendo KeyA.
Dígitos10
La fila de números. Sus keyCode difieren de los mismos dígitos del teclado numérico.
Signos12
Aquí es donde los valores de keyCode se separan entre navegadores.
Teclado numérico16
location vale 3, y eso lo distingue de la fila de números.
Teclas F20
F1 es 112, F2 es 113, y así en orden.
Navegación8
No escriben nada; solo mueven el cursor.
Edición6
Borrar, insertar, saltar de línea.
Modificadoras8
Solas no hacen nada y se montan sobre otras. Izquierda y derecha comparten keyCode.
Bloqueos3
Se pulsan una vez y el estado queda cambiado.
Sistema4
Teclas que tratan con ventanas y pantalla.
Método de entrada7
Teclas que cambian el método de entrada: hangul, hanja y las de conversión japonesa.
Cómo leerlo
- code es la posición y key el carácter escrito. Para atajos, compara con code.
- keyCode está obsoleto; úsalo solo para leer código antiguo.
- Shift izquierdo y derecho comparten keyCode y se distinguen por location.
- El 1 de la fila y el 1 del teclado numérico son teclas distintas: 49 y 97.
Preguntas frecuentes
Q. ¿Debo usar code o key?
code cuando necesitas la posición, como en los atajos; key cuando necesitas lo que se escribió. code sobrevive a un cambio de distribución.
Q. ¿Por qué evitar keyCode?
Se retiró del estándar y los navegadores no coinciden en los valores, sobre todo en los signos.
Q. ¿Cuál es el código de Enter?
keyCode 13, code Enter. El Enter del teclado numérico tiene code NumpadEnter pero el mismo keyCode 13.
Q. ¿Cómo distingo Shift izquierdo de derecho?
Por keyCode no: ambos son 16. Usa code (ShiftLeft, ShiftRight) o location (1, 2).
Q. ¿El code es igual en un teclado coreano?
Sí. Pulsar el sitio que escribe ㅁ sigue dando KeyA, porque code nombra la posición.