是否可以以编程方式设置移位和控制键的状态?

时间:2010-03-27 00:17:05

标签: keyboard

我问的原因是我正在考虑建立一个脚踏开关作为换档和控制键 - 两个开关,每只脚一个。

我打算使用Arduino来编写一个小的C#应用​​程序,以检测何时按下开关,然后设置移位或控制状态。我宁愿不必为Arduino编写键盘驱动程序,因为我希望它也能做其他事情。

2 个答案:

答案 0 :(得分:9)

是的,这是可能的,但你必须pInvoke到Win32。看看keydb_event来电。

[DllImport("user32.dll", SetLastError = true)]
static extern void keybd_event(byte bVk, byte bScan, int dwFlags, int dwExtraInfo);

然后你可以打电话:

keybd_event(0x10, 0, 0, 0);

打开shift键(即按键),然后:

keybd_event(0x10, 0, 2, 0);

再次将其关闭(即按键)。

第一个参数是要按的键的十六进制值:

  • 0x10 = shift
  • 0x11 = ctrl
  • 0x12 = alt

我刚刚在一个简单的C#应用​​程序中尝试使用复选框来表示shift键。选中它后,它会“保留”换档键,用于我使用的任何应用程序。

答案 1 :(得分:0)

如果您只对控制前台应用程序感兴趣,最简单的解决方案是将WM_KEYDOWN和WM_KEYUP消息发送到活动应用程序,以便按下和释放踏板。

我可能会弄错(并且更明智的是,如果我是,请随时纠正我!)但我相信要创建一个实际的系统级按键事件 - 例如使 Windows 为您创建keydown / keyup消息,即使您在按下踏板时更改应用程序也能正常工作 - 您需要编写输入驱动程序。