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