我的电脑有两个像键盘一样工作的设备,普通键盘和一个 HID(Human I接口(interface) Device)输入设备(这是一个 Remote )。
我想将输入与键盘和 Remote 分开,只捕获 Remote 。我如何用 C/C++ 编写程序来完成这项任务?
这不是一件容易的事,因为这个程序依赖于操作系统。我需要它用于 Windows,但如果有人知道如何在 Linux 上使用它,我也将不胜感激。
最佳答案
在 Windows XP 和更高版本上,您可以使用原始输入设备消息。首先调用 RegisterRawInputDevices()
API 函数为“键盘”启用原始输入。您调用 GetRawInputDeviceList()
来枚举输入设备并找到与您的 Remote 对应的句柄。然后处理包含原始输入事件的 WM_INPUT 窗口消息,并检查附加的 RAWINPUT 结构的 header 以查看源设备句柄是否与您之前获得的句柄匹配。如果是,您可以继续处理该事件。
注意 RIDEV_INPUTSINK 标志,它可能对您有用。如果您指定它,它会使您的窗口接收事件的 WM_INPUT 消息即使它不是前景窗口。
关于c++ - 确定来自不同设备的输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3463652/