I.MX6 linux Qt 同时支持Touch、mouse

简介: /***************************************************************************** * I.MX6 linux Qt 同时支持Touch、mouse * 声明: * 在Qt上,有时候当没有Touch的时候,我们会希望鼠标还是能够使用的,于是乎 * 这又变成了一个看上去必须的需求了,所以这也就变成了一个需要解决的问题,当然 * 这又解决Touch存在还是不存在的问题,以及如何跟mouse共存的问题。
/*****************************************************************************
 *                  I.MX6 linux Qt 同时支持Touch、mouse
 * 声明:
 *     在Qt上,有时候当没有Touch的时候,我们会希望鼠标还是能够使用的,于是乎
 * 这又变成了一个看上去必须的需求了,所以这也就变成了一个需要解决的问题,当然
 * 这又解决Touch存在还是不存在的问题,以及如何跟mouse共存的问题。
 *
 *                                          2016-1-13 深圳 南山平山村 曾剑锋
 ****************************************************************************/


一、参考文档:
    1. Qt移植对USB鼠标键盘、触摸屏的支持
        http://blog.csdn.net/sno_guo/article/details/16897577
    2. QT 同时支持鼠标和触摸屏
        http://www.cnblogs.com/leaven/archive/2010/11/24/1886774.html

二、/etc/profile修改:
    ......
    # 计数值的上限,仅仅是为了方便修改,不用到代码里去修改这个值
    limitForWaitTime=80
    # 循环计数
    waitTimeCount=0
    while [ -z $touchEvent ]
    do
        inputCheckLine=`cat /proc/bus/input/devices | grep -n "Vendor=0eef" | grep "Product=0020 Version=0001"| awk -F: '{print $1}'`
        touchEvent=`sed -n "$((${inputCheckLine}+5))p" /proc/bus/input/devices | grep -o "event."`
        echo "please hang up USB TOUCH !"
        waitTimeCount=$((waitTimeCount+1))
        if [ $waitTimeCount -gt $limitForWaitTime ]; then
            break
        fi
        usleep 1000
    done
    
    ......
    
    export TSLIB_ROOT=/usr/local/tslib-instal
    export TSLIB_CALIBFILE=/etc/pointercal   
    export TSLIB_CONFFILE=$TSLIB_ROOT/etc/ts.conf    
    export TSLIB_PLUGINDIR=$TSLIB_ROOT/lib/ts 
    export TSLIB_FBDEVICE=/dev/fb0   
    export PATH=/usr/local/tslib-instal:$PATH
    export LD_LIBRARY_PATH=/usr/local/Trolltech/QtEmbedded-4.8.5-arm/lib
    export QT_QWS_FONTDIR=/usr/local/Trolltech/QtEmbedded-4.8.5-arm/lib/fonts
    
    # 注释掉的内容,会导致如下错误:
    #     -sh: [: argument expected
    #if [ -f /etc/pointercal -o -z $touchEvent ];then
    if [ -f /etc/pointercal ] || [ -z $touchEvent ];then
        echo "MXS touchscreen have calibrate!"
    else 
        # 这里一定不能用注释的这两行,否则会导致ts_calibrate闪退
        #export TSLIB_TSDEVICE="tslib:/dev/input/${touchEvent}"
        #export QWS_MOUSE_PROTO="tslib:/dev/input/${touchEvent}"
        export TSLIB_TSDEVICE=/dev/input/${touchEvent}
        export QWS_MOUSE_PROTO=/dev/input/${touchEvent}
        /usr/local/tslib-instal/bin/ts_calibrate
        sync
    fi
    
    # 注释掉的内容,如果系统运行起来之后,还没有插入鼠标,会导致如下错误:
    #     Error opening mouse device '/dev/input/mouse0': No such file or directory
    # ts_devices="mouseman:/dev/input/mouse0"
    ts_devices="mouseman:/dev/input/mice"
    if [ ! -z $touchEvent ]; then

        export TSLIB_TSDEVICE=/dev/input/${touchEvent}

        # 注释掉的内容写法会导致如下错误:
        #     -sh: ts_devices+= tslib:/dev/input/event4: No such file or directory
        #ts_devices+=" tslib:/dev/input/${touchEvent}"

        # 注释掉的内容,如果系统运行起来之后,还没有插入鼠标,会导致如下错误:
        #     Error opening mouse device '/dev/input/mouse0': No such file or directory
# 看到有些地方写:MouseMan
# 有些地方写:tslib MouseMan #ts_devices
="mouseman:/dev/input/mouse0 tslib:/dev/input/${touchEvent}" ts_devices="mouseman:/dev/input/mice tslib:/dev/input/${touchEvent}" fi export QWS_MOUSE_PROTO=$ts_devices ......

 

目录
相关文章
|
8月前
|
Web App开发 存储 Linux
Linux(33)Rockchip RK3568 Ubuntu22.04上通过SSH运行Qt程序和关闭Chrome的密钥提示
Linux(33)Rockchip RK3568 Ubuntu22.04上通过SSH运行Qt程序和关闭Chrome的密钥提示
508 0
|
8月前
|
Linux 数据处理 C++
Linux系统编程 C/C++ 以及Qt 中的零拷贝技术: 从底层原理到高级应用(一)
Linux系统编程 C/C++ 以及Qt 中的零拷贝技术: 从底层原理到高级应用
326 0
|
8月前
|
存储 Linux API
Linux系统编程 C/C++ 以及Qt 中的零拷贝技术: 从底层原理到高级应用(三)
Linux系统编程 C/C++ 以及Qt 中的零拷贝技术: 从底层原理到高级应用
137 1
|
8月前
|
消息中间件 Linux 数据处理
Linux系统编程 C/C++ 以及Qt 中的零拷贝技术: 从底层原理到高级应用(二)
Linux系统编程 C/C++ 以及Qt 中的零拷贝技术: 从底层原理到高级应用
222 1
|
8月前
|
算法 Unix Linux
Linux与Qt线程优先级的对应关系:一次全面解析
Linux与Qt线程优先级的对应关系:一次全面解析
113 0
|
8月前
|
Linux
Linux系统之touch命令的基本使用
Linux系统之touch命令的基本使用
185 1
|
5月前
|
存储 监控 安全
在Linux中,⼀个EXT3的文件分区,当使用touch test.file命令创建⼀个新文件时报错,报错的信息是提示磁盘已满,但是采用df -h命令查看磁盘大小时,只使用了,60%的磁盘空间,为什么会出现这个情况?
在Linux中,⼀个EXT3的文件分区,当使用touch test.file命令创建⼀个新文件时报错,报错的信息是提示磁盘已满,但是采用df -h命令查看磁盘大小时,只使用了,60%的磁盘空间,为什么会出现这个情况?
|
8月前
|
算法 Ubuntu Linux
Linux Qt cannot find -lGL错误完美解决方案(亲测有效)
Linux Qt cannot find -lGL错误完美解决方案(亲测有效)
689 1
|
5月前
|
Linux
关于linux的qt发布(linuxdeployqt)中opengl版本过高的解决
关于linux的qt发布(linuxdeployqt)中opengl版本过高的解决
|
6月前
|
Oracle 关系型数据库 Linux
讲解linux下的Qt如何编译oracle的驱动库libqsqloci.so
通过这一连串的步骤,可以专业且有效地在Linux下为Qt编译Oracle驱动库 `libqsqloci.so`,使得Qt应用能够通过OCI与Oracle数据库进行交互。这些步骤适用于具备一定Linux和Qt经验的开发者,并且能够为需要使用Qt开发数据库应用的专业人士提供指导。
189 1
讲解linux下的Qt如何编译oracle的驱动库libqsqloci.so