5

私は、C# と Visual Studio 2008 を使用して (さらに別のことを知っています) キーボード リマッパーを作成しています。

このガイドに従って、低レベルのキーの押下をスナップする方法を学びました。これは、キーボードの通常のアルファベット文字などを上書きするのに問題なく機能しますが、のように動作させるにはもう少し必要Caps LockなようCtrlです。

私の理解 (これは間違っているかもしれません) と はトグル キーであり、は単なる「通常の」キーであるため、Caps LockCtrlはまったく異なる方法で処理されます。Caps LockCtrl

ここで理解しようとしているのは、 を最も低いレベルでキーのCaps Lockように動作させるCtrl方法と、通常のCtrlキーをキーのように動作させる方法Caps Lockです。

ありがとう

4

1 に答える 1

2

Caps Lock の予期される状態を表すブール値を維持します。Caps Lock キーが押されたときに、システムのCaps Lock値を bool の値に戻します。がヒットするCtrlと、Caps Lock の予期される状態を切り替え、システムの Cap Lock 値を 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;

HookCallback (提供したリンクから) に特別なロジックを追加して、いつCtrlCaps Lockがヒットしたかを調べます。Caps Lock は lParam が の場合です&H14。Ctrl は lParam が の場合です&H11

システムのCaps Lock値を取得/設定するには:

http://social.msdn.microsoft.com/forums/en-US/csharpgeneral/thread/fb8308e5-7620-43cc-8ad8-be67d94708fa/

于 2009-08-29T10:20:01.023 に答える