Android USB触摸屏HID描述符问题



我会尽可能清楚地描述我的问题。我正在尝试让触摸屏设备与安卓系统配合使用。该设备是一个USB设备,我让它在各种操作系统(Windows、Mac OS X、Ubuntu)中正常工作。在Android 4.0.4中,我似乎遇到了一个问题。有一些触摸反应,但不正确。触摸屏表现为一个触摸板,而不是一个绝对的触摸屏,此外,触摸也没有正确发生。

我一直在查看各种HID描述符,并发现以下可能导致安卓系统出现问题:

接口0 HID报告描述符鼠标项目标记(值)原始数据使用页面(通用桌面)05 01用法(鼠标)09 02收款(申请)A1 01用法(指针)09 01藏品(实物)A1 00使用页面(数字化仪)05 0D用法(触摸)09 33最低使用量(数字化仪)19 01最大使用量(数字化仪)29 01逻辑最小值(0)15 00逻辑最大值(1)25 01报告计数(1)95 01报告大小(1)75 01输入(Data,Var,Abs,NWrp,Lin,Pref,NNul,Bit)81 02报告计数(1)95 01报告大小(7)75 07输入(Cnst、Ary、Abs)81 01使用页面(通用桌面)05 01用法(X)09 30用法(Y)09 31逻辑最小值(0)15 00逻辑最大值(1024)26 00 04物理最低要求(16)35 10物理最大值(1024)46 00 04单元(无)65 00报告大小(16)75 10报告计数(2)95 02输入(数据、无功、绝对值、NWrp、Lin、NPrf、零位、位)81 62结束收集C0End Collection

现在看起来该设备同时报告为数字化器和触摸设备?该设备只是一个单触式"点按"设备,并报告绝对的X和Y坐标。

我想知道android是否在阅读这份报告时感到困惑,并因此加载了数字化器/平板电脑配置,而不是触摸屏配置?这里有一些指针http://source.android.com/tech/input/touch-devices.html,但我真的不明白这些事情是在哪里报告/定义的?

如有任何帮助,我们将不胜感激。如果需要,我可以从HID报告中发送更多信息。

根据我的分析,我给出了这个建议。取X和Y的逻辑最大值与物理最大值的比值。

factorValue=逻辑最大值/物理最大

将这个factorValue与来自触摸屏的原始坐标相乘,然后尝试发送到android。

通常,使用发送绝对坐标的鼠标设备至关重要。例如,在Linux上,由于X11中的错误和设计不当,这将不起作用。

你的描述肯定是错误的。您不能将鼠标和数字化仪混合使用
它们是两种不同的设备类别。数字化仪可以是触摸屏或笔,但不能是鼠标。你冒着司机不知道该怎么处理你的设备的风险。你的描述词不伦不类。

你混淆了不同的东西:使用页面"通用桌面"和使用页面"数字化仪"。

为了确保在我的项目中,我没有使用手工制作的描述符。我终于从ELO Touchsystems克隆了一个真正的触摸屏。这适用于我测试过的所有操作系统。我不能说它是否也适用于Android。

但你可以简单地试试我的描述:http://www.codeproject.com/Articles/1001891/A-USB-HID-Keyboard-Mouse-Touchscreen-emulator-with

最新更新