人机交互设备(HID)

2023-05-16

人机交互设备(HID)是一个设备类型,为了使用通用USB接口支持HID设备来代替PS/2接口类型的设备,例如键盘、鼠标和游戏控制器等等。

在 HID 之前,设备只能使用规定好的鼠标或键盘协议。硬件创新需要在现有协议中重载数据,或者使用自己的设备驱动程序创建非标准硬件。HID 为这些"boot mode"设备提供了支持,同时通过可扩展、标准化和易于编程的接口为硬件创新提供支持。

boot mode:boot mode的意思为“启动方式”,有两种启动方式:UEFI和Legacy support。UEFI是新式的BIOS,legacy是传统BIOS。二者可以转换。

如今,HID 设备包括各种设备,如数字显示器、条形码读取器、扬声器/耳机的音量控制器、辅助显示器、传感器等。许多硬件供应商也使用 HID 作为其专有设备。

 

图:PS/2接口类型

HID的概念

HID 由两个基本概念组成,Report Descriptor(USB报告描述符)和 Report(报告),报告是设备和软件客户端之间交换的实际数据。报告描述符描述了设备支持的数据的格式和含义。

Reports

应用程序和 HID 设备通过报告交换数据。报告有三种类型:输入报告、输出报告和特征报告。

Report Type

Description

Input Report

Data sent from the HID device to the application, typically when the state of a control changes.

Output Report

Data sent from the application to the HID device, for example to the LEDs on a keyboard.

Feature Report

Data that can be manually read and/or written, and are typically related to configuration information.

在报表描述符中定义的每个顶级集合可以包含每个类型的零( 0 )个或多个报告。

Usage Tables

USB-IF工作组发布 HID 使用表,这些表是报告描述的一部分,用于描述允许 HID 设备执行的用途。这些 HID 使用表包含一个包含使用情况描述的列表,其中描述了报告中描述的特定项目的预期含义和用途。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

人机交互设备(HID) 的相关文章

  • STM32Cubeide/STM32F103CubeMX生成自定义HID设备

    前面时钟啥的不管了 USB 48Mhz时钟 USB选择Device USB FS 设置参数 34是配置HID作为电脑识别用的 必须是34 64是数据收发用的 HID最大一次64 可以自定义 这两个是电脑识别之后的硬件ID 不知道什么讲究 不
  • USB_HID协议基础

    目录 一 HID类设备相关概念 1 USB HID名词解释 2 HID类设备数据传输特性
  • 基于富芮坤fr8016 蓝牙5.0 芯片设计的BLE HID Joystick 游戏摇杆设备

    文章目录 ble hid 学习笔记 HID报告描述符与BLE HID profile之间关系 1 HID报告描述符 富芮坤fr8016 设计Joystick例子 1 描述X轴Y轴Z轴 2 描述按钮 3 Joystick 报告描述符 4 程序
  • 找出哪个进程对 USB 设备句柄具有独占锁

    我有一个使用 CreateFile API 读取 写入 USB 设备的库 该设备恰好实现了 HID 设备配置文件 因此它与 Microsoft 的 HID 类驱动程序兼容 系统上安装的其他一些应用程序正在以读 写模式打开设备 而没有共享模式
  • 如何在 C++ 中使用 HidD_GetHidGuid()?

    我已经发布了类似的主题 问题 但这次有点不同 我只是尝试使用 HidD GetHidGuid 函数来获取某些 hid 设备的窗口 guid 但它给了我一个错误 LNK2019 函数 main 中引用的无法解析的外部符号 HidD GetHi
  • HID 设备的 INF 文件 - 设置名称和图标

    我正在寻找为 HID 设备 具有自定义 VID PID 创建一个 inf 文件 我只想用我们的字符串替换我们设备的 HID 兼容设备 和 USB 输入设备 字符串 我知道这需要 Microsoft 签名 但是有一个很好的示例说明如何执行此操
  • HID 兼容设备不会在 ChromeOS 上使用 chrome.hid API 进行枚举

    使用 USB HID 传感器我似乎只能用chrome usb API https developer chrome com apps usb在 Chrome 操作系统上 在 OS X 上我可以枚举chrome hid API https d
  • 使用 JavaScript、HTML5 或任何跨平台语言将数据写入 USB HID(支持 Android)

    我用 HTML5 和 JavaScript 编写了一个 UI 我选择这个实现是为了可以在 Android Chrome 和 Android Chrome 之间共享相同的代码Windows 8 https en wikipedia org w
  • “崩溃发生在 Java 虚拟机之外的本机代码中。”如何解决此错误(Java)?

    使用此链接中的库http www blog kslemb com doku php en projects globx java hid http www blog kslemb com doku php en projects globx
  • python读取HID

    我想做一个程序 它从连接到 Linux 系统的 HID 获取输入并从中生成 MIDI 我在 MIDI 方面还不错 但在 HID 方面却遇到了困难 虽然这种方法工作正常 取自 usr bin python2 import struct inp
  • MacOS 虚拟输入设备

    如何在代码中创建虚拟 HID 设备 我试图避免编写内核扩展来完成此任务 但这似乎是唯一的方法 我需要能够创建所有类型的虚拟 HID 设备 并让一个应用程序在后台运行以向其提供事件 有没有办法在用户空间中做到这一点 或者我必须冒险进入内核空间
  • 使用 kIOHIDOptionsTypeSeizeDevice 时,击键不会被阻止,并且仍会传递到操作系统

    我的目标是使用 IOHID 阻止击键到达操作系统 由于其他原因无法使用 CGEvent 根据文档kIOHIDOptionsTypeSeizeDevice 用于开启与设备的独占通信 这将阻止系统和其他客户端接收来自设备的事件 import T
  • 使用 .NET 控制台应用程序通过芯片选择写入 HID

    您好 我正在编写一个简单的控制台应用程序 需要将字节写入MCP2210 USB to SPI Master我发现这个图书馆here https www zer7 com software hidsharp 似乎在连接设备和读取元数据方面做得
  • 仿蓝牙人机界面设备

    我想知道应用程序是否有可能通过 Android 设备的蓝牙模拟人机接口设备 在我的上下文中 这将是一个模拟鼠标的应用程序 应该被计算机识别为蓝牙鼠标 理想情况下 这应该可以在 java 中实现 我知道这个问题过去已经被问过好几次了 但我想知
  • 如何阻止 Linux 初始化 USB HID 设备

    我有一个 USB HID 设备 可以在两种不同的模式下工作 模式的选择基于发送给它的 USB 枚举 初始化数据包的顺序 我使用的是运行 Raspbian 的 Raspberry Pi 3 但是如果我为桌面 Ubuntu 发行版编译代码 我也
  • 适用于 OS X 的虚拟 HID 键盘

    我正在尝试创建一个虚拟的蓝牙Mac 操作系统的键盘客户端 这意味着我的 Mac 将充当 BT KB 我读到了 OS X 中的蓝牙 API 在 ObjC 中 并且我还发现了适用于 Mac 的 HID API 在 C 中 为了完成这项工作 我知
  • 在 Windows 10 上为 BLE GATT 设备开发 HID 输入设备驱动程序

    这是一个来自 MSDN 论坛的交叉帖子 https social msdn microsoft com Forums windowsdesktop en US 01b08fbd 3320 4796 b65e 92239d9b7306 how
  • 在简单的 main() 中获取rawinputdata

    我正在尝试使用简单的 C 技术和 Windows 从操纵杆读取值 我的目标是编写一个程序 每当操纵杆信号超过预定义阈值时 该程序就会发送键盘命令 键盘命令将由当时处于活动状态的窗口拾取 我的 C 编码技能有限 因此我希望以最简单的方式完成此
  • WriteFile 返回错误代码 87

    我正在开发一个写入 HID 设备的程序 但收到错误 87 WriteFile 函数参数无效 我从 Jan Axelson 的 USB Complete 获得了这些功能 所以我不确定为什么会收到错误 我用它来查找我的设备 private vo
  • 如何在 Swift/Cocoa 应用程序中获取 HID 设备列表?

    以下代码可以完美地获取已连接的 HID 设备的列表 import Foundation import IOKit import IOKit usb import IOKit hid private func createDeviceMatc

随机推荐

  • Ubuntu虚拟机设置网络桥接模式

    Ubuntu虚拟机设置网络桥接模式 1 虚拟机网络模式介绍1 1 bridged 桥接模式 1 2 host only 主机模式 1 3 NAT 网络地址转换模式 2 设置网络桥接模式2 1 Windows网络适配器设置2 2 Window
  • 完美洗牌算法

    输入 xff0c 如何在O n 的时间 xff0c 用O 1 的空间 xff0c 将这个序列顺序改为 输入 xff1a 1234567dbcdefg 则输出1a2b3c4d5e6f7g 公式 xff1a y 61 2x mod xff08
  • Windows系统安装及初始化设置

    Windows系统安装激活及初始化设置 1 系统安装1 1 iso镜像下载1 2 系统启动盘制作1 3 BIOS设置1 4 常见问题及解决方式问题1 xff1a 引导方式错误 xff08 ERROR BIOS LEGACY BOOT OF
  • E: Problem executing scripts APT和E: Sub-process returned an error code问题修复

    E Problem executing scripts APT Update Post Invoke Success和E Sub process returned an error code问题修复 问题描述原因分析和解决方案 问题描述 在
  • 解决Docker拉取镜像报Error response from daemon: error parsing HTTP 408 response body的问题

    解决Docker拉取镜像报Error response from daemon error parsing HTTP 408 response body的问题 问题描述原因分析和解决方案 xff1a xff1a 问题解决验证 问题描述 Do
  • ROS下运行ORB-SLAM2双目Stereo(官方数据集)

    写在前面 xff1a Ubuntu版本 ROS版本 opencv版本一定要对应 xff01 xff01 xff01 否则后边编译和运行过程中会有许多问题 xff0c 配环境配到怀疑人生 xff01 我的实验环境为 xff1a ubuntu1
  • Arduino学习总结(未完待续)

    文章目录 Arduino 学习硬件认识Arduino UNO 主要元器件Arduino 端口 软件认识Arduino IDEArduino 程序架构程序基础内容简述数据类型时间控制 计时函数延时函数 串口通信 x1f4de 端口间通信的类型
  • rosdep update 超时问题解决

    span class token operator lt span br span class token operator gt span reading span class token keyword in span sources
  • gRPC学习入门

    grpc框架 参考资料 xff1a 官方文档教学grpc go入门https www cnblogs com hongjijun p 13724738 html GRPC是Google公司基于Protobuf开发的跨语言的 高性能的 通用的
  • 学习随笔#13 模型预测控制(MPC)

    MPC基本概念 模型预测控制 xff08 MPC xff09 是指通过模型来预测系统在某一未来时间段内的表现来进行优化控制 MPC多用于数位控制 xff0c 因此使用系统的离散型状态空间表达形式 xff0c 即 x k 43 1
  • C++ 关于编译期的优化处理

    C 43 43 关于编译期的优化处理 一 define WIN32 LEAN AND MEAN 的作用 1 xff1a 为什么要 define WIN32 LEAN AND MEAN 答案很简单 xff0c 因为要包含尽量精简的内容 xff
  • 数据结构与算法(一)复杂度分析(上):时间复杂度和空间复杂度

    复杂度分析是整个算法学习的精髓 xff0c 只要掌握了它 xff0c 数据结构和算法的内容基本上就掌握了一半 为什么需要复杂度分析 xff1f 你可能会有些疑惑 xff0c 我把代码跑一遍 xff0c 通过统计 监控 xff0c 就能得到算
  • 输入和输出缓冲区更新(试过成功)

    原文 xff1a http blog csdn net u010064842 article details 8769229 1 区分概念 什么是缓冲区 缓冲区又称为缓存 xff0c 它是内存空间的一部分 也就是说 xff0c 在内存空间中
  • 数据结构与算法(一)复杂度分析(下):不同情况下的复杂度变化

    最好 最坏情况时间复杂度 span class token comment n表示数组array的长度 span span class token keyword int span span class token function fin
  • Windows开发:鼠标操作

    本文为作者原创 xff0c 转载请注明出处 一般情况下 xff0c Windows平台下可以使用mouse event函数实现鼠标操作 我们这里使用更新后的SendInput函数 span class token keyword bool
  • RawInput 输入流程【Windows操作系统】

    转载请注明出处 除了键盘和鼠标以外 xff0c 还有很多其他的用户输入设备 xff0c 比如手柄 触摸屏 麦克风等等 xff0c 这些设备统称为人机接口设备HID xff08 Human Interface Device xff09 xff
  • Win10 键盘输入法消失后如何恢复

    原创文章允许转载 xff0c 转载请著明出处 xff0c 不得用于商业用途 xff0c 否则保留法律追责权力 一般Win10 系统在不断地更新过程中 xff0c 会造成一部分数据不同步的问题 xff0c 有时候会发现设置好的英文输入法不见了
  • Windows10安装WDK

    安装包下载 xff08 5 11 2022 xff09 官网地址 xff1a 下载 Windows 驱动程序工具包 WDK Windows drivers Microsoft Docs 点击蓝体字样即可下载 问题汇总 问题1 xff1a 安
  • Windows 无法打开启动配置数据存储拒绝访问

    在我们输入一些命令时会遇到如下报错 xff0c 一般情况下是由于运行cmd的账户权限导致的 方法1 xff1a 1 在系统盘C windows system32 xff08 当前系统安装所在磁盘盘符 xff09 下查找到cmd命令提示符可执
  • 人机交互设备(HID)

    人机交互设备 xff08 HID xff09 是一个设备类型 xff0c 为了使用通用USB接口支持HID设备来代替PS 2接口类型的设备 xff0c 例如键盘 鼠标和游戏控制器等等 在 HID 之前 xff0c 设备只能使用规定好的鼠标或