キーボードからキー入力する場合、キーを押して(keydown)した後にキーを離して(keyup)、キー入力を確定させます。
この仕組みを踏まえ、keyup の瞬間に同時に入力されているキー全てを取得するイベントリスナを実現します。
"addholdkeyeventlistener.js" を外部スクリプトとして読み込めば、第一引数にDOMノードを指定する以外は addEventListener と同等の感覚で使えます。
- 第一引数 … ノード(
node) - 第二引数 … イベントハンドラ関数(
eventHandler) 又は イベントリスナーオブジェクト(lisetener) - 第三引数 … キャプチャリングフェーズを使用するか(
useCapture)
<script src="addholdkeyeventlistener.js"></script>
<script>
addHoldKeyEventListener(document, function (event) {
var keyCodes = event.keyCodes;
if (keyCodes.length === 1 & keyCodes[0] === 13) { // 同時に入力されたキーが [Enter] だけの場合
console.log(keyCodes[0]);
}
}
}
}, false);
</script>addEventListener と同様、第二引数にイベントリスナーオブジェクトを指定することが出来ます。
addHoldKeyEventListener(document, {i: 0, handleEvent: function (event) {
var keyCodes = event.keyCodes;
if (keyCodes.length === 1 & keyCodes[0] === 13) { // 同時に入力されたキーが [Enter] だけの場合
console.log(++this.i, keyCodes[0]);
}
}}, false);