JavaScript
キーイベント
75
どのような問題がありますか?

この記事は最終更新日から1年以上が経過しています。

投稿日

更新日

JavaScriptのキーボードイベント、キー判定にどれつかう?

概要

ブラウザxJavaScriptで扱うキーボードイベント、キー判定にどのプロパティを使うかのまとめ です

ざっくりいうと event.key または event.code のどちらかを使うべし

  • 「●●が押されたら」のような判定をしたいときは event.key または event.code のどちらかで判定する。
  • キー判定には、いろんなプロパティがあって、どれ使ったらいいの?と悩むことがある
  • 以前ふつうにつかっていた event.keyCode等はdeprecatedになっている
キー取得方法 ステータス 概要 参考
event.key オススメ
(正確にはWD)
キー属性値≒入力された文字 を取得する
・例えば、フルキーボードの5でもNumPadの5でもevent.keyで取得されるのは"5"
・ロケールやシステムレベルキーマップの影響を受ける
W3C
event.code オススメ
(正確にはWD)
物理キーを取得する。
・5を押した場合、フルキーボードの5(Digit5)とNumPadの5(NumPad5)は区別される
・上位のキーマップの影響は受けない。
・IEは対象外 Key Codes for Standard Keyboards
W3C
event.keyCode Deprecated
(今後は使わん)
キーコードを数値で取得する
・ロケールやシステムレベルキーマップの影響を受ける
MDN
event.which Deprecated
(今後は使わん)
キーコードを数値で取得する
・event.keyCodeと同じ
MDN
event.keyIdentifier Deprecated
(今後は使わん)
"key identifier"文字列を取得する
・標準ではない→同様の機能をもつevent.keyを使う
MDN
event.charCode Deprecated
(今後は使わん)
キーコード値(unicode)を取得する
・標準ではない
MDN

修飾キー

キー状態取得方法 概要
event.ctrlKey boolean ctrl(command)キーが押されているか否か
event.shiftKey boolean shiftキーが押されているか否か
event.altKey boolean altキーが押されているか否か
event.metaKey boolean metaキーが押されているか否か

サンプルコード

Ctrl+Vを検出するサンプル

document.body.addEventListener('keydown',
    event => {
        if (event.key === 'v' && event.ctrlKey) {
           alert("Ctrl+Vが押されました")
        }
    });

新規登録して、もっと便利にQiitaを使ってみよう

  1. あなたにマッチした記事をお届けします
  2. 便利な情報をあとで効率的に読み返せます
ログインすると使える機能について
riversun
UX producer and Full-Stack developer with more than 15 years of experience.

コメント

この記事にコメントはありません。
あなたもコメントしてみませんか :)
新規登録
すでにアカウントを持っている方はログイン
75
どのような問題がありますか?
新規登録して、Qiitaをもっと便利に使ってみませんか

この機能を利用するにはログインする必要があります。ログインするとさらに下記の機能が使えます。

  1. ユーザーやタグのフォロー機能であなたにマッチした記事をお届け
  2. ストック機能で便利な情報を後から効率的に読み返せる
新規登録ログイン
ストックするカテゴリー