关于arm上移植电阻屏支持qt的方法

本文适用于开发板移植电阻屏之后,运行qt时会出现触摸与显示不对应的问题。
题主是新人,对这些问题的可能原因与解决方法世界的了解不是那么深入,只是把我的解决方案展示出来,希望能给大家提供一个解决思路。
现象:题主出现的问题和之前csdn上出现的问题一致。
https://bbs.csdn.net/topics/392188963?utm_medium=distribute.pc_relevant_t0.none-task-discussion_topic-BlogCommendFromBaidu-1.control&depth_1-utm_source=distribute.pc_relevant_t0.none-task-discussion_topic-BlogCommendFromBaidu-1.control

在这里插入图片描述
题主的开发板环境使用yocto构建的weston系统,提问者最后在问题的下方给出了解决方法,即参考了qt官网给出的方法
在这里插入图片描述

http://qt5.digitser.net/5.9/zh-CN/embedded-linux.html
设置环境变量:export QT_QPA_EVDEV_TOUCHSCREEN_PARAMETERS=/dev/input/eventx:inverty
但是当题主尝试了这个方式之后,发现并未解决我的问题,点击触摸屏依然出现上述问题,在经过尝试之后发现,QT_QPA_EVDEV_TOUCHSCREEN_PARAMETERS
这个环境变量并未生效,但在最开始并未发现这个问题,误以为现象与解决方式不匹配,在尝试了诸多手段无效后,发现最开始的思路是正确的,只是环境变量未生效,于是便开始查找未生效的原因,在仔细阅读了qt官网的参数说明后,在输入部分发现了解决方法。
在这里插入图片描述
使用libinput

libinput是处理输入设备的库。它提供了Qt自己的evdev输入支持的替代方案。要启用libinput,请确保在配置和构建Qt时可以使用libudev和libinput的开发文件。如果需要键盘支持,xkbcommon也是必需的。使用eglfs和linuxfb时,不需要进一步的操作,因为这些插件默认使用libinput。如果libinput支持不可用或设置了环境变量QT_QPA_EGLFS_NO_LIBINPUT,则Qt自己的evdev处理程序将进入工作状态。

按照这个说法,qt实际上有两种输入处理,一是libinput,二是evdev。但是当前系统中的环境变量着实奇怪,明明使用了eglfs,但是插件居然没有默认使用libinput,当我将QT_QPA_EGLFS_NO_LIBINPUT设置为1,重新设置环境变量:export QT_QPA_EVDEV_TOUCHSCREEN_PARAMETERS=/dev/input/eventx:inverty
成功翻转,且经过测试,此方法也可在电容屏上使用。这样的话,旋转也可以使用了,由此,彻底解决了坐标反转的问题。

ps:在查找其他解决方法的时候,发现tslib也给了一个解决的思路,即使可以将当前触摸屏的eventx转化为ts_event,也就是再注册了一个设备节点,在环境变量中指定当前的输入设备为ts_event即可,但题主自己尝试的时候,发现触摸反应变的特别慢,且不管触摸到哪里,都只有一小块地方响应,我猜测可能和电阻屏有关,但测试电容屏幕之后,发现触摸反应正常,但是还是只有一块地方响应,不知道有没有人试过这个方案,有的话可以交流一下。

/更新于1月8日********************************/
自从上次发现虚拟设备节点这个问题后,一直在思考,也做了多次尝试,最后问题被查找出来,在事件过滤器配置文件ts.conf中,如果带上方差过滤选项,那么电容屏可以被校准,反向校准也可,而此时电阻屏则响应不正确,测试发现设备节点中的ev_key事件被过滤掉了,也就是只能得知坐标,却无法接收到按下事件,去方差过滤后,电阻屏可以判断到按下事件,但是由于失去过滤,无法过滤掉无用的噪声,也就会出现点击之后,位置有时正确有时不正确。在github 上的tslib说明中,其还有其他参数过滤,但感觉可能要像pid一样,一点一点的实验,目前已经解决qt显示的问题,没有必要一定要尝试。只是写在这里做个提醒,也为其他可能遇到此问题的开发者提供一个思路。(对于开发来说,我现在还只是个新手,如果各位有发现我的错误,请不吝指出,如果有别的思路或者想法,欢迎在评论区讨论。)

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值