2010-08-11 49 views
1

我的PC有两个装置的工作如键盘,正常键盘和HID(ħ UMAN 覆盖整个院落d evice)输入装置(它是一个遥控器)。来自不同设备确定输入

我想从键盘和遥控器分开输入,只捕获遥控器。我如何用C/C++编写程序来完成这项任务?

这不是一件容易的事,因为这个程序依赖于操作系统。我需要它的Windows,但如果有人知道如何做到这一点,我也很感激。

回答

1

我已经在Linux下完成了这项工作 - 我使用的设备是一个条形码阅读器,显示为HID键盘。

我做到了在/dev/input打开相应的活动设备,然后使用EVIOCGRAB ioctl来“抢”的输入设备,这使得它独特的到我的应用程序(即输入设备事件不再去X,或任何其他)。然后,我只需从事件设备中读取输入事件,并根据需要对其执行操作。

+0

这将有助于http://www.linuxjournal.com/article/6908 – KedarX 2010-08-12 10:18:05

+0

在这里我展示了如何在Linux下做到这一点: https://www.youtube.com/watch?v=_6lGwldHS1I – Andre 2015-07-28 10:47:04

2

在Windows XP和更高版本中,您可以使用原始输入设备消息。首先调用RegisterRawInputDevices() API函数为“键盘”启用原始输入。您可以拨打GetRawInputDeviceList()来枚举输入设备并找到与您的遥控器相对应的手柄。然后,处理包含原始输入事件的WM_INPUT窗口消息,并检查附加的RAWINPUT结构的头部,以查看源设备句柄是否与之前获得的句柄相匹配。如果确实如此,您可以继续处理事件。

请注意RIDEV_INPUTSINK标志,它可能对您有用。如果指定它,它会使窗口接收事件的WM_INPUT消息,即使它不是前景窗口