我正在使用C#和Visual Studio 2008编写(又一个,我知道)键盘重映射器。
我跟着this guide学习如何抢购低级按键。这适用于覆盖,例如键盘上的正常字母字符,但我似乎还需要更多一点来使 Caps Lock 像 Ctrl 一样。
我的理解(可能不正确)是 Caps Lock 和 Ctrl 处理完全不同,因为 Caps Lock 是一个切换键,而 Ctrl 只是一个“正常”键。
所以我在这里想要理解的是如何使 Caps Lock 在最低级别上表现得像 Ctrl 键,以及如何正常< kbd> Ctrl 键就像一个 Caps Lock 键。
由于
答案 0 :(得分:2)
维持一个bool,代表预期的大写锁定状态。 当大写锁定键被命中时,将系统的大写锁定值设置回bool的值。 当命中 Ctrl 时,切换大写锁定的预期状态并将系统的上限锁定值设置为布尔值。
使用以下命令设置初始预期状态:
[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;
在点击 Ctrl 和 Caps Lock 时,在HookCallback中添加特殊逻辑(来自您提供的链接)。大写锁定是指lParam为&H14
时。当lParam为&H11
时,Ctrl为。
获取/设置系统的 Caps Lock 值: