平台:迅为-i.MX6开发板 一. 背景 在使用迅为提供的QT4.7的时候,鼠标可以正常使用,有触摸但是触摸会出现问题。尤其是在左右滑动qt界面的时候,总是会出现往左滑动,画面急速往右走,然而往右滑动,画面急速的往左走。 在使用迅为提供的Qtopia4的时候,只能用触摸不能用鼠标。 二.解决办法 ① QT4.7系统 打开/bin/qt4 找到这句话: export QWS_MOUSE_PROTO='MouseMan:/dev/input/miceTslib:/dev/input/event2' 然后改为这样: export QWS_MOUSE_PROTO='MouseMan:/dev/input/mouse1Tslib:/dev/input/event2' 这里注意单双引号的变化 然后保存退出,在“插上鼠标”的情况下,重启开发板。(这里注意开机后首先看一下这个文件是不是已经改了,如果没有修改成功,就再按照这个中方法修改一下,确保这个文件修改成功) 这样Qt4.7系统就支持了鼠标和就触摸了 ②Qtopia系统 打开/bin/ qtopia 找到这句话: exportQWS_MOUSE_PROTO='TPanel:/dev/input/event2' 然后改成这样: exportQWS_MOUSE_PROTO='TPanel:/dev/input/event2 MouseMan:/dev/input/mouse1' 然后保存退出,在“插上鼠标”的情况下,重启开发板。(这里注意开机后首先看一下这个文件是不是已经改了,如果没有修改成功,就再按照这个中方法修改一下,确保这个文件修改成功) 这样Qtopia系统就支持了鼠标和就触摸了 三. 分析和总结 ①.为什么修改成这样触摸就不会出现问题了呢? 看一下QT4.7改之前的这句话 exportQWS_MOUSE_PROTO='MouseMan:/dev/input/mice Tslib:/dev/input/event2' 其中 MouseMan:/dev/input/mice 用来配置鼠标的节点 Tslib:/dev/input/event2 用来配置触摸 在控制台输入cat MouseMan:/dev/input/mice 然后不论触摸屏幕还是使用鼠标,都会有乱码打印出来。这就证明mice节点会接收来自鼠标和触摸两方面的事件,所以会造成干扰,导致触摸不准确。然后输入cat MouseMan:/dev/input/mouse1 的时候之后再使用鼠标的时候会打印乱码,在触摸时候不会,这样就不会造成干扰。 ②.这样修改之后,系统确实是支持鼠标和触摸了,但是鼠标不能够热插拔。也就是说要想使用鼠标,必须得在插上鼠标的情况下开机。关于这个原因,我在调试的时候发现: 之前鼠标使用的节点/dev/input/mice不论鼠标有没有插上都会存在,而之后鼠标用的节点/dev/input/mouse1只有在鼠标插上的时候出现。所以当开机事,开机脚本运行时,如果没有鼠标,可能鼠标的配置就不会生效。 另外在调试过程中可以使用命令 cat /proc/bus/input/devices 来查看各个输入设备是否接入,和他们的设备节点。 以上的步骤只是在迅为的4412精英版上试验过,其他的没有一步步验证,但是道理都是一样的。使用的开发板不同,也许鼠标和触摸驱动对应的节点会不一样。可以使用上面提到的cat /proc/bus/input/devices命令来查看不同输入设备所对应的的设备节点。触摸屏的驱动是Name="ft5x0x_ts";对于鼠标,可以通过拔掉鼠标和插上鼠标两种情况下输入这个命令看一下会增加那一项来确定鼠标的节点。 由于经验有限,以上都是我个人的理解,可能有误。所以请大家以批判的心态来阅读这个文档。多谢在调试过程中对我进行帮助的同事们,今天有空把这个过程整理出来,以防以后忘记。
|