使用Wireshark获取USB HID(Human Interface Device)报告描述符

使用Wireshark选择需要获取的USB进行抓取数据,找到设备(host)接收信息的数据

第二栏出现hid报告,右击选择复制流 

将复制的内容粘贴到USB标准请求及描述符在线分析工具 - USB中文网 进行解析

以图中获取手写板的数据为例:

0x05, 0x0D,        // Usage Page (Digitizer)
0x09, 0x01,        // Usage (Digitizer)
0xA1, 0x01,        // Collection (Application)
0x85, 0x01,        //   Report ID (1)
0x09, 0x02,        //   Usage (Pen)
0xA1, 0x00,        //   Collection (Physical)
0x15, 0x00,        //     Logical Minimum (0)
0x25, 0x01,        //     Logical Maximum (1)
0x75, 0x01,        //     Report Size (1)
0x09, 0x42,        //     Usage (Tip Switch)
0x09, 0x44,        //     Usage (Barrel Switch)
0x09, 0x45,        //     Usage (Eraser)
0x09, 0x3C,        //     Usage (Invert)
0x95, 0x04,        //     Report Count (4)
0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
0x95, 0x01,        //     Report Count (1)
0x81, 0x03,        //     Input (Const,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
0x09, 0x32,        //     Usage (In Range)
0x95, 0x01,        //     Report Count (1)
0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
0x95, 0x02,        //     Report Count (2)
0x81, 0x03,        //     Input (Const,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
0x05, 0x01,        //     Usage Page (Generic Desktop Ctrls)
0x15, 0x00,        //     Logical Minimum (0)
0x35, 0x00,        //     Physical Minimum (0)
0x65, 0x11,        //     Unit (System: SI Linear, Length: Centimeter)
0x55, 0x0F,        //     Unit Exponent (-1)
0x75, 0x10,        //     Report Size (16)
0x95, 0x01,        //     Report Count (1)
0x09, 0x30,        //     Usage (X)
0x26, 0x38, 0x63,  //     Logical Maximum (25400)
0x45, 0x73,        //     Physical Maximum (115)
0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
0x09, 0x31,        //     Usage (Y)
0x26, 0x03, 0x3E,  //     Logical Maximum (15875)
0x45, 0x48,        //     Physical Maximum (72)
0x95, 0x01,        //     Report Count (1)
0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
0x65, 0x00,        //     Unit (None)
0x55, 0x00,        //     Unit Exponent (0)
0x05, 0x0D,        //     Usage Page (Digitizer)
0x09, 0x30,        //     Usage (Tip Pressure)
0x15, 0x00,        //     Logical Minimum (0)
0x26, 0xFF, 0x1F,  //     Logical Maximum (8191)
0x75, 0x10,        //     Report Size (16)
0x95, 0x01,        //     Report Count (1)
0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
0x09, 0x3D,        //     Usage (X Tilt)
0x16, 0xD8, 0xDC,  //     Logical Minimum (-9000)
0x26, 0x28, 0x23,  //     Logical Maximum (9000)
0x75, 0x10,        //     Report Size (16)
0x95, 0x01,        //     Report Count (1)
0x55, 0x0E,        //     Unit Exponent (-2)
0x65, 0x14,        //     Unit (System: English Rotation, Length: Centimeter)
0x36, 0xD8, 0xDC,  //     Physical Minimum (-9000)
0x46, 0x28, 0x23,  //     Physical Maximum (9000)
0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
0x09, 0x3E,        //     Usage (Y Tilt)
0x16, 0xD8, 0xDC,  //     Logical Minimum (-9000)
0x26, 0x28, 0x23,  //     Logical Maximum (9000)
0x75, 0x10,        //     Report Size (16)
0x95, 0x01,        //     Report Count (1)
0x55, 0x0E,        //     Unit Exponent (-2)
0x65, 0x14,        //     Unit (System: English Rotation, Length: Centimeter)
0x36, 0xD8, 0xDC,  //     Physical Minimum (-9000)
0x46, 0x28, 0x23,  //     Physical Maximum (9000)
0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
0xC0,              //   End Collection
0xC0,              // End Collection
0x05, 0x01,        // Usage Page (Generic Desktop Ctrls)
0x09, 0x06,        // Usage (Keyboard)
0xA1, 0x01,        // Collection (Application)
0x85, 0x02,        //   Report ID (2)
0x05, 0x07,        //   Usage Page (Kbrd/Keypad)
0x75, 0x01,        //   Report Size (1)
0x95, 0x08,        //   Report Count (8)
0x19, 0xE0,        //   Usage Minimum (0xE0)
0x29, 0xE7,        //   Usage Maximum (0xE7)
0x15, 0x00,        //   Logical Minimum (0)
0x25, 0x01,        //   Logical Maximum (1)
0x81, 0x02,        //   Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
0x95, 0x0C,        //   Report Count (12)
0x75, 0x08,        //   Report Size (8)
0x15, 0x00,        //   Logical Minimum (0)
0x25, 0xFF,        //   Logical Maximum (-1)
0x05, 0x07,        //   Usage Page (Kbrd/Keypad)
0x19, 0x00,        //   Usage Minimum (0x00)
0x29, 0xFF,        //   Usage Maximum (0xFF)
0x81, 0x00,        //   Input (Data,Array,Abs,No Wrap,Linear,Preferred State,No Null Position)
0xC0,              // End Collection

// 188 bytes

// best guess: USB HID Report Descriptor

这段是一个USB HID(Human Interface Device)报告描述符,用于描述支持**触控笔(Pen Digitizer)键盘(Keyboard)**功能的设备。这种描述符通常用于告诉主机(比如电脑或手机),设备支持哪些功能,并定义输入报告的格式。 

1. 触控笔描述符(Report ID 1)

0x05, 0x0D0xC0, 0xC0 是描述触控笔功能的部分,使用的是报告 ID 1

1.1. 基本描述
0x05, 0x0D        // Usage Page (Digitizer): 使用 Digitizer(数位板/触控笔)功能页
0x09, 0x01        // Usage (Digitizer): 使用 Digitizer 功能
0xA1, 0x01        // Collection (Application): 开始一个应用集合
1.2. 开关功能(Tip Switch, Barrel Switch, Eraser, Invert)
0x85, 0x01        // Report ID (1): 报告 ID 为 1
0x09, 0x02        // Usage (Pen): 使用 Pen(触控笔)
0xA1, 0x00        // Collection (Physical): 开始一个物理集合
0x09, 0x42        // Usage (Tip Switch): 笔尖开关(即触摸状态)
0x09, 0x44        // Usage (Barrel Switch): 侧键开关
0x09, 0x45        // Usage (Eraser): 橡皮擦开关
0x09, 0x3C        // Usage (Invert): 翻转检测
  • 这部分定义了触控笔的各种开关,如笔尖、侧键、橡皮擦和翻转状态
1.3. 位置输入(X, Y 坐标)
0x05, 0x01        // Usage Page (Generic Desktop Ctrls): 通用桌面控制
0x09, 0x30        // Usage (X): X 轴坐标
0x09, 0x31        // Usage (Y): Y 轴坐标
0x26, 0x38, 0x63  // Logical Maximum (25400): X 坐标最大值为 25400
0x26, 0x03, 0x3E  // Logical Maximum (15875): Y 坐标最大值为 15875
  • 定义了触控笔的 X 和 Y 轴坐标输入,分别有 16 位(Report Size 16),逻辑最大值是 25400 和 15875,分别表示最大分辨率 
1.4. 压力与倾斜输入(Tip Pressure, X Tilt, Y Tilt)
0x09, 0x30        // Usage (Tip Pressure): 笔尖压力
0x26, 0xFF, 0x1F  // Logical Maximum (8191): 压力最大值为 8191
0x09, 0x3D        // Usage (X Tilt): X 轴倾斜
0x09, 0x3E        // Usage (Y Tilt): Y 轴倾斜
0x16, 0xD8, 0xDC  // Logical Minimum (-9000): 倾斜最小值 -9000
0x26, 0x28, 0x23  // Logical Maximum (9000): 倾斜最大值 9000
  • 笔尖压力为 16 位输入,逻辑范围是 0-8191。
  • 倾斜输入(X Tilt, Y Tilt)也为 16 位,范围为 -9000 到 9000。

2. 键盘描述符(Report ID 2)

0x05, 0x010xC0 是描述键盘功能的部分,使用的是报告 ID 2

2.1. 键盘基本描述
0x05, 0x01        // Usage Page (Generic Desktop Ctrls): 通用桌面控制
0x09, 0x06        // Usage (Keyboard): 键盘功能
0xA1, 0x01        // Collection (Application): 开始一个应用集合
0x85, 0x02        // Report ID (2): 报告 ID 为 2
2.2. 键盘修饰键输入
0x75, 0x01        // Report Size (1): 每个输入 1 位
0x95, 0x08        // Report Count (8): 有 8 个输入
0x19, 0xE0        // Usage Minimum (0xE0): 使用最小值为 0xE0(修饰键如 Shift, Ctrl)
0x29, 0xE7        // Usage Maximum (0xE7): 使用最大值为 0xE7
  • 这部分描述了 8 位的修饰键输入(如 Ctrl、Shift、Alt、Win 键)。 
2.3. 普通键盘按键输入
0x75, 0x08        // Report Size (8): 每个按键输入 8 位
0x95, 0x0C        // Report Count (12): 支持最多同时 12 个按键输入
0x19, 0x00        // Usage Minimum (0x00): 使用最小值为 0x00
0x29, 0xFF        // Usage Maximum (0xFF): 使用最大值为 0xFF
  • 定义了普通按键的输入,共 12 个按键,每个按键 8 位(1 字节) 

  • 报告 ID 1 是用于**触控笔(Digitizer)**的输入:
    • 包含按钮状态(笔尖、侧键、橡皮擦)、X 和 Y 坐标、笔尖压力、X 和 Y 倾斜。
  • 报告 ID 2 是用于键盘的输入:
    • 包含修饰键(Ctrl、Shift 等)和普通按键的输入,支持最多 12 个按键同时按下。

这个 HID 报告描述符总共占用 188 字节,涵盖了一个带触控笔和键盘功能的设备,适用于像平板电脑或触控显示器这样的输入设备。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/914616.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

ReactPress与WordPress:一场内容管理系统的较量

ReactPress Github项目地址:https://github.com/fecommunity/reactpress WordPress官网:https://wordpress.org/ ReactPress与WordPress:一场内容管理系统的较量 在当今数字化时代,内容管理系统(CMS)已成为…

DevExpress WinForms中文教程:Data Grid - 如何绑定到实体框架数据源?

在本教程中,您将学习如何将DevExpress WinForms的网格控件绑定到实体框架数据源、如何使用数据注释属性来更改网格显示和管理数据的方式,以及如何将单元格值更改发送回数据源。 P.S:DevExpress WinForms拥有180组件和UI库,能为Wi…

使用多种机器学习调参模型进行二分类建模的全流程,代做分析辅导

使用多种机器学习调参模型进行二分类建模的全流程教程 机器学习全流程分析各个模块用到的总的参数文件 0. 分析参数文件 参数文件名称:total_analysis_params_demo.xlsx ,很多分析模块都是这个总的参数文件,我的这个总的参数文件如果有更新…

材质(一)

描述: 材质蓝图,蓝图可以这么定义,是一种数据结构,是一种带有流水线的模糊的数据结构, 材质蓝图也是一种蓝图。 示例操作:

SCI论文数据可视化的在线网址

目录 SCI论文数据可视化的在线网址 EVenn(Evenn):免费 SCI论文数据可视化的在线网址 数据可视化的在线网址,以下是一些值得推荐的资源: ImageGP(ImageGP | ImageGP):该平台可以在线生成常见的线图、柱状图、散点图、箱线图、集合图、热图和直方图等。用户只需粘贴数…

电子应用产品设计方案-4:基于物联网和人工智能的温度控制器设计方案

一、概述 本温度控制器旨在提供高精度、智能化、远程可控的温度调节解决方案,适用于各种工业和民用场景。 二、系统组成 1. 传感器模块 - 采用高精度的数字式温度传感器,如 TMP117,能够提供精确到 0.01C 的温度测量。 - 配置多个传感器分布在…

5G的发展演进

5G发展的驱动力 什么是5G [远程会议,2020年7月10日] 在来自世界各地的政府主管部门、电信制造及运营企业、研究机构约200多名会议代表和专家们的共同见证下,ITU-R WP 5D#35e远程会议宣布3GPP 5G技术(含NB-IoT)满足IMT-2020 5G技…

人工智能--自然语言处理简介

上一篇:《人工智能模型训练中的数据之美——探索TFRecord》 序言:自然语言处理(NLP)是人工智能中的一种技术,专注于理解基于人类语言的内容。它包含了编程技术,用于创建可以理解语言、分类内容&#xff0c…

第8章 利用CSS制作导航菜单

8.1 水平顶部导航栏 水平莱单导航栏是网站设计中应用范围最广的导航设计,一般放置在页面的顶部。水平 导航适用性强,几乎所有类型的网站都可以使用,设计难度较低。 如果导航过于普通,无法容纳复杂的信息结构,就需要在…

企望制造ERP系统 drawGrid.action SQL注入致RCE漏洞复现

0x01 产品简介 企望制造ERP系统是一款专为制造企业设计的企业资源计划(ERP)软件,旨在优化企业的资源配置,提高运营效率,并增强企业的竞争力。系统集成了财务管理、生产管理、供应链管理、客户关系管理(CRM)、人力资源管理(HRM)等多个核心功能模块,能够全面覆盖企业的…

基于JDBC的书库系统(MySQL)

一、创建数据库中的表 1、需求 有一张表叫javabook【创建表要求使用sql语句进行】 表中列 bookid 整数自增类型 表中列 bprice 小数类型 表中列 bookname 字符串类型 长度不能小于50 工程和包要求: domain dao …

内置RTK北斗高精度定位的4G执法记录仪、国网供电服务器记录仪

内置RTK北斗高精度定位的4G执法记录仪、国网供电服务器记录仪BD311R 发布时间: 2024-10-23 11:28:42 一、 产品图片: 二、 产品特性: 4G性能:支持2K超高清图传,数据传输不掉帧,更稳定。 独立北…

腾讯音乐2024Q3财报:“稳”是核心,再进一步

11月12日,腾讯音乐娱乐集团(以下简称“腾讯音乐”)发布了截至2024年9月30日止的第三季度未经审计财务报告,各项核心财务指标均符合市场预期。本季度总收入为70.2亿元,同比增长6.8%;调整后净利润为19.4亿元&…

地宫取宝(摘花生+最长上升子序列)C++

1212. 地宫取宝 - AcWing题库 #include <iostream>using namespace std;const int N 55; const int MOD 1000000007;int w[N][N],f[N][N][13][14]; int n,m,k;int main() {cin >> n >> m >> k;for (int i 1;i < n;i) {for (int j 1;j < m;j)…

2024 年 8 个最佳 API 设计工具图文介绍

8 个最佳 API 设计工具推荐&#xff0c;包括 Apifox、Postman、Swagger、Insomnia、Stoplight、Hoppscotch、RapidAPI和Paw。 详细介绍&#xff1a;2024 年 8 个最佳 API 设计工具推荐

minio 分布式

方案设计 需要5台服务器&#xff0c;一台nginx用作分发请求&#xff0c;4台minio服务器&#xff0c;每个minio服务器上至少2个盘。在这个方法中&#xff0c;我使用了lvm的缓存&#xff0c;在同种固态盘的情况下&#xff0c;可以使读性能提高数倍到十倍&#xff0c;使写性能提高…

kettle开发-Day43-数据对比

前言&#xff1a; 随着数字化的深入&#xff0c;各种系统及烟囱的建立&#xff0c;各系统之间的架构和数据存储方式不同&#xff0c;导致做数据仓库或数据湖时发现&#xff0c;因自建的系统或者非标准化的系统经常存在物理删除而不是软删除。这就延伸出一个问题&#xff0c;经常…

vscode中执行git合并操作需要输入合并commit信息,打开的nano小型文本编辑器说明-

1.前提&#xff1a; VScode中的git组件执行任何合并动作的时候需要提交远程合并的commit信息&#xff0c;然后编辑器自动打开的是nano文本编辑器 2.nano编辑器说明&#xff1a; 1.保存文件&#xff1a;按 Ctrl O&#xff0c;然后按 Enter 来保存文件。 2.退出编辑器&#xf…

Android音视频直播低延迟探究之:WLAN低延迟模式

Android WLAN低延迟模式 Android WLAN低延迟模式是 Android 10 引入的一种功能&#xff0c;允许对延迟敏感的应用将 Wi-Fi 配置为低延迟模式&#xff0c;以减少网络延迟&#xff0c;启动条件如下&#xff1a; Wi-Fi 已启用且设备可以访问互联网。应用已创建并获得 Wi-Fi 锁&a…

如何详细查询全球药品研发的进度信息?

药品的研发进展对于医药研发人员来说&#xff0c;不仅是知识和技能的积累&#xff0c;更是职业精神和价值观的塑造。通过了解药品的研发进展&#xff0c;研发人员可以更好地提高自己的专业知识和技能&#xff0c;激发创新思维&#xff0c;保持专业竞争力&#xff0c;提高研发效…