Коды клавиш букв в JavaScript

Каждая буквенная клавиша с её event.key, event.code и устаревшим keyCode. Для букв keyCode — это ASCII-код в верхнем регистре, от 65 (A) до 90 (Z), независимо от того, зажат ли Shift.

Обновлено

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

Определение буквы

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

Сравнение e.key.toLowerCase() учитывает Shift и Caps Lock. Для игровых элементов управления, которые должны оставаться на одном месте на любой раскладке, сравнивайте e.code ("KeyW", "KeyA", "KeyS", "KeyD").

Часто задаваемые вопросы

Меняется ли event.key для букв в верхний регистр?
Буквы следуют за Shift и Caps Lock: event.key обычно равен “a”, а при Shift — “A”. event.code в обоих случаях остаётся KeyA.
Меняются ли коды клавиш в зависимости от раскладки?
event.key меняется вместе с раскладкой (на французской AZERTY клавиша на месте A выводит Q); event.code всегда называет физическую клавишу.
Нужно ли по-прежнему использовать keyCode?
Нет, он устарел. Используйте event.key для символов и event.code для позиций клавиш.