HID 设备可以接收哪些数据?

What data can a HID device receive?

我正在设计具有特殊功能的 USB 键盘。这样的HID设备能从主机接收到什么信息?

我可以通过 USB 连接吗:

谢谢!

设备无法从操作系统提供的标准驱动程序中获取任何此类信息,因为这会是一个安全问题。它可以 接收您自己的驱动程序或应用程序发送给它的任何信息。与它通信的方式有很多种——您的设备可以呈现多个接口(将显示为单独的设备)、多个端点或使用控制通道。您肯定需要学习 spec, and I also found this tutorial 有帮助。

我做了类似的事情,并使用控制通道与 Windows 应用程序(通过标准 Windows 驱动程序)交换特征数据。在 Windows 上,API 调用是 HidD_SetFeature() and HidD_GetFeature()

在设备方面,我的硬件 运行 嵌入 Linux 并且我使用 GadgetFS library 创建用户模式驱动程序 - 比内核驱动程序更容易调试。

正如其他人所说,如果您使用普通 HID 尝试此操作,您将 运行 遇到问题。但是,有一个项目叫做USB Rubber Ducky。根据他们的描述:

The USB Rubber Ducky isn't your ordinary HID (Human Interface Device). 
Coupled with a powerful 60 MHz 32-bit processor and a simple scripting language

USB Rubber Ducky 看起来像 USB 设备,被识别为 HID,但它是可编程的。您可以制作一个小脚本,将其输入到屏幕上,使您能够执行您要查找的查询。

使用 USB Rubber Ducky 您可以:

  • 从屏幕上的表单中读取数据?

  • 找出 OS 用户在看什么?

  • 查看是否有错误消息?

  • 甚至 'know' 屏幕上的视觉效果如何,即选择了什么程序,或者程序是窗口化还是全屏?

    如果您不希望购买此设备,至少他们的固件已在 github 上,因此它可以为您提供一个起点