我有两个 USB 键盘插入同一台机器。我正在开发一个 Java 应用程序。无论如何允许Java应用程序分离出它来自哪个USB键盘?(即是否有类似http://docs.oracle.com/javase/6/docs/api/java/awt/event/KeyEvent.html但带有 USB 参数的东西,所以我可以知道它来自哪个 USB 设备?)
谢谢!
我有两个 USB 键盘插入同一台机器。我正在开发一个 Java 应用程序。无论如何允许Java应用程序分离出它来自哪个USB键盘?(即是否有类似http://docs.oracle.com/javase/6/docs/api/java/awt/event/KeyEvent.html但带有 USB 参数的东西,所以我可以知道它来自哪个 USB 设备?)
谢谢!
仅使用 Java 是不可能的。
但是有 3rd 方工具可以重新映射键盘的键。HID 宏是一种应用程序。但它仅适用于按键,不适用于按键向上和向下事件。这限制了它的有用性,但对于您的用例可能就足够了。
如果你想深入挖掘,你需要使用 Windows 上的RAW Input API来做你想做的事。代码项目中已经有一个很好的示例,名为Using Raw Input from C# to handle multiple keyboards,它揭示了正确的 API 用法。
我在这里回答可能为时已晚,因为这个问题是一个老问题。但是由于我在寻找相同要求时被引导到这里,所以我会提到我在另一个线程上找到的解决方案,以帮助将来将被引导到这里的人,为相同的要求寻求帮助。@nan 使用 java-hid-api 对此提供了解决方案,您可以在此处找到他的答案。他还在他的博客中写了一篇关于如何做到这一点的清晰而逐步的帖子。
但是我必须说我已经尝试过了,但仍然没有成功,因为HIDManager
在尝试通过路径或 id 打开 HID 时返回 null。尝试open()
使用时也是如此HIDDeviceInfo
。这个问题也列在java hid api 页面中,但到目前为止似乎没有人能够提供有效的解决方案。因此,如果有人能够绕过此问题。请分享。