tslib的打补丁、编译、安装可参见博文:
http://blog.csdn.net/niyufeng/article/details/7546796
(如果原文链接失效,可来这里看:http://blog.csdn.net/newthinker_wei/article/details/8639276)
按照上文中的步骤编译前,要注意先设置CC等环境变量,不然编译完后运行时会出现./ts_calibrate: line 1: syntax error :”(” unexpected. 这样的错误。这一点上文中没有强调,我就犯了这样的错误。
大概就是这几项:
export PATH=$PATH:交叉工具链路径/bin
export CC=arm-linux-gcc
export CXX=arm-linux-g++
编译安装好后,按照上文说的,在自动生成的ts.conf文件开头加上一句:module_raw one_wire_ts_input。这只后,剩下的就是设置环境变量了。我设置的方式跟上文中的不太一样,被作者注释掉的那些环境变量我都加上了。
export TSLIB_ROOT=XXXXXXXXX (这些XXX都按照自己的情况修改)
export TSLIB_CALIBFILE=XXXXXXXXX
export TSLIB_CONFFILE=XXXXXXXXX
export TSLIB_PLUGINDIR=XXXXXXXXX
export TSLIB_CONSOLEDEVICE=none
export TSLIB_FBDEVICE=/dev/fb0
export TSLIB_TSDEVICE=/dev/touchscreen-1wire
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$TSLIB_ROOT/lib
export PATH=$TSLIB_ROOT/bin:$PATH
这样设置好后,我这里还要多设置一个环境变量,QWS_MOUSE_PROTO,否则QT程序还是不能接受触摸屏输入。
" http://blog.chinaunix.net/uid-26310563-id-3167509.html " 这篇博文里,有下面这样几句话,对配置环境变量QWS_MOUSE_PROTO有点用:
“
QWS_MOUSE_PROTO是鼠标的设置,Tslib表示使用tslib类型鼠标,即触摸屏,/dev/input/event表示触摸屏对应的设备节点,要与移植tslib时设置的环境变量TSLIB_TSDEVICE一致。如果想要同时支持USB鼠标,设置如下:
export QWS_MOUSE_PROTO="Tslib:/dev/input/event0 Intellimouse:/dev/input/mouse0"
”
目前我的环境变量是这样设置的(编译好的tslib包我直接放到了/usr/local下面,并改名为 tslib_myown,因为友善的系统上已经有现成的tslib了,改下名字以区分开):
#! /bin/sh
export TSLIB_ROOT=/usr/local/tslib-myown #tslib的根目录。这个不是必须的,tslib的相关文件可以分散放开,但最好别这样做,不易管理。
export TSLIB_CALIBFILE=$TSLIB_ROOT/etc/pointercal #校准结果文件。安装好tslib,运行ts_calibrate校准后,这个文件存储了校准信息,是以后系统计算触点坐标要用到的参数。
export TSLIB_CONFFILE=$TSLIB_ROOT/etc/ts.conf #tslib的配置文件
export TSLIB_PLUGINDIR=$TSLIB_ROOT/lib/ts #tslib的插件目录
export TSLIB_CONSOLEDEVICE=none #
export TSLIB_FBDEVICE=/dev/fb0 # 对应的帧缓冲设备
export TSLIB_TSDEVICE=/dev/touchscreen-1wire #触摸屏的设备节点
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$TSLIB_ROOT/lib
export PATH=$TSLIB_ROOT/bin:$PATH
#export QWS_MOUSE_PROTO="Tslib MouseMan:/dev/input/mice"
#export QWS_MOUSE_PROTO="Tslib :/dev/input/mouse0"
export QWS_MOUSE_PROTO="Intellimouse:/dev/input/event0 Tslib :/dev/touchscreen-1wire" #鼠标协议
这样设置之后,触摸屏可以用了,但原来可以使用的鼠标,现在却也不能用了,即使我在QWS_MOUSE_PROTO里设置了Intellimouse(如最后一行所示),也不行。现在还不清楚到底为何,等以后搞定了再回来补充上。
附加:
1.
关于如何指定显示效果(如旋转屏幕),在刚才提到的博文http://blog.chinaunix.net/uid-26310563-id-3167509.html中,有这样一段,以后可能会用到。
“
QWS_DISPLAY指定显示形式和framebuffer。格式如下:
export QWS_DISPLAY="<driver>[:<driver specific options>] [:<display num>]"
<driver>的有效参数是LinuxFb, QVFb, VNC, Transformed, Multi 和 keys identifying custom drivers,<display num>的参数通常是用来区分是否是相同的显示屏和是否支持多显示屏,这里设置为0。
驱动详细选项 |
可用的 |
描述 |
mmWidth=<value> |
LinuxFb, QVFb |
屏幕的物理宽度 (通常是按分辨率计算). |
mmHeight=<value> |
LinuxFb, QVFb |
屏幕的物理宽度 (通常是按分辨率计算). |
<subdriver> |
VNC, Transformed, Multi |
指定一个子驱动. |
<RotX> |
Transformed |
屏幕的旋转角度x的有效值为90,180,270. |
mmWith和mmHeight的值的大小与Qt应用程序在LCD上显示的字体和控件大小有关系。VNC, Transformed和Multi screen drivers都依赖子驱动. 指定一个驱动的一般方法如下:
export QWS_DISPLAY="<driver>[:<subdriver>][:<subdriver options>] [:<display num>]
如果想要在原来设置的基础上把屏幕旋转90度,参数值设置如下:
QWS_DISPLAY=
Transformed
:Rot90:
LinuxFb:mmWidth95:mmHeight54:0
”
2. QWS_MOUSE_PROTO环境变量的设置规则,参见:http://www.cnblogs.com/baizx/archive/2010/04/08/1707790.html
如果这个链接失效,来这里看: http://blog.csdn.net/newthinker_wei/article/details/8639716