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

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

もずはっく日記(2012年5月)

2012年5月24日

Bug-org 677252 Reimplement keycode computation in cocoa widget
初回投稿日時: 2012年05月24日13時47分31秒
最終更新日時: 2012年05月24日13時53分26秒
カテゴリ: Mozilla15 バグ修正
SNS: (list)

Keycode ReimplementationのMac版です。

Mac版は以下のルールでkeyCodeの値を決定します。

  1. 文字入力のためのキーでは無い場合、Macのネイティブイベントのキーコードから対応するキーのDOMキーコードを用いる
  2. Macのネイティブイベントのキーコードが0から9のキーであることを示す場合、これに対応したDOMキーコードを用いる
  3. それ以外の文字入力可能なキーの場合、shiftキー、optionキー無しで入力される文字がASCII文字ならそれにあったDOMキーコードを用いる
  4. もし、その文字がASCII文字ではなかった場合、shiftキーを押した際に入力される文字がASCII文字ならそれにあったDOMキーコードを用いる
  5. もし、そのキーボードレイアウトがASCIIアルファベットを入力可能なレイアウトだった場合(具体的に言うと、kTISPropertyInputSourceIsASCIICapableプロパティがtrueの場合)、DOMキーコードは0とする
  6. それ以外の場合、その時のASCIIアルファベット入力可能なキーボードレイアウト(具体的に言うとTISCopyCurrentASCIICapableKeyboardLayoutInputSource()で返されるキーボードレイアウト)で、そのキーがASCIIアルファベットか、ASCIIの数字を入力可能な場合、それにあったDOMキーコードを用いる
  7. それ以外の場合は0とする

ASCIIアルファベットを直接入力できないキーボードレイアウトの場合(例えばアラビア語、ヘブライ語、キリル文字、タイ語等)がWindowsより複雑です。

Macの日本語版キーボードには英数キーが存在していますが、この挙動がことえりをはじめ、MacのIMEはかなキーと対になっています。ですが、かなキーにはDOMキーコードが割り当てられていますが、英数キーには割り当てられていなかったので、新たにDOM_KEY_EISUという値を定義してマッピングしています。ちなみに、動作が違うのでWindowsの英数キーはこのキーコードを返すようには修正していません。

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

bug-org 677252を含むエントリ