2021年7月19日月曜日

JavaScript の keydown は OS で動作が異なる

JavaScript の keydown は OS で動作が異なることに気付きました。 昔は色々と動作が違っていたのは知っているのですが、最近はもう大丈夫だろうと思い込んでました。

1. イベントの発生状態の違い

ほとんどの OS では、例えば Shift キーなどを押しっぱなしにしているとき、keydown イベントが呼ばれ続けます。 でも Linux だけは、最初に押された時しか呼ばれません。 Linux では Chrome も Firefox も最初に押された時しか反応しないので、 どうやらこれは OS の動作の違いなのだとわかりました。

2. キーボード配列の考慮レベルの違い

keydown で取得できる英語の記号文字は、Firefox では使用しているキーボードの配列に準拠したものが取得できます。 しかし Chrome では Linux / Android で英語キーボードのものになってしまいます。 たとえば日本語キーボードで「"」を押しても「@」が返却されます。 イベントの発生状態はまだしも、これはめちゃくちゃ困るのでバグみを感じます。

タイピングゲームを作ってると地味に影響あります。 最近は気になることはだいぶ減りましたが、まだまだ完璧な互換性はないんだなあ。 そして情報がない。

0 件のコメント: