Mã phím chữ trong JavaScript

Mỗi phím chữ với event.key, event.code và keyCode đã lỗi thời. keyCode của phím chữ là mã ASCII viết hoa, từ 65 (A) đến 90 (Z), dù bạn có giữ Shift hay không.

Cập nhật

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

Nhận biết phím chữ

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

So sánh e.key.toLowerCase() sẽ xử lý được cả Shift và Caps Lock. Với các phím điều khiển trong trò chơi cần giữ nguyên vị trí trên mọi bố cục, hãy so sánh e.code ("KeyW", "KeyA", "KeyS", "KeyD") thay thế.

Câu hỏi thường gặp

event.key của phím chữ là viết hoa hay viết thường?
Phím chữ phụ thuộc vào Shift và Caps Lock: event.key thường là “a” và là “A” khi giữ Shift. event.code luôn là KeyA trong cả hai trường hợp.
Mã phím có thay đổi theo bố cục bàn phím không?
event.key thay đổi theo bố cục (trên bàn phím AZERTY tiếng Pháp, vị trí phím A sẽ gõ ra Q); event.code luôn chỉ tên của phím vật lý.
Có nên vẫn dùng keyCode không?
Không — keyCode đã lỗi thời. Hãy dùng event.key cho ký tự và event.code cho vị trí phím.