-1

我正在做一个小项目:我需要从数字键盘输入并根据按下的键运行宏。但是,我在从数字键盘上阅读时遇到了一些困难。stdin只需从关键输入中读取;我实际上需要数字键盘 USB 设备的原始数据输出。数字键盘是独立于键盘的设备。

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

我也可能遗漏了一些关键信息。那么,有没有一种简单的方法可以做到这一点?

4

1 回答 1

2

您必须从正确的设备读取 RAW USB 事件。您可以通过阅读MSDN 上的“原始输入”或“人机接口设备参考”(Windows 驱动程序工具包的一部分)自己编写该代码。

或者你可以使用libusb ,正如在 Windows 上读取原始 USB 输入中提到的那样,它在一个简洁的 API 下隐藏了许多糟糕的细节。一个粗略的想法是:

  • 通过以下方式获取设备列表libusb_get_device_list()
  • 通过 找到您感兴趣的键盘libusb_get_device_descriptor(),检查examples/listdevs.c文件以获取有关如何执行此操作的线索。
  • 通过打开设备libusb_open()
  • 做你的魔法(我认为对事件进行轮询很合适)
  • 和..最后关闭设备

旁注:libusb 在 Windows8 上完美构建,带有 VS2012 Express + WDK8。

于 2013-01-09T09:08:18.790 回答