キーボード入力の検知
keydown keyup e.key e.code
キーボードイベントを検知して入力内容やショートカットキーを処理します。
デモ:キーボードイベントの検知
比較:e.key vs e.code
e.key は押されたキーの「値」、e.code は「物理的な位置」を表します。
| 押したキー | e.key | e.code |
|---|---|---|
| A | "a" | "KeyA" |
| Shift + A | "A" | "KeyA" |
| Enter | "Enter" | "Enter" |
| スペース | " " | "Space" |
| 数字の1(英キー) | "1" | "Digit1" |
💡 キーの「意味」で判断する場合は e.key、 物理位置で判断(ゲーム操作など)は e.code を使います。
コード例
js
document.addEventListener('keydown', (e) => {
// 特定キーの検知
if (e.key === 'Enter') console.log('Enter押下');
if (e.key === 'Escape') closeModal();
// ショートカットキー
if (e.ctrlKey && e.key === 's') {
e.preventDefault(); // ブラウザのデフォルト保存を抑制
save();
}
// Mac対応(Cmd + S)
if ((e.ctrlKey || e.metaKey) && e.key === 's') {
e.preventDefault();
save();
}
// 矢印キー
switch (e.code) {
case 'ArrowUp': move('up'); break;
case 'ArrowDown': move('down'); break;
case 'ArrowLeft': move('left'); break;
case 'ArrowRight': move('right'); break;
}
});
// keyup: キーを離したとき
document.addEventListener('keyup', (e) => {
if (e.key === 'Shift') setMultiSelect(false);
});
// ⚠️ keypress は非推奨(廃止予定)→ keydown を使う⚠️ keypress は非推奨
keypress イベントは非推奨となり、将来的に削除される予定です。代わりに keydown または input を使用してください。
js
// ❌ 非推奨
el.addEventListener('keypress', handler);
// ✅ 代替
el.addEventListener('keydown', handler); // キー押下の検知
el.addEventListener('input', handler); // 値の変更の検知🤖 AIプロンプトテンプレート
以下のようなキーボード入力処理のサンプルコードを生成してください: - keydownイベントでe.keyとe.codeを使った特定キーの検知 - Ctrl+S、Cmd+Sなどのショートカットキーの処理(e.preventDefault()含む) - 矢印キーによるフォーカス移動や要素操作 - e.shiftKey / e.ctrlKey / e.altKey / e.metaKeyの修飾キー判定 - keyupイベントを使ったキー離し検知の実装例
⚠️ このプロンプトはあくまでたたき台です。AIの回答はモデルやバージョン、会話の文脈によって毎回異なります。意図通りに動かない場合は、条件を追記・修正してお使いください。