簡體   English   中英

檢測USB HID設備何時模擬鍵盤的可靠方法

[英]Reliable method for detecting when a USB HID device is emulating a keyboard

我正在嵌入式系統上工作,需要確定用戶是否已連接模擬鍵盤(即條形碼掃描儀)或實際鍵盤的HID設備。

我可以檢查iManufacturer,iProduct,iSerialNumber和iInterface字符串描述符以獲取一些線索。 例如,在連接條形碼閱讀器后,已觀察到“閱讀器”或“掃描儀”出現在iProduct字符串中。 同樣,在iInterface字符串中也看到了“仿真”。 但是,我有點不願僅僅依靠這些字符串(字符串大小寫很容易處理,但是處理諸如關鍵詞/短語縮寫之類的事情很快就變得繁重。)

我查看了USB 1.10和1.11規范,發現Report描述符也提供了一些提示。 例如,對於通用桌面,“全局使用情況”項應類似於0x0501,而“本地使用情況”項應為0x0906(鍵盤)。 報告描述符中是否還有其他可幫助檢測差異的內容?

我想避免依賴供應商ID和產品ID列表,因為這是一個資源有限的嵌入式系統。 有什么建議嗎? 有什么我想念的嗎?

沒有絕對可靠的方法來執行此操作。 之所以不可能,是因為沒有關於什么是鍵盤的絕對定義,也沒有“模擬鍵盤”和“成為鍵盤”之間的區別的絕對定義。 輔助設備和和弦鍵盤之類的邊界變得特別模糊,但即使如此,您仍然存在一個基本問題,即模擬鍵盤的方法就是通過USB電纜以與鍵盤通信完全相同的方式進行通信。

您建議的方法是合理的啟發式方法,用於識別許多顯然不是鍵盤的事物(在某些情況下,存在誤報的微弱風險),但是尋找提示的啟發式方法將是可能的最佳解決方案。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM