OK6410 解决Qt移植后触摸屏不能使用、鼠标无法移动问题

来源:互联网 发布:二叉树求节点双亲算法 编辑:程序博客网 时间:2024/06/06 01:33

        一直在挂载下开发Qt程序,终于想要把它弄成开机自启动,折腾了一阵子,终于能开机自启动了,心里激动的不得了,试了试触摸屏,心又凉了半截。搞了两天,碰到了各种问题,还是解决了问题。不啰嗦了,直接给出解决步骤。

       我最初的问题是:启动的Qtopia可以正常用触摸屏,自己移植的Qt程序触摸屏无法使用,鼠标能正常使用,一碰屏幕鼠标就跑没了。想了一下,既然Qtopia可以使用触摸屏,那tslib绝对是没有问题的才对。于是根据网上大多数的解决办法:进入/bin/复制一份qt4脚本进行修改,将最后的三行去掉,改成自己运行的程序。我的怎么只有两行?估计是文件系统有点不一样,下图可见:


       改了以后发现问题更严重了,鼠标箭头卡在中间不能动了,触摸屏和鼠标一个都不能用,我无语了,这是什么原因?

      没办法,只能继续找度娘,找了半天,试了半天,发现没一个可靠的,还是不行,想想不然放弃吧,触摸屏不行将就使用鼠标吧。感觉遇到困难的时候越不能放弃,因为这时候离成功很近了。突然想到之前看到一个cat event0,反正之前是没什么想法,但是就觉得这是个突破口,果断试了一下:

1.进入开发板的/dev/input/目录下,发现有好几个event,mouse。

2.一个个试event,运行命令,把event0,event1....都时一下:

cat event0
然后在触摸屏上划几下,如果有响应(很多乱码),那么它代表的就是触摸屏了,我的是event2,感觉成功了一大半了。




3.在/bin/目录下复制一个qt4,命名为setqt4env:

cp /bin/qt4 /bin/setqt4env
接下来就是修改setqt4env了,将最后两行改成自己需要运行的程序比如我的:

./bin/First -qws

这里有一个非常重要的地方,网上的解决方案就是修改这里了,但是这时候必须要修改setqt4env,必须要根据自己的环境更改。我的Qt程序是用Qt4.4.3编译的,文件系统中的也相对应是采用Qt4.4.3(opt下的Qt4.7.1等都让我给删了,太大了),需要修改配置文件,现在将我改好的配置文件发出来参考:


#!/bin/shexport QTDIR=/opt/Qtopia4.4.3/export QPEDIR=/opt/Qtopia4.4.3export PATH=/opt/Qtopia4.4.3/bin:/sbin:/usr/sbin:/bin:/usr/binexport QT_QWS_FONTDIR=/opt/Qtopia4.4.3/lib/fonts/export QWS_DISPLAY=LinuxFb:mmWidth76:mmHeight44:1export TSLIB_CALIBFILE=/etc/pointercalexport TSLIB_CONFFILE=/usr/local/tslib/etc/ts.confexport TSLIB_CONSOLEDEVICE=noneexport TSLIB_FBDEVICE=/dev/fb0export TSLIB_PLUGINDIR=/usr/local/tslib/lib/tsexport TSLIB_ROOT=/usr/local/tslibexport TSLIB_TSDEVICE=/dev/input/event2export TSLIB_TSEVENTTYPE=H3600export QT_PLUGIN_PATH=/opt/Qtopia4.4.3/plugins:/opt/Qtopia4.4.3/qt_plugins/export QWS_MOUSE_PROTO="Tslib:/dev/input/event2"export LD_LIBRARY_PATH=$QTDIR/plugins/qtopialmigrate/:$QTDIR/qt_plugins/imageformats/:$QTDIR/lib:/usr/local/tslib/lib:$LD_LIBRARY_PATHexport PATH=/opt/Qtopia4.4.3/bin:/bin:/sbin:/usr/bin/:/usr/sbin:/usr/local/tslib/binif [ -c /dev/input/event2 ]; then        echo "touch..."        export QWS_MOUSE_PROTO='Tslib:/dev/input/event2'             if [ ! -e /etc/pointercal ]; then             /bin/calibrate        fi               if [ -e /etc/pointercal -a ! -s /etc/pointercal ] ; then                rm /etc/pointercal                /bin/calibrate        fielse        echo "mouse..."        export QWS_MOUSE_PROTO="MouseMan:/dev/input/mouse1"        >/etc/pointercalfiexport QWS_KEYBOARD=TTY:/dev/tty1FB_SIZE=$(cat /sys/class/graphics/fb0/virtual_size)#export QWS_DISPLAY="LinuxFb:mmWidth76:mmHeight44:1"case "$FB_SIZE" in800,480)export QWS_DISPLAY="LinuxFb:mmWidth91:mmHeight53:1";;480,272)export QWS_DISPLAY="LinuxFb:mmWidth76:mmHeight44:1";;*)export QWS_DISPLAY="LinuxFb:mmWidth91:mmHeight53:1";;esac#export QWS_DISPLAY=:1./bin/First -qws


</pre><p></p><pre>
4.然后就是修改/etc/init.d/rcS文件了,将最后一句启动Qtopia的命令去掉换成:

/bin/setqt4env &


5.最后将Qt程序First放到bin中就可以了。



2 0
原创粉丝点击