24、TSP测试工具:tslib、evtest、触摸屏测试APK

做驱动开发这些年,我有个习惯——拿到一块新触摸屏,先不急着调参数,而是先跑一遍测试工具。为什么?因为工具能告诉你最原始的数据,比看代码直观多了。今天咱们就聊聊三款我常用的TSP测试工具:tslib、evtest,还有那些触摸屏测试APK。

24.1 底层调试利器:evtest

evtest 是我个人最常用的工具,没有之一。它直接读取Linux内核的输入事件,说白了就是看驱动上报的原始数据。

安装与使用

# 安装
sudo apt-get install evtest

# 查看所有输入设备
evtest --grab /dev/input/eventX

# 或者先列出设备
sudo evtest

运行后会看到类似这样的输出:

Input device ID: bus 0x0018 vendor 0x0001 product 0x0001 version 0x0100
Input device name: "Goodix Capacitive TouchScreen"
Testing ... (interrupt to exit)

Event: time 1623456789.123456, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 520
Event: time 1623456789.123456, type 3 (EV_ABS), code 54 (ABS_MT_POSITION_Y), value 860
Event: time 1623456789.123456, type 1 (EV_KEY), code 330 (BTN_TOUCH), value 1
Event: time 1623456789.123789, type 3 (EV_ABS), code 58 (ABS_MT_PRESSURE), value 45

关键点:看到type 3是绝对坐标事件,type 1是按键事件。如果触摸没反应,先看有没有event上报——这是最直接的排查手段。

我的经验:曾经有个项目,触摸屏偶尔断触。用evtest抓了半小时数据,发现压力值(ABS_MT_PRESSURE)在某个区域突然跳变。后来发现是FPC排线接触不良,换个排线就好了。你看,工具不会骗人。

24.2 上层校准神器:tslib

tslib 是触摸屏校准的祖师爷级工具。虽然现在很多Android设备不用它了,但嵌入式Linux开发中依然很常见。

tslib 的核心组件

模块 功能 我常用的场景
ts_read 读取原始触摸数据 验证驱动是否正常上报
ts_calibrate 五点校准,生成校准参数 电阻屏必用,电容屏偶尔用
ts_test 图形化测试界面 快速验证触摸线性度
ts_uinput 将校准后的数据注入uinput 兼容老旧应用

校准流程

# 1. 设置环境变量
export TSLIB_TSDEVICE=/dev/input/event0
export TSLIB_CALIBFILE=/etc/pointercal
export TSLIB_CONFFILE=/etc/ts.conf

# 2. 运行校准程序
ts_calibrate

# 3. 测试校准效果
ts_test

注意:tslib 的校准参数是保存在 /etc/pointercal 文件里的。我曾经遇到过升级固件后校准参数丢失的情况,触摸完全错位。解决办法很简单——备份这个文件,或者写个脚本在启动时自动校准。

24.3 触摸屏测试APK

在Android平台上,我习惯用几款测试APK来做功能验证。它们比命令行工具直观得多。

推荐APK列表

  • TouchScreenTest:显示触摸点坐标、压力值、触摸面积,支持多点触控
  • MultiTouch Tester:专门测试多点触控,能看到每个手指的轨迹
  • YAMTT(Yet Another MultiTouch Test):开源,可以自定义测试模式

测试要点

  1. 单点测试:用手指在屏幕画直线、画圆,看轨迹是否平滑
  2. 多点测试:用两个手指做缩放、旋转操作,看是否卡顿或跳点
  3. 边缘测试:触摸屏幕四个角和边缘,看坐标是否准确
  4. 压力测试:轻触和重压,看压力值变化是否线性

避坑指南:我曾经用一款测试APK发现触摸屏在左上角有2mm的偏移。一开始以为是驱动问题,折腾了两天。后来换了个APK测试,发现偏移消失了——原来是那个APK本身有bug。所以,我建议至少用两款不同的APK交叉验证。

24.4 三款工具的对比

工具 适用场景 优点 缺点
evtest 驱动调试、底层问题排查 直接看原始事件,最真实 需要命令行,不够直观
tslib 校准、嵌入式Linux开发 功能完整,有校准算法 Android上用得少
测试APK 功能验证、用户体验测试 图形化,直观易用 可能引入APK自身的误差

24.5 知识体系总览

下面这张图是我自己整理的TSP测试工具知识结构,你看一眼就能明白它们之间的关系:

TSP测试工具知识体系 evtest tslib 测试APK 读取原始输入事件 校准与坐标转换 功能与用户体验验证 查看坐标/压力/事件类型 五点校准 / 参数保存 多点触控 / 边缘测试 建议:三种工具交叉验证,避免单一工具误导 evtest查底层 → tslib做校准 → APK验功能

你看,这三款工具各有侧重。evtest 看最底层的数据,tslib 做校准和转换,APK 做最终的功能验证。我个人习惯的流程是:先用 evtest 确认驱动有数据上报,再用 tslib 做校准(如果需要的话),最后用 APK 跑一遍功能测试。这样一套下来,触摸屏的问题基本都能暴露出来。

小技巧:如果你在调试时发现触摸坐标不准,别急着改驱动。先试试 tslib 的校准,很多时候是屏幕和触摸屏的贴合偏差导致的,校准一下就好了。我曾经在一个平板项目上,校准前后坐标偏差了3mm,校准后完全正常。

公众号:蓝海资料掘金营,微信deep3321