【发布时间】:2014-02-02 08:35:51
【问题描述】:
这个问题可能与this 和this 线程重复。但是由于他们都没有为我的问题提供明确的解决方案,所以我再次询问。
我需要的任务是通过 USB 连接 2 个键盘,然后通过 Java 应用程序分别管理每个键盘的输入。 @nan 在first thread I have mentioned above 中已经回答了这一要求,但他的解决方案对我来说并不准确。您可以在他的解决方案上找到他的博客文章here。他使用java-hid-api 完成了解决方案,它看起来准确且有效。
但是,我遇到的问题是打开 HID 设备。当我尝试使用HIDManager 使用openByPath() 或openById() 方法打开设备时,它只返回null,因此它抛出NullPointerException。当我使用HIDDeviceInfo 的open() 方法尝试它时也是一样的。 this issue is listed 也在 java-hid-api 页面中,但到目前为止似乎没有人提供有效的解决方案。
我正在使用的操作系统是 Windows 7 32 位
这是我尝试打开 HID 设备的所有 3 次尝试
HIDDevice hidDevice = HIDManager.getInstance().openByPath(hidDeviceInfo.getPath());HIDDevice hidDevice = HIDManager.getInstance().openById(hidDeviceInfo.getVendor_id(), hidDeviceInfo.getProduct_id(), hidDeviceInfo.getSerial_number());HIDDevice hidDevice = hidDeviceInfo.open();
有没有人能够解决这个问题?如果是这样,我们非常感谢您的帮助。
谢谢!
更新 1: 根据@paul-whelan 在this thread 中提供的答案,我刚刚发现可以使用JInput 完成此任务。我现在要尝试它,但我在这里声明首先寻求任何确认或指导,如果有人已经知道并已经完成它。
【问题讨论】:
-
为了完整起见:根据 C/C++ HID API 的 Issue-Tracker 和 HID API 的 Java Wrapper,这似乎是一个 Windows 问题。有一个 C/C++ 实现的非官方补丁可以解决这个问题(至少它对我有用):angryelectron.com/javahidapi-nihardwareservice 然后可以使用补丁版本重建 Java Wrapper(或者您可以直接从上面的网站)
标签: java keyboard usb keyboard-events hid