Bug-org 1126673 Enable KeyboardEvent.code in default settings of release build
初回投稿日時: 2015年02月21日21時07分16秒
最終更新日時: 2015年02月21日21時14分44秒
カテゴリ: Events Mozilla Core Mozilla38 バグ修正
SNS:
Tweet (list)
Sunキーボードの問題が解決し、特に互換性等で問題になる可能性のある話も今のところ無いので、リリースビルドでもようやく、KeyboardEvent.code
を有効化しました。
重ね重ね警告しておきますが、KeyboardEvent.code
は、キーボード上の物理キーの位置を確認するためのものです。このため、ユーザが本当にPCのキーボードで操作している時にしか区別が付きませんし、WindowsやMacでは、OSがサポートしていないキーに関しては、値が空文字列、もしくはキーイベント自体が発生しない、ということになります。以下に、違いをまとめておきます。
属性 | 値の意味 | モディファイアキーの状態に依存 | OSのキーボードレイアウト設定に依存 |
---|---|---|---|
KeyboardEvent.key |
ユーザがそのキーを押したことで期待している効果。テキストを入力するキーの場合、 入力される文字がそのまま入っており、それ以外の場合は、キー固有の名前が入る。 | する | する |
KeyboardEvent.code |
ユーザが押した物理キーのID。ソフトウェアキーボードを含む、 他のアプリから生成されたキーイベントの場合、空文字列のこともある(生成元に依存)。 | しない(ただし、ハードウェアレベルのモディファイアキー、Fnキー等は例外) | しない |
KeyboardEvent.keyCode |
ユーザが押したキーを示す意味の無い数値。 元々はIEがWindowsの仮想キーコードをそのまま設定していたものなので、 ブラウザによって値の解釈や定義が異なる。特に、非Windows環境での互換性は皆無。 | テキスト入力キーでは非依存、それ以外のキーは依存 | する |
KeyboardEvent.charCode |
ユーザが押したキーで入力される文字のUnicode値(UTF-16?)。
KeyboardEvent.keyCode に比べると互換性が高い。 |
する | する |
現在、KeyboardEvent
の実装はGeckoが最も最新仕様に準拠していて、実装している機能も最も多いので、これをリファレンスに研究してもらえれれば良いかと思います(他のブラウザが互換性の高い実装が可能なように、詳細な技術情報はMDNで公開し、W3CのワーキンググループのMicrosoftとGoogleの方々も把握しています)。
KeyboardEvent.key
がほとんどの処理ではユーザの期待する結果を表しています。ただし、これを利用する際には、仕様の変化に簡単に対応できるようにするために、コーディングに一手間かけることをお勧めします。
それに対して、KeyboardEvent.code
は、例えばゲームで、W、S、A、Dのキーを、上下左右の十字キーの変わりとして用いる場合に、ユーザが選択しているキーボードレイアウトに関係無く処理できるのが特徴です。QWERTYでも、AZERTYでも、Dvorakでも、同じキーからは同じ値が取得可能なわけです。キーの位置に意味がある操作の処理にのみ、有用でしょう。