我的电脑有两个设备,如键盘,普通键盘和HID( H uman I 接口 D 设备)输入设备(这是一个遥控器。)
我想从键盘和遥控器分开输入,只捕获遥控器。如何用C / C ++编写程序来完成这项任务?
这不是一件容易的事,因为该程序依赖于操作系统。我需要它用于Windows,但如果有人知道如何为Linux做,我也会很感激。
答案 0 :(得分:2)
在Windows XP及更高版本中,您可以使用原始输入设备消息。首先,调用RegisterRawInputDevices()
API函数为“键盘”启用原始输入。您调用GetRawInputDeviceList()
枚举输入设备并找到与您的遥控器对应的句柄。然后处理包含原始输入事件的WM_INPUT窗口消息,并检查附加的RAWINPUT结构的标头,以查看源设备句柄是否与先前获得的句柄匹配。如果是,您可以继续处理该事件。
请注意RIDEV_INPUTSINK标志,这可能对您有用。如果您指定它,它会使您的窗口收到事件的WM_INPUT消息,即使它不是前台窗口。
答案 1 :(得分:1)
我在Linux下完成了这项工作 - 我的设备是条形码阅读器,显示为HID键盘。
我是通过在/dev/input
中打开相应的事件设备,然后使用EVIOCGRAB
ioctl“抓取”输入设备来实现的,这使得它对我的应用程序是独占的(该输入设备的事件没有更长时间去X,或其他任何东西)。然后我只是从事件设备中读取输入事件并根据需要对它们进行操作。