キーボードからキー入力する場合、キーを押して(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);