キーボード操作を行ったときにJavaScriptで何らかの処理を行うとき、キーの判別をどのようにすればいいかで少し迷うことがあったので、調べたことをメモ。
サンプルコード
過去によく使われていた「event.keyCode」は非推奨になっているため、event.keyかevent.codeのどちらかを使用します。
event.keyの場合はユーザーの入力したキーの値を、event.codeの場合はユーザーの入力した物理的なキーを返します。
例えばキーボード上のEnterキーを押した場合、event.keyとevent.codeはどちらも「Enter」を返しますが、テンキーのEnterキーを押した場合、event.keyは「Enter」、event.codeは「NumpadEnter」を返します。
実際に挙動を試してみます。
document.body.addEventListener('keydown', function(event) {
  console.log('key:', event.key);
  console.log('code:', event.code);
});
event.keyとevent.codeの動作確認のデモページ
Windows環境でいくつか試してみた結果は以下の通りです。
| event.key | event.code | |
|---|---|---|
| キーボードの「a」 | a | KeyA | 
| キーボードの「1」 | 1 | Digit1 | 
| テンキーの「1」 | 1 | Numpad1 | 
| 左のShift | Shift | ShiftLeft | 
| 右のCTRL | Control | ControlRight | 
| 左のAlt | Alt | AltLeft | 
| 上キー | ArrowUp | ArrowUp | 
| Num Lock中のテンキーの「8」 | ArrowUp | Numpad8 | 
| HOMEキー | Home | Home | 
| PageDownキー | PageDown | PageDown | 
| バックスペース | Backspace | Backspace | 
| Deleteキー | Delete | Delete | 

コメントが承認されるまで時間がかかります。