Status22の秘密のフラグ

ここ1週間ほど、テンキー側の文字キーをどうにかしてフックできないものかと調べていましたが、分かったことをメモしておきます。

Ad[es]レジストリ「HKEY_CURRENT_USER\Software\Sharp\PhoneStatus\Status22」の値は、通常は0〜7を示し、キーボードが開いていると16ビット目のフラグ(0x00010000)が立っています(?)。


タイトルにも書いた秘密のフラグと言うのは8ビット目(0x00000100)の事です。
このフラグを立てると、なんと!
テンキー側の文字キーがAPP2を発行するではありませんか!
ついでにクリアキーもAPP1を発行するようになります。
これで文字キーのフックも万事解決・・・かと思いきや、そうはいかないのが現実。


8ビット目を立てると、何がどうしても縦画面で日本語が打てなくなりますorz
もう少し具体的に言うと、常に「_1」が選択されたような感じになり、数字しか打てなくなってしまいます。


ここからは妄想ですが、文字キーのデフォルトはAPP2で、テンキー自体も0x30(0ボタン)とか0x31(1ボタン)がデフォルトで、どこかで動いているプログラムがStatus22の値によってキーコードを発行しなおしてるか、もしくはそいつ自身がStatus22の値によってキーコードを発行させてるんじゃないかと思ってしまいます。
(OSの中身とかぜんぜん知らない人なので適当な事言ってるかも・・・)


なぜそう思ったかというと、Status22の値が0〜6の時と、値が7もしくは8ビット目が立っている時とでキーコードが発行されるタイミングが少し違うからです。

一番まともなタイミングで発行されるのが「_1」です。
キーを押した時にDownのコードが発行され、キーを離した時にUpのコードが発行されます。
他の「あ」や「_a」は、キーを押した時にDownとUpのコードが同時に出てきます。

このような違いがあったため、そのキーを発行しているプログラムを探し当てれば何とかフックできないかと思って調べていましたが、もうこれ以上分かりませんでした。
というか、そのアプリが分かったとしても私の知識の範囲ではどうすることもできないと気づいたのもあります。

以上、文字キーをフックしようとして失敗したシアノンがお送りいたしましたorz