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

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

もずはっく日記(2016年3月)

2016年3月24日

Bug-org 1258153 Alt codes to input unicode is broken
初回投稿日時: 2016年10月15日22時39分36秒
最終更新日時: 2016年10月15日22時40分49秒
カテゴリ: KeyboardEvent Mozilla Core Mozilla48 Windows バグ修正
SNS: (list)

日本ではあまり有名な機能では無いように思うのですが、Windowsでは、Altキーを押しながら、テンキーでUnicodeのコードポイントを4桁で入力して、Altキーを離すと、そのコードポイントの文字が入力されます。しかし、これが、regressionにより機能しなくなっているというバグです。

Bug-org 1137561の修正によるregressionと思われますが、はっきりはしません。

この入力を行ったときに以下のようにメッセージが発行されます。

  1. WM_SYSKEYDOWN (wParamVK_MENU)
  2. WM_SYSKEYDOWNWM_SYSKEYUPが4セット
  3. WM_SYSKEYUP (wParamVK_MENU)
  4. WM_CHAR (wParamは入力されたUnicode文字、lParamのスキャンコードはAltキーのもの)

そして、最後のWM_CHARがスキャンコードから、"Alt"キーとして処理されていました。このため、何の文字も入力されていませんでした。

今回の修正では、NativeKeyWM_CHARの受信によって生成されていた場合、KeyboardLayout::InitNativeKey()はキーボードレイアウトの情報を利用せず、WM_CHARの内容でNativeKeyを初期化するようにしました。

関連するかもしれないエントリ

bug-org 1258153を含むエントリ