我会尽可能清楚地描述我的问题。我正在尝试使用Android的触摸屏设备。该设备是一个USB设备,我可以在各种操作系统(Windows,Mac OS X,Ubuntu)中正常工作。在Android 4.0.4中,我似乎遇到了问题。有一些触摸响应,但它是不正确的。触摸屏表现为触摸板而不是绝对触摸屏,触摸也没有正确发生。
我一直在查看各种HID描述符,并发现以下可能导致Android出现问题:
Interface 0 HID Report Descriptor Mouse Item Tag (Value) Raw Data Usage Page (Generic Desktop) 05 01 Usage (Mouse) 09 02 Collection (Application) A1 01 Usage (Pointer) 09 01 Collection (Physical) A1 00 Usage Page (Digitizer) 05 0D Usage (Touch) 09 33 Usage Minimum (Digitizer) 19 01 Usage Maximum (Digitizer) 29 01 Logical Minimum (0) 15 00 Logical Maximum (1) 25 01 Report Count (1) 95 01 Report Size (1) 75 01 Input (Data,Var,Abs,NWrp,Lin,Pref,NNul,Bit) 81 02 Report Count (1) 95 01 Report Size (7) 75 07 Input (Cnst,Ary,Abs) 81 01 Usage Page (Generic Desktop) 05 01 Usage (X) 09 30 Usage (Y) 09 31 Logical Minimum (0) 15 00 Logical Maximum (1024) 26 00 04 Physical Minimum (16) 35 10 Physical Maximum (1024) 46 00 04 Unit (None) 65 00 Report Size (16) 75 10 Report Count (2) 95 02 Input (Data,Var,Abs,NWrp,Lin,NPrf,Null,Bit) 81 62 End Collection C0 End Collection
现在它看起来像设备报告为数字转换器和触摸设备?该设备只是一个单点触摸“点按”设备,并报告绝对X和Y坐标。
我想知道android是否因为阅读此报告而感到困惑,因此加载数字转换器/平板电脑配置而不是触摸屏?这里有一些指针http://source.android.com/tech/input/touch-devices.html,但我真的不明白这些事情的报道/定义在哪里?
非常感谢任何帮助。如有必要,我可以从HID报告中发送更多信息。
答案 0 :(得分:2)
根据我的分析,我给出了这个建议。 取X和Y的逻辑最大因子到物理最大值。
factorValue =逻辑最大值/ Physica最大值
将此factorValue与来自触摸屏的原始坐标相乘,然后尝试发送到android。
答案 1 :(得分:1)
通常,使用发送绝对坐标的鼠标设备至关重要。例如在Linux上,由于X11中的错误和错误设计,这将无法工作。
你的描述符肯定是错的。你不能混合鼠标和数字化仪 它们是两种不同的设备类别。数字转换器可以是触摸屏或笔,但不是鼠标。您冒着驾驶员不知道如何处理您的设备的风险。你的描述既不是鱼也不是鸡。
你正在混淆不同的东西:用法页面"通用桌面"使用页面"数字化仪"。
为了确保我的项目,我不使用手工制作的描述符。我终于从ELO Touchsystems克隆了一个真正的触摸屏。这适用于我测试过的所有操作系统。我不能说它是否也适用于Android。
但你可以简单地尝试我的描述符: http://www.codeproject.com/Articles/1001891/A-USB-HID-Keyboard-Mouse-Touchscreen-emulator-with