我有一个简单的 RFID 阅读器,它实际上充当键盘,并在最后返回带有返回字符的读取值。
我希望我的应用程序只听单个(不同的)键盘设备(我会以某种方式选择/区分)并为我获取读取值,而不是焦点在表单/应用程序上的仪表。
应用程序是用 Qt C++ 编写的
我想知道这是否可能以及如何?
不知道这是否有帮助,但我们在检测来自条形码扫描仪的输入方面遇到了类似的挑战。扫描仪只是快速“输入”了一些数字;一些扫描仪以控制字符结束它,但由于它不是通用的,我们甚至不能依赖它。
我注意到QEvent::KeyboardLayoutChange
当条形码扫描仪开始输入时会触发 a ,但我不确定这是否适用于所有可能的场景 - 但您可能需要检查一下。
我们最终安装了一个应用程序范围的事件过滤器QApplication::installEventFilter
(它有明显的缺陷,但如果您需要一个非常通用的解决方案,您可能会对类似的东西感兴趣。此外,如果 RFID 输入总是返回一个控制字符,这可能会大大简化这种方法。QEvent::ShortcutOverride
QEvent::KeyPress
在 WinAPI 的帮助下,这对于 Windows 操作系统是可能的。我从来没有使用过 QT,所以我不知道 QT 类中是否存在一些包装器用于此目的。您应该使用原始输入。检查此链接以获取快速参考:
http: //msdn.microsoft.com/en-us/library/windows/desktop/ms645536Using Raw Input
(v=vs.85).aspx(下面有示例)
也看看这个项目http://www.codeproject.com/Articles/17123/Using-Raw-Input-from-C-to-handle-multiple-keyboard我理解它是用 C# 写的,但它可能会有所帮助