C#を使用してCtrlでCapsロックをオーバーライドする
質問
私は書いています (さらに別の, 、私は知っている)C#とVisual Studio 2008を使用したキーボードリメッパー。
私はついていきます このガイド 低レベルのキープレスをスナップする方法を学ぶため。これは、キーボードの通常のアルファベット順の文字を無効にするためにうまく機能しますが、私はもう少し作るのにもう少し必要なようです キャップスロック のように振る舞う Ctrl.
私の理解(間違っているかもしれません)は キャップスロック と Ctrl それ以来、互いに完全に異なる処理が行われます キャップスロック 一方、切り替えキーです Ctrl 「通常の」ものです。
だから私がここで理解しようとしているのはどのように作るかです キャップスロック のように振る舞う Ctrl 非常に低いレベルのキーと通常のものを作る方法 Ctrl キーはaのように行動します キャップスロック 鍵。
ありがとう
解決
キャップロックの予想される状態を表すブールを維持します。 Caps Lockキーがヒットしたら、システムを設定します キャップスロック 価値に戻ります。いつ Ctrl ヒットし、キャップロックの予想される状態を切り替え、システムのキャップロック値をBoolの値に設定します。
以下を使用して、最初の予想される状態を設定します。
[DllImport("user32.dll", CharSet=CharSet.Auto, ExactSpelling=true, CallingConvention=CallingConvention.Winapi)]
public static extern short GetKeyState(int keyCode);
bool CapsLock = (((ushort)GetKeyState(0x14)) & 0xffff) != 0;
fookcallback(提供したリンクから)に特別なロジックを追加する Ctrl と キャップスロック ヒットします。キャップロックは、LPARAMの場合です &H14
. 。 CtrlはLPARAMの場合です &H11
.
システムを取得/設定します キャップスロック 価値:
所属していません StackOverflow