Códigos de teclas para eventos en JavaScript
La versión de 2018 de este artículo enlazaba dos tablas de códigos numéricos de teclas. Una de ellas, la de yoelprogramador.com, ya no responde. La otra, keycode.info, ahora redirige a Toptal y sigue funcionando: pulsas una tecla y te enseña sus valores. Es como un afinador: no hace falta saberse los valores de memoria, basta con pulsar y leer.
Lo que sí ha cambiado es qué valor conviene usar.
key, code y keyCode
Piensa en un teclado como un piano. code es la posición de la tecla en el piano; key es la nota que suena. Si alguien cambia la afinación (la distribución del teclado), la tecla sigue en el mismo sitio, pero suena otra nota.
| Propiedad | Qué te dice | Ejemplo al pulsar A | ¿Se usa hoy? |
|---|---|---|---|
event.key |
El carácter o la acción | "a" (o "A" con Shift) |
Sí |
event.code |
La tecla física | "KeyA" |
Sí |
event.keyCode |
Un número que depende del navegador | 65 |
No, obsoleto |
event.which |
Igual que keyCode |
65 |
No, obsoleto |
Usa key cuando te importa lo que escribe la persona, por ejemplo Enter para enviar un formulario. Usa code cuando te importa la posición, por ejemplo las teclas W A S D de un juego, que en un teclado francés están en otro sitio pero deben mover igual.
document.addEventListener('keydown', (event) => {
if (event.key === 'Enter') {
console.log('Enviar'); // lo que la persona quiere hacer
}
if (event.code === 'KeyW') {
console.log('Avanzar'); // la tecla física, sea cual sea la distribución
}
});
Valores habituales
| Tecla | event.key |
event.code |
keyCode antiguo |
|---|---|---|---|
| Enter | "Enter" |
"Enter" |
13 |
| Esc | "Escape" |
"Escape" |
27 |
| Espacio | " " |
"Space" |
32 |
| Tab | "Tab" |
"Tab" |
9 |
| Retroceso | "Backspace" |
"Backspace" |
8 |
| ↑ ↓ ← → | "ArrowUp", "ArrowDown", "ArrowLeft", "ArrowRight" |
Igual que key |
38, 40, 37, 39 |
| Shift | "Shift" |
"ShiftLeft" o "ShiftRight" |
16 |
| Ctrl | "Control" |
"ControlLeft" o "ControlRight" |
17 |
| 1 (fila superior) | "1" |
"Digit1" |
49 |
La columna de keyCode está para que reconozcas el código antiguo cuando lo encuentres, no para que lo escribas.
Dónde consultar el resto
| Recurso | Para qué | Idioma |
|---|---|---|
| JavaScript Key Code Event Tool (antes keycode.info) | Pulsar una tecla y ver sus valores al momento | Inglés |
Valores de key en MDN |
La lista completa de nombres de teclas especiales ("PageDown", "F5", "Delete"…) |
Inglés |
Valores de code en MDN |
Qué code envía cada tecla física en cada sistema operativo |
Inglés |
Si encuentras keyCode en código heredado, cámbialo por key o code y comprueba el resultado con la herramienta de Toptal antes de dar el cambio por bueno.
Para combinaciones como Ctrl + S, comprueba event.ctrlKey (o event.metaKey en Mac) junto con event.key === 's'. Si te interesan los atajos de un editor, tienes los de IntelliJ IDEA.
Fuentes
Comprobado el 7 de noviembre de 2026:
- MDN: KeyboardEvent.keyCode (marcado como obsoleto, recomienda
keyycode), KeyboardEvent.key, KeyboardEvent.code y keypress. - MDN: Keyboard event key values y Keyboard event code values.
- JavaScript Key Code Event Tool, destino actual de keycode.info (redirección comprobada con curl). yoelprogramador.com no respondía el 7 de noviembre de 2026.
- El ejemplo usa la API del navegador y no se ha ejecutado en Node; los valores de la tabla son los de la documentación de MDN.