电脑如何区分键盘USB和鼠标USB?

Posted

技术标签:

【中文标题】电脑如何区分键盘USB和鼠标USB?【英文标题】:how can the computer distinguishes between keyboard USB and mouse USB? 【发布时间】:2017-01-27 13:10:15 【问题描述】:

想知道PC如何区分多个USB。例如,当我将闪存驱动器 USB 插入计算机时,它如何知道它是闪存驱动器 USB 而不是键盘 USB

提前致谢。

【问题讨论】:

错误的站点。您正在寻找Super User。该站点用于编程相关问题。话虽如此:当您插入设备时,操作系统会查询它是什么,并且设备会告诉它。就像你走进一家餐馆,服务员走过来一样。他们问你想吃什么,你告诉他们。你认为它还能怎么做? 感谢您的回复,我只是想知道这是怎么回事。你帮助了我,我得到了答案,谢谢。 【参考方案1】:

在 USB 标准中有 USB 类,记忆棒是 USB 大容量存储类,键盘、鼠标、操纵杆是 USB HID 类(人机接口设备),相机实现USB PTP(图片传输协议),USB-to-serial(虚拟COM端口,...)是USB CDC ACM类, ...

以下链接列出了该 Windows 的所有 USB 类具有驱动程序https://msdn.microsoft.com/en-us/library/windows/hardware/ff538820%28v=vs.85%29.aspx

当插入 USB 设备时,USB 设备(固件)上的 MCU 和 PC(USB 主机)之间会进行通信。在这种通信中,设备说明它是哪个 USB 类,主机加载合适的驱动程序

您可以使用 wireshark 或查看 dmesg(在 linux 上)来嗅探此通信

这种通信是非常低级的,不容易被人类阅读。有像wiresharklsusb -v 这样的工具

USB 设备必须实现一个特殊的描述符层次结构,其中包含 USB 设备内部结构的信息。层次结构是:

设备描述符 -> 配置描述符 -> 接口描述符 -> 端点描述符

EP0 保留用于控制传输,否则任何传输都必须去往或来自端点(OUT 端点/IN 端点)

见http://www.beyondlogic.org/usbnutshell/usb1.shtml

USB 是一个非常复杂的标准,因为它在一个物理接口中为大量不同的设备实现了广泛的功能。我认为最复杂的 USB 类标准是 USB 音频...

【讨论】:

以上是关于电脑如何区分键盘USB和鼠标USB?的主要内容,如果未能解决你的问题,请参考以下文章

公司电脑u *** 接口被限制怎么办

如何定义STM32 USB HID设备缓冲区地址?请求帮助

一个电脑显示器怎么连接两个电脑主机使用?

电脑USB键盘鼠标无法使用,重装系统后 问题依旧 解决方案

怎么把鼠标用不了PS2 只能用USB的鼠标 我电脑是轰天雷D5

浅析usbhid驱动如何源源不断的获取usb鼠标