使用tslib驱动U30gt的触摸屏
-
测试触摸屏是否可用。参考https://wiki.archlinux.org/index.php/Touchscreen其中的命令。如果成功,则表明kernel中的驱动可用,接下来,还要让其在window server中也可用,这就需要另外一个X下面的驱动。
-
安装xserver-xorg-input-tslib和libts-bin这两个package。运行“evtest /dev/input/event1”,你会看到很多类似ABS_MT_POSITION_X这样的事件。MT表示multi-touch。但是当前的tslib并不支持多点触摸,所以要把多点触摸的事件转换为单点的。修改很简单,只是个简单的替换,比如前面的消息需要替换成ABS_X。还要改的是ABS_MT_POSITION_Y和ABS_MT_PRESSURE。改好后用ts_test测试,确保这个可以过。有这个小工具就会事半功倍。
-
运行xfce,如果触摸屏不能用,那么还要修改xserver-xorg-input-tslib这个驱动。打开xf86-input-tslib/src/tslib.c,去掉其中的对xf86XInputSetScreen调用。
-
这两个package的修改可以用“apt-get build-dep xxx;apt-get source xxx; make; make install”方式。
-
evdev其实已经支持多点触摸,那为什么默认的配置不能用呢?可能有些兼容性的问题。另外,我尝试修改ft5406的驱动,关掉multi-touch的标志,这样就可以产生ABS_X和ABS_Y。但是奇怪的是没有ABS_PRESSURE。