You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

HID-compliant单点触摸屏输入数据结构及字节赋值规则咨询

HID 单点触控屏输入数据结构及赋值规范

触摸屏没有键盘、鼠标类的通用HID启动协议,输入报告的结构完全由你使用的HID报告描述符定义,你使用的是微软官方提供的示例描述符,对应的规范如下:

字节序规则

所有16位多字节字段(X坐标、Y坐标、时间戳)统一采用小端序,即低字节在前、高字节在后,你代码中先放LOWBYTE再放HIGHBYTE的写法是符合规范的。

8字节触摸报告各字段赋值要求

  • report[0]:报告ID,固定填0x01,和你当前写法一致
  • report[1]:触摸状态位,定义如下:
    • 第0位:Tip Switch,置1表示触点按下,置0表示触点抬起
    • 第1位:In Range,置1表示触点在屏幕检测范围内
      你当前填写的0x3对应正常按下的状态,写法正确;如果要实现触点抬起动作,将该字段改为0x0即可。
  • report[2]report[3]:X轴坐标,16位无符号整数,取值必须和你报告描述符中定义的X轴逻辑最大/最小值匹配,比如描述符里定义X轴范围是032767,输入的坐标就不能超过32767。
  • report[4]~report[5]:Y轴坐标,规则和X轴坐标完全一致。
  • report[6]~report[7]:扫描时间戳,16位无符号整数,单位为微秒,你填写的0x0065是合法值,不需要精确时间戳的场景下也可以固定填0,不影响基础触摸功能。

常见异常排查

你注释中提到的第8字节触摸计数无效,是因为单触点的HID报告描述符中没有定义接触数量字段,只有多点触控的报告需要新增该字段,单触点场景下加这个字节反而会和描述符不匹配,导致系统解析数据错误。
如果当前触摸效果不符合预期,优先排查两个点:

  1. X、Y坐标的取值是否超出报告描述符中定义的逻辑范围,比如你描述符定义最大分辨率是1920*1080,传10000的坐标会被系统判定为超出屏幕范围,无响应或跳到边缘。
  2. 触点抬起时是否正确发送了状态位为0的报告,否则系统会判定触点一直处于按下状态,出现拖拽、点击异常。

内容的提问来源于stack exchange,提问作者Narek Aydinyan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 23:18:00