質問: ブラウザの Edge で JavaScript でキー入力を受け取る時、 たまにタイミングがおかしくなるのは気のせいなのでしょうか? 一番わかりやすい例だと、方向キーの右を押しっぱなしにして、 方向キーの上を押したり離したりすると、押したタイミングが0.5秒くらい遅くなることがあります。 他にも、押したこと自体が認識されなかったり、 もう離したキーが押しっぱなしと見做されてしまったりします。 単純に onkeydown と onkeyup でキーイベントを受け取ってフラグを書き換え、 各キーのフラグを setInterval で20ミリ秒の間隔で canvas に描画するだけのプログラムでテストしてます。 他のページでも同様の現象が発生しました。 (というより、それで気づいて調べてしてみたんです) このような現象について、何かご存知の方はいらっしゃいませんか?
回答: ブラウザやJavascriptの問題ではなくハードウエアやOS関係の仕様かと思います。 キーボードの機能(仕様)に下記の2つがあります。 ・押しっぱなしにした際に連打した時と同じ動作にする。(ドライバやBIOSによっては連打間隔を変更できる) ・キー入力の受付処理の速度より早くキーが連続して入力された場合、入力をバッファに貯めて順次入力の受付処理を行う。(バッファのサイズはアプリや環境等で大小の差がかなりある) 「入力がアプリケーションの速度を超えた為、遅れてキーボードバッファーから入力されている状態」が質問の状態と思われます。