Códigos de tecla de letras en JavaScript

Cada tecla de letra con su event.key, event.code y el keyCode obsoleto. El keyCode de las letras es el código ASCII en mayúsculas, de 65 (A) a 90 (Z), tanto si mantienes Shift como si no.

Actualizado el

Teclaevent.keyevent.codekeyCode
Aa / AKeyA65
Bb / BKeyB66
Cc / CKeyC67
Dd / DKeyD68
Ee / EKeyE69
Ff / FKeyF70
Gg / GKeyG71
Hh / HKeyH72
Ii / IKeyI73
Jj / JKeyJ74
Kk / KKeyK75
Ll / LKeyL76
Mm / MKeyM77
Nn / NKeyN78
Oo / OKeyO79
Pp / PKeyP80
Qq / QKeyQ81
Rr / RKeyR82
Ss / SKeyS83
Tt / TKeyT84
Uu / UKeyU85
Vv / VKeyV86
Ww / WKeyW87
Xx / XKeyX88
Yy / YKeyY89
Zz / ZKeyZ90

Detectar una letra

document.addEventListener('keydown', (e) => {
  if (e.key.toLowerCase() === 's' && (e.ctrlKey || e.metaKey)) {
    e.preventDefault(); // Ctrl/Cmd + S
    save();
  }
});

Comparar e.key.toLowerCase() tiene en cuenta Shift y Bloq Mayús. Para los controles de juego que deben mantenerse en el mismo sitio en cualquier distribución, compara e.code ("KeyW", "KeyA", "KeyS", "KeyD") en su lugar.

Preguntas frecuentes

¿Es event.key en mayúscula o minúscula para las letras?
Las letras siguen a Shift y Bloq Mayús: event.key es “a” normalmente y “A” con Shift. event.code sigue siendo KeyA en ambos casos.
¿Los códigos de tecla cambian con la distribución del teclado?
event.key cambia según la distribución (en un teclado AZERTY francés, la posición A escribe Q); event.code siempre nombra la tecla física.
¿Sigo debiendo usar keyCode?
No, está obsoleto. Usa event.key para los caracteres y event.code para las posiciones.