我需要侦听来自特定键盘设备的键盘事件,并知道在(C#)WPF应用程序中按下了哪个键。理想情况下,这不应该依赖于窗口,只要应用程序具有焦点就可以工作。
不幸的是,我想不出/找到任何方法来做到这一点。
有什么想法吗?
D.R.R.
编辑:我一直在研究OpenTK.Input库,它有一个很好的键界面...有没有人知道如何在不创建GameWindow
的情况下获得键盘设备
信息:顺便说一下,这是针对模拟键盘的条形码扫描仪...谁的好主意是,嗯?
我实际上正在做一个正是这样做的项目。看看卡普蒂瓦特。它安装一个全局键盘钩子,并将原始输入 API 绑定在一起(使用魔法),然后调用回调函数,以便您可以决定 (1) 这是我想要的设备吗?,以及 (2) 我应该允许其他应用程序看到它,还是只保留自己的击键。现在它只是C++但目标之一是最终拥有 C# 包装器。
对于键盘,每个生成的事件都会告诉您 vkey、扫描代码和源设备。
看看下面的 2 篇文章。
在 WPF/C# 中使用全局键盘挂钩 (WH_KEYBOARD_LL)
https://gist.github.com/471698
两者都应该正是您想要的...
设法在 msdn 上找到本教程以及 POS.Net SDK 附带的示例扫描器对象
我还没有时间挑选它的工作原理来给出适当的概述,但似乎我应该能够为任何"键盘楔形"HID 设备编写自定义服务对象抽象。