我正在开发一个小项目:我需要从数字键盘获取输入并根据按下的键运行宏。但是,我特别难以从数字键盘中读取。 stdin
只是从关键输入读取;我实际上需要从数字键盘USB设备输出原始数据。数字键盘是键盘上的独立设备。
我的研究表明我必须使用Windows DDK
为它编写设备驱动程序,但这对我来说并不合适。我想选择一个不同的USB输入设备作为键盘 - 这不应该需要一个新的驱动程序,因为我仍然将它用作键盘。我只需要将输入流的范围更改为USB设备。
我也可能遗漏了一些关键信息。那么,有一种简单的方法吗?
答案 0 :(得分:2)
您必须从正确的设备上阅读RAW USB事件。您可以通过在MSDN上阅读“Raw Input”或“Human Interface Devices Reference”(Windows驱动程序工具包的一部分)来自行编写该代码。
或者您可以使用libusb,如Read Raw USB Input on Windows所述,它在一个简洁的API下隐藏了许多狡猾的细节。一个粗略的想法是:
libusb_get_device_list()
libusb_get_device_descriptor()
找到您感兴趣的键盘,查看examples/listdevs.c
文件以获取有关如何操作的线索。libusb_open()
附注:libusb在Windows8上使用VS2012 Express + WDK8完美构建。