CLUSTER / Collection 嵌套与闭合
76
HID Collection 怎么配:Application 与 Physical 的层级划分
HID Collection 怎么配:Application 与 Physical 的层级划分。本篇围绕Collec…
READ BYTES →这不是又一份设备选购指南。本页只做一件事:把描述符与数据帧摊开,逐字节标出偏移、位宽、字节序与解释值,让「为什么这一帧读出来是这个数」变成能回到原始 hex 的确定结论。十五簇、九十篇逐字节拆解记录,按三十天逐日释放。
讨论 HID 设备时,大多数资料停在「能连上、能按键、能移动」这一层,一旦追问「这一串字节里哪一位代表什么」,就只剩下零散的规范摘录。本专题把视角压到字节层面:描述符是变长的项序列,数据帧是按位宽拼出来的字段集合,两者之间靠一张状态机联系起来。前缀字节的低两位决定后面跟几个数据字节,全局项赋值之后一直沿用到下一次同项出现,局部项在遇到主项之后立即清空;这三条规则合在一起,才解释得了为什么同样的十六进制值在不同位置会被读成完全不同的东西。
我们的记录方式很朴素:先截取一段完整原始帧,连同采集时刻、设备标识与所用规则版本一起存;再按描述符确定每个字段的偏移与位宽,逐字节标注十六进制值、十进制解释与中文名称;然后由第二个人用另一套规则独立解一遍,把分歧列成对照表;最后把原始 hex dump、标注稿与判定结论归入同一目录,历史版本只读不覆盖。这样整理出来的结果,半年之后回看仍能逐条追到具体帧,而不是靠当事人补写记忆。文中出现的所有偏移与阈值都来自可控环境下的重复抓包,用于建立同一套比较基准,换设备批次、换报表格式之后应当重测;把测量条件连同数字一起归档,比只留一个结论有用得多。
十五簇覆盖报表描述符总览、Usage Page 与 Usage、Collection 嵌套、全局项状态机、局部项复位、三类主项位标志、中断端点轮询、控制传输类请求、引导协议切换、修饰键位域、补码位移、小端拼装、报表 ID 分流、抓包校验与异常帧回归。每簇六个角度:字段定义、逐字节拆解、十六进制实例、误读边界、抓包复现、复核清单。九十篇互为补充,与站内其他专题各自负责不同环节,不重复叙述。读者若需要设备形态、接入拓扑、效能核算或工位搭配,可从页脚的全站入口进入对应专题。
键值、位移与滚轮等业务语义在这一层落地。上层拿到的是解释后的字段,而不是原始字节;本层出错通常表现为「动作对了、含义错了」。
等距图不是装饰。五层分别对应物理层、传输层、描述符层、报表层与应用层,任何一次解析争议都可以先定位到某一层再讨论:物理层看端点方向与最大包长,传输层看轮询间隔与帧重组,描述符层看前缀与项序列,报表层看位宽、字节序与报表 ID,应用层看 Usage 编号与业务语义。点击左侧任意一层即可切换右侧说明与典型字段。
第 0 字节是修饰键位域,八位分别对应左右 Ctrl、Shift、Alt、GUI,判断某个键是否按下要做按位与,不等于零即有效;把它当成一个键码数值是最常见的误读。
第 1 字节固定为保留位,正常应恒为零。长期非零时优先怀疑描述符与解析规则不匹配,而不是先改业务代码。
第 2 到第 7 字节是六个键值槽,槽里放的是 Usage 编号,不是 ASCII 码。全零帧表示所有键已释放,属于正常状态,统计按键次数时应排除。
若设备带报表 ID,整帧最前面会多一字节前缀,且它不计入描述符算出的位宽;此时请把输入改成九字节再观察第一槽如何整体后移一位。
把 0xFE 当无符号读,得到 254;按 8 位补码读,得到 -2。鼠标向左移动两格与向右猛移 254 格,在十六进制里长得一模一样,区别全在符号扩展有没有做。
超过一字节的数值还要按小端顺序拼回来:低位字节在前、高位字节在后。字段若落在非整字节边界上,例如 12 位字段跨两个字节,必须先用移位与掩码取出,再按声明的逻辑范围决定要不要做符号扩展。
因此解析器的输入不止是字节串,还包括三项前提:位宽、字节序、逻辑范围。三项缺一,解释值就只是猜测。
下面这些长尾词按主题分散进入九十篇文章的标题、二级标题、十六进制对照表与复核清单,而不是集中堆在落地页标题里。这样做的目的很朴素:让每篇文章回答一个具体问题,例如「缺一个 0xC0 之后字段如何整体偏移」「0xFE 为什么不是 254」,而不是用一串词去换一个排名。落地页元信息只保留少量核心词,其余全部落到正文语境中;点击任意节点可展开该簇的字节边界说明。
CLUSTER / Collection 嵌套与闭合
76
HID Collection 怎么配:Application 与 Physical 的层级划分。本篇围绕Collec…
READ BYTES →
CLUSTER / Usage Page 与 Usage
69
HID Usage Page 怎么定:通用桌面页、键盘页与消费者页的编号边界。本篇围绕Usage Page 与 Us…
READ BYTES →
CLUSTER / 报表描述符总览
62
HID 报表描述符怎么读:前缀字节、项标签与数据长度的拆分规则。本篇围绕报表描述符总览展开,给出字段定义、六步逐字节…
READ BYTES →