0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Vue でコントロールキーなどの押下を判定する。

Posted at

Vue でコントロールキーなどの押下を判定する。

下のような感じでリスナーを登録

  data() {
    return {
      keyCode: [], // 押されたキーコードの配列

    },
  },
  methods: {

    /**
     * キーが押されたら呼ばれる
     * @param Object event イベント
     */
    onKeyDown(event) {
      // 配列に値がなければ
      if (-1 == this.keyCode.indexOf(event.keyCode)) {
        this.keyCode.push(event.keyCode); // キーコードを追加
      }
    },
    /**
     * キーが離されたら呼ばれる
     * @param Object event イベント
     */
    onKeyUp(event) {
      i = this.keyCode.indexOf(event.keyCode);
      if (i != -1) { // 配列にキーコードがあれば
        this.keyCode.splice(i, 1); // その要素を削除
      }
    },

  },

  mounted() {
    // イベントリスナーの登録
    document.addEventListener('keydown', this.onKeyDown);
    document.addEventListener('keyup', this.onKeyUp);
  },

  beforeDestroy() {
    // イベントリスナーの削除
    document.removeEventListener('keydown', this.onKeyDown);
    document.removeEventListener('keyup', this.onKeyUp);
  },
  // 使用例
  if (this.keyCode.indexOf(16) != -1
   && this.keyCode.indexOf(17) != -1) {
    // Shift と Ctrl が同時に押されている。

  } else {
    // Shift と Ctrl が同時に押されていない。

  }

キーコード一覧

キー コード キー コード キー コード キー コード
F1 112 BackSpace 8 End 35 英数 240
F2 113 NumLockOFFのT5 12 Home 36 カタカナ/ひらがな 242
F3 114 Enter / T Enter 13 37 Esc 243
F4 115 Shift 16 38 半角/全角 244
F5 116 Ctrl 17 39 Tab 9
F6 117 Alt / Option 18 40
F7 118 Pause 19 Insert 45
F8 119 変換 28 Delete 46
F9 120 無変換 29 Win / ⌘ 91
F10 121 スペース 32 Apps 93
F11 122 PageUp 33 NumLock 144
F12 123 PageDown 34 ScrollLock 145
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?