Códigos de tecla das letras em JavaScript

Cada tecla de letra com seu event.key, event.code e o keyCode obsoleto. O keyCode das letras é o código ASCII maiúsculo, de 65 (A) a 90 (Z), com ou sem Shift pressionado.

Atualizado em

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

Detectando uma letra

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

Comparar e.key.toLowerCase() lida com Shift e Caps Lock. Para controles de jogos que devem ficar no mesmo lugar em qualquer layout, compare e.code ("KeyW", "KeyA", "KeyS", "KeyD") em vez disso.

Perguntas frequentes

O event.key de letra é maiúsculo ou minúsculo?
As letras seguem Shift e Caps Lock: o event.key é “a” normalmente e “A” com Shift. O event.code continua sendo KeyA em ambos os casos.
Os códigos de tecla mudam com o layout do teclado?
O event.key muda com o layout (em um teclado AZERTY francês, a posição A digita Q); o event.code sempre nomeia a tecla física.
Ainda devo usar o keyCode?
Não — ele está obsoleto. Use event.key para caracteres e event.code para posições.