tslib 移植 相关整理


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




你可能感兴趣的:(触摸屏,qtlib,qtlib移植,qtlib环境变量)