キーボード操作を行ったときに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 |
コメントが承認されるまで時間がかかります。