【发布时间】:2016-05-26 07:17:49
【问题描述】:
我想用 USB 设备解决这个问题:
- 连接到 POS PC (Windows POSReady 2009) 有一个 USB 键盘和一个 USB Dallas I-Button 读卡器
-
USB Reader 连接到 MoBo USB 总线,并显示为 USB 复合设备:
USB 复合设备 USB\VID_134B&PID_0206&REV_0100
兼容的 HID 设备 HID\VID_134B&PID_0206&REV_0100&MI_01
USB 输入设备(第一个实例)USB\VID_134B&PID_0206&REV_0100&MI_00
USB 输入设备(第二个实例)USB\VID_134B&PID_0206&REV_0100&MI_01
HID 键盘 HID\VID_134B&PID_0206&REV_0100&MI_00
-
当我使用阅读器读取 I-Button 时,按钮内的代码被添加到键盘缓冲区(因为它是使用物理键盘键入的),并且活动应用程序(具有键盘焦点)接收代码
- 我的应用程序必须与 USB 设备读取的代码交互,但是我必须将注意力集中在 TextBox 上才能接收代码
- 这并不总是可行的,尤其是无人看管的 MessageBox,它会获得焦点(和键盘输入)并可能造成故障
- 最好的办法是在串行端口或 TCP/IP 上安装阅读器,但这是我们唯一的选择(我们无法更换阅读器)
所以,我的想法是捕获来自阅读器键盘的传入“按键”,避免附加到系统键盘缓冲区中,并通过 WM_USER、WM_COPYDATA、Socket 或其他方法将它们传递给我的应用程序。
因此,目标是编写一个驱动程序,仅适用于特定的 USB HID 设备(I-Button 阅读器,但不适用于真正的 PC 键盘),这些设备会阻止按键并以某种方式发送到应用程序。
我检查了“键盘过滤器”微软的方式,但我只能阻止一些键组合,但这不是我的目标。
我认为我应该创建一个自定义的个人“kbdhid.sys”和/或“kbdcalss.sys”驱动程序并仅应用于我的 USB HID 阅读器。
有人能指出正确的方向吗?
非常感谢
【问题讨论】:
标签: windows keyboard usb hid wdk