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

Select specific USB keyboard input device?

本文关键字:键盘 输入设备 USB 选择      更新时间:2023-10-16

我正在做一个小项目:我需要从数字键盘输入并运行基于按下哪个键的宏。然而,我有一些困难,特别是从数字板读取。stdin仅从关键输入读取;我实际上需要从数字pad USB设备的原始数据输出。数字键盘是一个独立于键盘的设备

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

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

您必须从正确的设备读取RAW usb-events。您可以通过阅读MSDN上的"原始输入"或"人机界面设备参考"(Windows驱动程序工具包的一部分)自己编写该代码。

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

  • 通过libusb_get_device_list()获取设备列表
  • 通过libusb_get_device_descriptor()找到你感兴趣的键盘,检查examples/listdevs.c文件,了解如何做到这一点。
  • 通过libusb_open()打开设备
  • 做你的魔法(我认为轮询事件将适合)
  • , . .最后关闭设备

边注:libusb完美地建立在Windows8与VS2012 Express + WDK8.