Codes des touches lettres en JavaScript

Chaque touche de lettre avec son event.key, son event.code et son keyCode obsolète. Le keyCode des lettres correspond au code ASCII en majuscules, de 65 (A) à 90 (Z), que Maj soit enfoncée ou non.

Mis à jour le

Toucheevent.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

Détecter une lettre

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

Comparer e.key.toLowerCase() gère Maj et Verr. Maj. Pour les commandes de jeu qui doivent rester à la même place quel que soit le clavier, comparez plutôt e.code ("KeyW", "KeyA", "KeyS", "KeyD").

Questions fréquentes

event.key est-il en majuscule ou en minuscule pour une lettre ?
Les lettres suivent Maj et Verr. Maj : event.key vaut « a » normalement et « A » avec Maj. event.code reste KeyA dans les deux cas.
Les codes de touches changent-ils selon la disposition du clavier ?
event.key change avec la disposition (sur un clavier AZERTY français, la position A saisit Q) ; event.code désigne toujours la touche physique.
Faut-il encore utiliser keyCode ?
Non, il est obsolète. Utilisez event.key pour les caractères et event.code pour les positions.