2010-08-11 33 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消息,即使它不是前景窗口

相關問題