この日記はMozillaのプロダクトへの貢献者としての私の成果を中心に、気になったバグやWeb界隈の話題について書いていますが、 断り書きがある場合を除き、いかなる団体のオフィシャルな見解ではありません。あくまでも個人的なものです。 Mozilla Foundation、Mozilla Corporation、及び関連企業の公式情報ではないことに注意してください。

現在、XHTML 1.0 (もどき)から、HTML5なコンテンツに修正中です。古い日記は修正が完了していませんので表示が崩れます。 順次、修正していく予定ですのでしばらくお待ちください。

もずはっく日記(2013年6月)

2013年6月30日

Bug-org 865565 D3E KeyboardEvent.key values of IME related keys should be considered with keyboard layout locale 初回投稿日時: 2013年06月30日20時01分28秒
最終更新日時: 2013年06月30日20時02分35秒
カテゴリ: Events IE Mozilla Core Mozilla25 Windows バグ修正
固定リンク: id=2013063000
SNS: (list)

Windowsでは、日本語のキーボードと、ハングルキーボードの、IMEのキーの一部で、仮想キーコードをシェアしているので、単純な変換ではDOM Level 3 Eventsの仕様が望むようなKeyboardEvent.key値が得られません。

このバグの修正では、キーボードレイアウトのロケールから、以下のようにキーがマッピングされるようになりました。

IME関連キーの仮想キーコードと、DOM Level 3 Eventsのマッピングテーブル
キーボード仮想キーコード物理キーMozilla 25IE 10
日本語VK_OEM_ENLW半角/全角 漢字"FullWidth""Unidentified"
VK_OEM_AUTO半角/全角 漢字"HalfWidth""Unidentified"
VK_KANJIAlt+半角/全角 漢字"KanjiMode""KanjiMode"
VK_OEM_COPYカタカナ ひらがな ローマ字"Hiragana""Unidentified"
VK_OEM_FINISHShift+カタカナ ひらがな ローマ字"Katakana""Unidentified"
VK_ATTNAlt+カタカナ ひらがな ローマ字"KanaMode""Attn"
VK_OEM_BACKTABAlt+カタカナ ひらがな ローマ字"RomanCharacters""Unidentified"
VK_KANA不明"KanaMode""KanaMode"
VK_OEM_ATTNCaps Lock 英数"Alphanumeric""Unidentified"
ハングルVK_HANGUL한/영"HangulMode""Unidentified"
VK_HANJA한자"HanjaMode""Unidentified"
その他VK_ATTN不明"Attn""Attn"
VK_ATTN以外の上記コード不明"Unidentified"不明

"FullWidth""HalfWidth"といったキーに関しては、実際の物理キーの操作と、イベントの関係が異なっています。内部で、全角や半角といった状態を保持していて、例えば、半角モードになる際に、"FullWidth"等、解除されるモードのkeyupイベントが発生し、"HalfWidth"keydownイベントが発生します。このあたりの動作は、Windows固有のもので、他のOSとの互換性はありませんが、これはOSの仕様に依存する問題ですので、プラットフォーム間での動作の統一は今後も予定はありません。