使用全局挂钩从条形码扫描仪读取数据

Reading data from a barcode scanner using global hooks

我有一个 USB 条形码扫描器,我用 java 创建了一个 reader,使用这个库: https://github.com/kwhat/jnativehook

我的 reader 使用全局挂钩并根据输入速度检测数据何时来自条形码扫描仪。这实际上是非常准确的。 reader 在后台运行。当我阅读任何条形码时,它都会用它做一些事情并在数据库中注册一些值(与问题无关)。

碰巧有了钩子,当我扫描某些东西时,它们的键事件会被聚焦程序(chrome、word 等)捕获,并且条形码上的数字会显示在上面。如果您在其他人使用扫描仪时尝试编写文档或其他内容,这真的很烦人。

有没有使用这个或另一个 java 库来防止键盘事件传播的方法? 我想捕获所有键盘事件,使用它们,如果我的应用程序检测到它们不是来自条形码扫描器,那么它将重新创建事件并将其发送到其他程序以捕获。

谢谢。

如果您使用 Windows 或 OS X,则可以使用 JNativeHook 使用事件。Linux 不支持该功能,因此它不是官方支持的功能。参见:https://github.com/kwhat/jnativehook/wiki/ConsumingEvents