c++ - 确定来自不同设备的输入

标签 c++ c windows input cross-platform

我的电脑有两个像键盘一样工作的设备,普通键盘和一个 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/

相关文章:

仅包含公共(public)函数的 C++ 类

c++ - 为什么当我重定向 stdout 时我的程序运行得更快?

c++ - 使用指针而不为其分配变量内存地址

c - 是否有必要在这个函数的 while 循环之后包含一个 return 语句?

java - 表示项目根的符号

c++ - 通过采用迭代器的 C++ 函数包装采用原始指针的 C API

c++ - 迭代 std::map<...> 的简单方法?

c - 浏览链表

asp.net - 通过网页安装windows应用程序

c++ - 窗口事件回调函数 C++ 的问题