我正在努力校准 Android 平台上的触摸屏。
它是来自供应商 0dfc
和产品 0001
的 USB 单点触控触摸屏,使用 dmesg
进行检查:
<6>[ 4118.091541] input: USB Touchscreen 0dfc:0001 as /devices/platform/usb20_host/usb2/2-1/2-1.3/2-1.3:1.0/input/input23
我正在推送
Vendor_0dfc_Product_0001.idc
文件 /data/system/devices/idc/
(遵循 android source - IDC 的文档我得到了具有单点触摸事件所有要求的触摸设备:
root@android:/ # getevent -il /dev/input/event3
add device 1: /dev/input/event3
bus: 0003
vendor 0dfc
product 0001
version 0202
name: "USB Touchscreen 0dfc:0001"
location: "usb-usb20_host-1.3/input0"
id: ""
version: 1.0.1
events:
KEY (0001): BTN_TOUCH
ABS (0003): ABS_X : value 540, min 0, max 32767, fuzz 0, flat 0, resolution 0
ABS_Y : value 289, min 0, max 32767, fuzz 0, flat 0, resolution 0
input props:
<none>
我还启用了
Pointer Location
(Android 设置)中的 Developer options
选项,以便调试此阶段的校准。设置 1
touch.deviceType = touchScreen
使用此设置 ( 1 ),触摸屏上的所有手势都发生在 左上角 - 无论手势(滑动)都向左/向右/向上/向下几个像素。所有的触摸屏都得到事件。所有的手势都是相反的 - 向左滑动时,指针向右;向上滑动时,指针向下。
设置 2
touch.deviceType = pointer
touch.gestureMode = pointer
使用此设置 ( 2 ),正如预期的那样,它显示了一个指针,放置在距离最后一个指针设备(鼠标)的位置。触摸屏上的所有手势(无论滑动大小如何)都像 setup 1 一样保持波动 - 每个滑动事件仅移动几个像素,并且轴反转。
设置 3
touch.deviceType = pointer
touch.gestureMode = spots
使用此设置 ( 3 ),结果与设置 2 相同。我这样做只是为了证明 IDC 文件被正确解释。
在这个阶段,正如您现在可以检查的那样,我有一个 工作 IDC 文件( setup 1 ) 需要为此触摸设备校准 。
我尝试了很多来自其他 IDC 文件(互联网样本)和来自 android source - IDC - 任何其他属性影响(不是一个单一的)的组合 -
raw.*
, output.*
, touch.size.*
有谁知道如何在 Android 中正确校准触摸屏以指导我完成此过程?
谢谢
最佳答案
同样在这里,
但我的校准应用程序没有做任何事情。
过了一会儿,阅读/system/etc/init.sh 我发现以下内容:
”
mkdir -p/data/misc/tscal
触摸/数据/杂项/tscal/pointercal
chown 1000.1000/data/misc/tscal/data/misc/tscal/*
chmod 775/data/misc/tscal
chmod 664/data/misc/tscal/pointercal
”
只需手动运行这些命令,重新启动,然后启动校准应用程序
关于安卓触摸屏IDC,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26021616/