4

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

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

接口 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
        输入(数据、Var、Abs、NWrp、Lin、NPrf、Null、Bit)81 62
    结束收集 C0
结束收藏

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

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

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

4

2 回答 2

2

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

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

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

于 2013-01-23T12:46:48.347 回答
1

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

你的描述肯定是错误的。您不能混合使用鼠标和数字化仪。
它们是两个不同的设备类别。数字化仪可以是触摸屏或笔,但不是鼠标。您冒着司机不知道如何处理您的设备的风险。你的描述符既非鱼非禽。

您正在混淆不同的东西:使用页面“通用桌面”与使用页面“数字化器”。

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

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

于 2015-06-18T17:03:07.740 回答