您最好的選擇是購買操縱桿「鍵盤」,以便您可以將設備(USB HID)作爲非鍵盤/非鼠標讀取(因爲鍵盤和鼠標受操作系統限制,無法旁路因爲它被硬編碼到設備管理中。)
我推薦的是看PI Engineering的鍵盤,因爲他們的鍵盤可以註冊爲遊戲杆。他們有自定義映射軟件,可以模擬按下設備上的按鍵以在Windows消息隊列中發送密鑰(模擬鍵盤)。相反,您只需使用SDK直接對設備進行編程(因爲每個鍵只是一個操縱桿按鈕)並且不會干擾POS軟件。
PI Engineering Programmable Keyboards
USB access description(下面列出的相關部分情況下,鏈接死亡)
的Microsoft Windows
Windows驅動程序開發工具包HID
在Windows DDK HID API是像Apple HID Manager那樣是一個複雜的低級別API它鏡像USB HID。除了鍵盤和鼠標外,程序可以訪問或多或少的每個設備,包括輸入和輸出,微軟故意阻止使用此API。與迄今爲止涉及的其他API不同,閱讀機制的本質使得使用它非常困難,而沒有專用於從隊列中讀取事件的線程。乍一看,爲了使用此API可能需要購買微軟的驅動程序開發工具包,可以將其與免費的MinGW工具一起使用。
在Windows中,設備插入和拔下事件的通知被髮送到窗口句柄,因此爲了接收它們,hidio對象需要它自己的(不可見的)窗口,然後窗口可以接收通知。在當前的實現中,對象在接收到這樣的通知時自動重建設備列表。此外,如果設備當前處於打開狀態,則會檢查設備是否仍連接或已被移除。
的DirectInput
微軟的DirectInput的API提供了一個相對簡單的接口,但在靈活性爲代價的。它對USB HID設備類型的支持有限,主要針對最流行的遊戲設備;在USB HID中,它只支持「通用桌面頁面」。它確實提供對鼠標和鍵盤數據的訪問,但不是作爲單獨的設備。如果連接了多個鼠標或鍵盤,則將所有數據集中到一個虛擬設備中。它支持強制反饋,但不支持任何其他輸出類型。像Linux input.h一樣,它有自己簡化的事件方案,並且還自動縮放一些輸入數據,這可能會造成問題。
Windows原始輸入
原始輸入是一個新的API,與Windows XP的這是在迴應開發商的願望,讓鍵盤和鼠標的原始訪問提供。這是在Windows上從鼠標和鍵盤獲取原始數據的唯一方法。通過原始輸入,可以獲取任何USB HID設備的輸入事件,但根本不支持輸出。由於這個原因,我們還沒有深入探索Raw Input,但我們可能會使用它來完全支持Windows上的鍵盤和鼠標。
PI產品看起來很有希望,非常感謝。 – Kerberos42
我想沒有辦法告訴Windows鍵盤只是一個HID設備,而不是專門的鍵盤? – Kerberos42
不,這是不可能的。 –