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

时间:2015-05-13 07:20:54

标签: keyboard hid

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

我可以通过USB:

  • 从屏幕上的表单中读取数据?
  • 找出用户所使用的操作系统?
  • 找出是否有错误消息?
  • 甚至'知道'在屏幕上可视化的是什么,即选择了什么程序或者程序是窗口还是全屏?

谢谢!

2 个答案:

答案 0 :(得分:4)

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

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

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

答案 1 :(得分:1)

正如其他人所说,如果您使用普通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,您可以:

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

  • 找出用户所使用的操作系统?的

  • 查看是否有错误消息?的

  • 甚至“知道”屏幕上可视化的内容,即选择了什么程序或者程序是窗口还是全屏?的

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