选择特定的USB键盘输入设备?

时间:2013-01-09 06:39:00

标签: c++ keyboard usb

我正在开发一个小项目:我需要从数字键盘获取输入并根据按下的键运行宏。但是,我特别难以从数字键盘中读取。 stdin只是从关键输入读取;我实际上需要从数字键盘USB设备输出原始数据。数字键盘是键盘上的独立设备

我的研究表明我必须使用Windows DDK为它编写设备驱动程序,但这对我来说并不合适。我想选择一个不同的USB输入设备作为键盘 - 这不应该需要一个新的驱动程序,因为我仍然将它用作键盘。我只需要将输入流的范围更改为USB设备。

我也可能遗漏了一些关键信息。那么,有一种简单的方法吗?

1 个答案:

答案 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完美构建。