VK_F

| コメント(0) | トラックバック(0)
時々Windowsのキーボードレイアウトドライバを弄っていますが、VK_F構造体(タグ名_VK_TO_FUNCTION_TABLE)の意味が何となくわかってきました。

# MSDNででも聞けば教えてくれるのでしょうが

NLSFEProcTypeがKBDNLS_TYPE_TOGGLEの場合、NLSFEProcSwitchが8ビットのフラグとしてNLSFEProc[8]の各状態に対応し、その組み合わせでキーが押されると、ビットが立っている状態に関してのみNLSFEProcAltと切り替わるようです。

NLSFEProcCurrentは初期状態をNLSFEProcかNLSFEProcAltのどちらにするか、でしょう。試していませんが2択なので変更する必要性もありません。

WDKのkbd106サンプルの場合、「英数」のNLSFEProcSwitchは2ですから、Shift同時押しでトグル動作です。
このShift同時押しでKBDNLS_SEND_PARAM_VKに従いVK_CAPITALを発行し、同時にNLSFEProcAlt側に切り替わります。次のShift同時押しはNLSFEProcAlt側が参照され、VK_CAPITAL発行と同時にNLSFEProcに戻ってくる、と。
NLSFEProcAltには同時押しのない単体(Base)にもVK_CAPITALが書かれていますが、発行されないことから、Shift同時押しだけが切り替わったものと考えられます。

「ひらがな」はNLSFEProcSwitchが8なのでShift+Ctrl同時押しが対応。VK_KANAと同時にNLSFEProcAltに切り替わり、同様に次にShift+Ctrl同時押しで戻ってきます。

ということに気付いたのは、無変換VK_KANAをKBDNLS_TYPE_TOGGLEで試している途中、NLSFEProcAlt側を全部KBDNLS_NULLのままにしていたら、戻って来られなくなったためですが(汗)。

しかしKBDNLS_TYPE_TOGGLEにしても、少なくともVK_KANAに関して御利益はないようで、相変わらずKEYUPまでON/OFFが変化しません。KEYDOWNで変化するのはCapsLock、NumLock、ScrollLockの特権のようです。

98配列USBキーボードでは、KEYDOWNで切り替えるためのフィルタドライバを別途用意していますが、この部分の書き方についてはまだ理解できていません。

トラックバック(0)

トラックバックURL: http://mychro.mydns.jp/cgi-bin/mt/mt-tb.cgi/149

コメントする

アーカイブ

ウェブページ

Powered by Movable Type 5.2.13

ホームページ