Bug-org 677252 Reimplement keycode computation in cocoa widget
初回投稿日時: 2012年05月24日13時47分31秒
最終更新日時: 2012年05月24日13時53分26秒
カテゴリ: Mozilla15 バグ修正
SNS:
Tweet (list)
Keycode ReimplementationのMac版です。
Mac版は以下のルールでkeyCode
の値を決定します。
- 文字入力のためのキーでは無い場合、Macのネイティブイベントのキーコードから対応するキーのDOMキーコードを用いる
- Macのネイティブイベントのキーコードが0から9のキーであることを示す場合、これに対応したDOMキーコードを用いる
- それ以外の文字入力可能なキーの場合、shiftキー、optionキー無しで入力される文字がASCII文字ならそれにあったDOMキーコードを用いる
- もし、その文字がASCII文字ではなかった場合、shiftキーを押した際に入力される文字がASCII文字ならそれにあったDOMキーコードを用いる
- もし、そのキーボードレイアウトがASCIIアルファベットを入力可能なレイアウトだった場合(具体的に言うと、
kTISPropertyInputSourceIsASCIICapable
プロパティがtrue
の場合)、DOMキーコードは0とする - それ以外の場合、その時のASCIIアルファベット入力可能なキーボードレイアウト(具体的に言うと
TISCopyCurrentASCIICapableKeyboardLayoutInputSource()
で返されるキーボードレイアウト)で、そのキーがASCIIアルファベットか、ASCIIの数字を入力可能な場合、それにあったDOMキーコードを用いる - それ以外の場合は0とする
ASCIIアルファベットを直接入力できないキーボードレイアウトの場合(例えばアラビア語、ヘブライ語、キリル文字、タイ語等)がWindowsより複雑です。
Macの日本語版キーボードには英数キーが存在していますが、この挙動がことえりをはじめ、MacのIMEはかなキーと対になっています。ですが、かなキーにはDOMキーコードが割り当てられていますが、英数キーには割り当てられていなかったので、新たにDOM_KEY_EISU
という値を定義してマッピングしています。ちなみに、動作が違うのでWindowsの英数キーはこのキーコードを返すようには修正していません。