找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 3|回复: 0

[HIDL] HID Usage 编号逐字节拆解六步:取页、查表、标注、复核、归档

[复制链接]

341

主题

1263

回帖

4196

积分

abc

积分
4196
发表于 半小时前 | 显示全部楼层 |阅读模式
围绕「HID Usage 编号逐字节拆解六步:取页、查表、标注、复核、归档」,先把边界讲清楚,再谈结论。本页属于 HID 协议报文与描述符字节级解析专题,讨论的是Usage Page 与 Usage,重点是报文落到字节层面之后才出现的解释问题,而不是设备怎么选、链路怎么连或者效能怎么算。文中出现的每一个阈值都给出测量口径与适用边界;HID Usage编号、HID键盘页、HID字段偏移 等说法会在具体段落里落到可核对的字段与动作上,读者可以直接照着做一份按帧序号可检索的标注稿。本篇是第 2 簇的第 2 个角度,与同簇其余五篇互为补充,与站内其他专题则各自负责不同环节,不重复叙述。


一、Usage Page 与 Usage:先把定义与边界钉死

在展开细节之前,先约定三个词:帧指一次事务里承载的完整字节串,字段指帧内按位划出的一段,项指描述符里的一个前缀加数据单元。三者混用是Usage Page 与 Usage里最常见的沟通损耗。

对照结果要落到具体动作上,不能停在「解析正确」这种形容。我们要求每份记录至少给出三项:分歧出现在第几帧、错位定位在哪一位、据此调整了哪条取位规则。三项之外再附一张调整前后的对照表,用同一口径复算一遍,确认改善确实来自规则改动而非采集波动。若复算差异不明显,则本轮结论标为待观察,继续积累数据,不急着写进对照库。

就定义而言,Usage指的是Usage Page 给出大类,Usage 给出大类,而不是泛泛的「配置好了」。本站统一把前者作为可登记的字段,把后者只当作口头描述,二者在记录里不可互换。





二、Usage Page 与 Usage:按字节顺序逐项拆解

很多人把Usage Page 与 Usage当成一次性查表,查完就归档不再看。实际抓包里它会随设备批次、协议状态与报表 ID 持续变化,所以解析方法本身必须可重复执行。

在Usage Page 与 Usage的实际抓包里,第一步是把键盘页与Usage Page分开登记。前者描述字节层面的事实,后者描述解释层面的结论,二者混在同一张表里,换一批设备或换一次协议状态之后就没人能说清哪一行对应哪一段原始帧。我们要求登记时同时记录帧序号、采集时刻与所用规则版本三项,缺一项的条目统一标记为待补,不参与当轮统计。这样整理出来的标注稿,半年之后回看仍能逐条追溯到具体字节。

同一数值在不同页下含义完全不同,脱离页面编号单独解释 Usage 是抓包分析里最常见的错误。

隔离验证的做法是主动制造一次可控的局部异常:选定一个报表 ID,向其中注入一串已知帧,同时在相邻 ID 的通道抓包记录。合格判定是相邻通道零条串入、本通道回执完整、其余解析流程无感知。演练要覆盖自动与手动两条路径,因为自动分流存在误判可能,现场人员必须有一条不依赖系统的兜底操作。演练结论与影响帧数一起归档,作为下轮切分依据。

这一层做完应当产出一份按帧序号可检索的标注稿,而不只是一句「已解析」;可检索是复核的最低要求。


三、Usage Page 与 Usage:十六进制实例与数值对照

经验上,Usage Page 与 Usage的问题有一半以上出现在交接处:抓包交给一人、标注交给另一人、结论由第三人写,任何一方改了规则没通知另外两方,解释就会悄悄偏掉。

抓包最容易忽略的是「改规则之前的样子」。没有规则变更前快照,事后只能靠描述对比,描述又会被记忆修饰。我们在每轮解析前强制保存一次原始帧与规则版本,内容覆盖描述符、端点参数、分流表与解析脚本四层,文件按时间戳命名并只读保存。改完之后再解一遍,用工具输出新增、移除、变化三类字段清单,人工逐条确认。这一步把很多说不清的问题变成了能指出具体偏移的差异。

对照表建议按页分组保存,解析结果里同时输出十六进制值与中文名称两列,人工复核效率最高。

下表按同一口径整理,数值来自 16 帧原始报文、连续 4 个采集周期的重复抓包,仅用于建立比较基准;换型号或换协议状态之后应当重新测一遍并更新表格。

从长期维护看,Usage Page 与 Usage真正消耗精力的不是首次解析,而是持续漂移。设备换批、协议切换、临时改分流表都会让规则与现场慢慢分离。对策是把复核做成固定节奏:每周核对 ID 与帧长,每月做一次规则快照比对与演练,每季度重测容量上限。三个周期各管一类漂移,成本分散且可执行。所有复核结论汇总成一份趋势记录,用来判断解析链是稳定收敛还是反复在同一处出问题。

建议把本段的偏移量抄进现场卡片,复核时逐条念,避免不同批次用了不同的字段起点。


  • 字段对照表(Usage Page 与 Usage · 逐字节拆解顺序)
  • 页号宽度:1 字节常用(按前缀定)
  • 页作用范围:持续生效(直到改页)
  • Usage 宽度:1 / 2 字节(看前缀)
  • 对照表分组:按页(避免串义)
  • 解析输出:hex + 名称(便于人工复核)
  • 版本标注:必备(规范会增补)



四、Usage Page 与 Usage:容易误读的边界与陷阱

把逐字节拆解顺序单独拿出来讲,是因为它最容易被跳过。描述符看懂了、帧也抓了,但缺了这一步,前面攒下的标注稿在出问题时对不上号。

标注要能串起来才有价值。一次解析贯穿截取、拆位、对照三段,三段记录必须共用同一个帧编号;缺了编号,就只能靠时间戳猜测关联,而各采集口本地时钟相差几秒是常态。因此统一时钟源是前置条件,字段至少包含帧序号、采集时刻、设备标识、报表 ID、规则版本、结论六项。正常时段可降采样节省空间,异常时段强制全量保留,关键证据不能为了省容量被丢掉。

0x01 是通用桌面页,0x07 是键盘与键盘数组页,0x0C 是消费者控制页,编号含义由规范统一约定。

在Usage Page 与 Usage的实际抓包里,第一步是把编号对照表与通用桌面页分开登记。前者描述字节层面的事实,后者描述解释层面的结论,二者混在同一张表里,换一批设备或换一次协议状态之后就没人能说清哪一行对应哪一段原始帧。我们要求登记时同时记录帧序号、采集时刻与所用规则版本三项,缺一项的条目统一标记为待补,不参与当轮统计。这样整理出来的标注稿,半年之后回看仍能逐条追溯到具体字节。

把这一段的判定写进复核表,下次执行时按表打勾,比依赖当事人记忆稳得多。


六步逐字节拆解流程


  • 截取本轮参与的全部原始帧,标注采集时刻与设备标识,缺来源的帧先补登记,不直接进入拆位。
  • 按Usage Page确定位宽与字节序,把取位规则写进标注稿首页,避免不同批次各解各的。
  • 取一次规则变更前快照,内容覆盖描述符、端点参数、分流表与解析脚本四层,文件按时间戳命名只读保存。
  • 按单变量原则逐字节拆位,过程中不临时改掩码;确需调整时另起一轮并重新取快照。
  • 由非拆位人做对照,覆盖Usage与相邻报表 ID,输出通过或不通过两档结论。
  • 把原始 hex、标注稿与复核结论归入同一目录,验收通过的规则版本写入对照库并安排月度抽查。



五、Usage Page 与 Usage:压测记录与数据解读

先把字节边界划清楚。本篇只看Usage Page 与 Usage这一段,不延伸到设备选型、脚本写法或收益核算;本站其他专题各有归属,混在一起讲反而让字段解释失去基准。

复核环节建议让三方在场:拆位人说明怎么取的位,使用人说明现场表现,记录人核对证据是否齐全。三方视角不同,恰好能覆盖单一角色看不见的盲区。复核结论不用长篇,写清「通过 / 待补 / 回退」以及对应偏移即可;待补项要指定责任人与完成时间,不能挂着不闭环。复核记录与原始 hex 放在同一目录,供月度抽查时按帧序号调阅。

本轮对照从 16 帧起步,每档增加 5 帧,每档保持一个完整采集周期,记录帧率、待解队列与偏移分布三项。曲线在三档之后开始出现明显拐点,据此把分流阈值定在拐点之前,而不是等队列触顶再处理。

Usage Page 一旦设定会一直生效,直到下一个 Usage Page 项出现,因此跨段解析时不能只看紧邻的一行。

数据的可比性来自口径一致,而不是来自帧多。同一个Usage Page指标,若甲组按首帧起算、乙组按首个有效字段起算,两组数字放在一起只会制造争议。我们把每个指标都写成四段式定义:偏移、取位、剔除、归档,并配一条示例帧。新成员照着示例解一遍,得到的格式就与历史标注对齐,后续做跨批次、跨设备的对照才成立。

归档时把原始 hex、标注稿与判定结论放在同一目录,历史版本只读不覆盖。





六、Usage Page 与 Usage:检查清单与复盘归档

需要提醒的是,以下数值来自可控环境下的重复抓包,用于建立比较基准,不代表任何一批设备的绝对上限;换型号、换协议状态之后应当重测。

关于消费者页的验收,补一条边界说明:本文给出的偏移与阈值适用于可控环境下的重复抓包,用来建立同一套比较基准,不代表任意型号或任意协议状态下的绝对上限。换设备批次、换报表格式、采集节拍明显变化之后,应当重新跑一遍测量并更新基准表。把基准表连同采集条件一起归档,比只留一个数字有用得多,因为它说明了这个数字在什么前提下成立。

同一数值在不同页下含义完全不同,脱离页面编号单独解释 Usage 是抓包分析里最常见的错误。

关于Usage与消费者页的联动,还有一条经验:不要在同一轮里同时改两项。两项一起变,出问题时无法判断是哪一项引起的,只能整体回滚,前面所有抓包数据作废。单变量推进看起来慢,实际总耗时更短,因为每一轮都能得到确定结论。变更记录里应写明本轮只动了哪一处、预期字段变化是什么、实际观察是否一致,三行字省下的是后面半天的排查。

这类记录积累三五轮之后,就能看出趋势:是稳定收敛,还是每次都在同一个字节位置反复出问题。


复核检查清单


  • 每条 Usage 都带所属页号
  • 页号变更处已单独标注
  • 对照表版本已写明
  • 同值跨页用例已跑过
  • 中文名称与规范一致
  • 标注稿可检索


收束一下:Usage Page 与 Usage 的核心不是背下几个十六进制常数,而是让每次解析都留下可核对的字节链条。定义、取位、快照、对照、归档五件事齐了,报表格式从固定八字节换到自定义多路复用时,问题才不会变成一笔糊涂账。本篇给出的方法可以直接嵌进现场已有的抓包流程;若需要了解设备形态、接入拓扑、效能核算或工位搭配,可从页脚的全站入口进入对应专题,各页角度互不替代。

相关字节记录(更多 HID 报文字节解析)
1. HID 抓包怎么核:hex dump、帧序号与标注稿的三方对照
2. HID 修饰键怎么解:首字节八位位域与保留字节
3. HID 报表 ID 怎么分:前缀字节、多路复用与分流表

返回 HID 报文字节首页 · HID 产品·选购 · HID 技术·方案 · HID 实战·副业 · HID 百科 · HID 评测 · HID 安全·合规 · HID 行业情报 · HID 工位生态 · HID 效能账本 · HID 接入拓扑
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|

GMT+8, 2026-11-13 03:55

安卓脚本软件 · 键鼠盒子 · HID · 机械臂

快速回复 返回顶部 返回列表

随机推荐 · 热帖 / 新帖 / 随便看看

最新发布

社区会员(随机展示)