【问题标题】:Override Caps Lock with Ctrl using C#使用 C# 使用 Ctrl 覆盖 Caps Lock
【发布时间】:2010-11-23 18:36:12
【问题描述】:

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

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

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

所以我在这里想了解的是如何使 Caps Lock 在最低级别上表现得像 Ctrl 键,以及如何使正常 Ctrl 键的作用类似于 Caps Lock 键。

谢谢

【问题讨论】:

  • 我会说,你为什么要这个?如果您不希望以全部大写形式输入数据,则可以在输入后步骤中更改大小写。

标签: c# capslock remap ctrl


【解决方案1】:

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

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

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

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

【讨论】:

    猜你喜欢
    • 2014-04-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-03
    • 2010-09-12
    • 2012-03-18
    • 1970-01-01
    相关资源
    最近更新 更多