gpt4 book ai didi

c# - 使用 C# 使用 Ctrl 覆盖 Caps Lock

转载 作者:太空狗 更新时间:2023-10-29 23:42:40 25 4
gpt4 key购买 nike

我正在使用 C# 和 Visual Studio 2008 编写(另一个,我知道)键盘重映射器。

我关注了this guide了解如何捕捉低级按键。这适用于覆盖例如我键盘上的普通字母字符,但我似乎需要更多才能使 Caps LockCtrl 一样工作。

我的理解(可能不正确)是 Caps LockCtrl 的处理方式完全不同,因为 Caps Lock 是切换键,而 Ctrl 只是一个“普通”键。

所以我在这里想了解的是如何使 Caps Lock 在最底层表现得像 Ctrl 键,以及如何使正常的 < kbd>Ctrl 键的作用类似于 Caps Lock 键。

谢谢

最佳答案

维护一个表示大写锁定预期状态的 bool 值。当按下大写锁定键时,将系统的 Caps Lock 值设置回 bool 值。当按下 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;

CtrlCaps Lock 被击中时,在 HookCallback 中添加特殊逻辑(来自您提供的链接)。大写锁定是当 lParam 为 &H14 时。当 lParam 为 &H11 时为 Ctrl。

获取/设置系统的 Caps Lock 值:

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

关于c# - 使用 C# 使用 Ctrl 覆盖 Caps Lock,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1347640/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com