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 |