.NET3.5におけるキーボードの「全角/半角」キーは、Keys列挙体の何に対応している?
.NETで,キーボード入力で,ユーザの全角/半角入力状態を識別して処理するために,
・(1)キーの全角/半角を押したか(瞬間)
・(2)キーの全角/半角を押している最中か(押しっぱなし状態)
・(3)キーの全角モードか,半角モードか(NumLockのように,トグルがON)
の3種類を識別したいです.
(真ん中は,あまり区別する必要は無いです.)
そこで,ぬるり様のグローバルフックキーボード
http://hongliang.seesaa.net/article/7539988.html
を使って,
「全角/半角」キーを調べているのですが,
実際にキーボードの上記キーを押すと,
Keys列挙体の名前が
「ControlKey, OemBackslash」 ⇔ 「D4, Oemtilde」
の(3)トグル状態が交互に切り替わり,
望んだ「全角/半角」キー認識ができません.
MSDNライブラリ
http://msdn.microsoft.com/ja-jp/library/system.windows.input.key.aspx
を見ると,
・D4 数字1キー
・OemBackslash OEM バックスラッシュ キー
・OemTilde OEM チルダ キー
をなっていますが,上記キーを押していないのにこれらのKeysが取得さrてしまいます.
なお,「ControlKey」や「ControlKey, ***」という名前は存在しないように思います.
また,
・KanaMode IME かなモード キー
・KanjiMode IME 漢字モード キー
などはあるのですが,
欲しい,全角/半角キーは見当たりません.
Keys列挙体で日本語キーボードの「全角/半角」キーを管理するには,
どのようにしたらよいのでしょうか?
また,これらの余分なキーのトグルは,なぜ起こるかわかりましたら,お教えいただけると幸いです.
ちなみに,環境は
OS: WindowXP,キーボード: DELL製の日本語キーボード
です.
他に必要な情報がありましたら丁寧にお答えいたします.
お礼
ありがとうございました。現状を理解できました。