状況:どのキーが押されたかを示すかなり標準的なkeydown
ハンドラーがありますが、いずれかのキーを押したままにすると、(キーが実際に押されたときに 1 回だけではなく) 繰り返し発生します。switch
keydown
なぜ問題なのか: リスナーをアクティブに保ちたいkeydown
、つまり、一度に複数のキーが押されたことを検出できるようにしたいのですが、イベントは 1 回につき 1 回だけ発生させkeydown
ます。keyup
ダウンとアップの間の時間に基づいてそのために何かをしたいのですkeyCode
が、そのタイミングは複数回の発火のために台無しになっています.
私が試したこと:現在、ダウンしているリストを保持しており、リストにある場合にデフォルトの動作が発生しないように、ハンドラー内のリストkeyCodes
をチェックしています。ただし、イベントは依然として非常に頻繁に発生しており、このソリューションの効率/優雅さが心配です。keydown
keyCode
実際の質問:キーが物理的に押し下げられたときだけkeydown
にイベントの発生を制限したり、特定のキーコードのみをリッスンしたりする良い方法はありますか?