gpt4 book ai didi

c - 检测 USB HID 设备何时模拟键盘的可靠方法

转载 作者:太空宇宙 更新时间:2023-11-04 01:12:37 31 4
gpt4 key购买 nike

我在嵌入式系统上工作,我需要确定用户连接的是 HID 设备模拟键盘(即条形码扫描仪)还是实际键盘。

我可以检查 iManufacturer、iProduct、iSerialNumber 和 iInterface 字符串描述符以获得一些线索。例如,当连接条形码阅读器时,已观察到“阅读器”或“扫描仪”出现在 iProduct 字符串中。同样,在 iInterface 字符串中也出现了“仿真”。然而,我有点不愿意仅仅依赖这些字符串(字符串的大小写很容易处理,但是处理关键字/短语中的缩写之类的事情很快就会变得繁重。)

我查看了 USB 1.10 和 1.11 规范,发现报告描述符也提供了一些线索。例如,对于通用桌面,全局使用项应该类似于 0x0501,而本地使用项应该是 0x0906(键盘)。报告描述符中是否还有其他有助于检测差异的内容?

我想避免依赖供应商 ID 和产品 ID 列表,因为这是一个资源有限的嵌入式系统。建议?我错过了什么吗?

最佳答案

没有绝对可靠的方法来做到这一点。不可能,因为没有关于什么是或不是键盘的绝对定义——也没有“模拟键盘”和“成为键盘”之间的区别。辅助设备和和弦键盘等事物的界限变得特别模糊,但除此之外,您还有一个根本问题,即模拟键盘的方式是通过 USB 电缆以与键盘通信的方式完全相同的方式进行通信。

您建议的方法是合理的启发式方法,用于识别许多明显不是键盘的东西(在某些情况下有微弱的误报风险),但是寻找提示的启发式方法是最好的解决方案有可能。

关于c - 检测 USB HID 设备何时模拟键盘的可靠方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8747736/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com