这个教程描述了在嵌入式linux下使用Qt如何设置一个支持多点触摸和单点触摸的输入系统。这里假定你已经有了对应的驱动程序,驱动可以从触摸屏的厂商那里获得或者使用一个linux 内核源码中已经存在的驱动。
第一要务,找到你的驱动程序(通常在/drivers/input/touchsreen/*)并且确认你已经定义好了tslib中所需要的每个事件类型。通常你需要EV-SYN, EV-ABS和EV_KEY.我自己使用的驱动中没有定义EV_KEY, 因此驱动不会发送这一个类型的事件。为了能够使tslib和这个驱动的输入系统好好工作,我需要在驱动代码中定义这个事件。
set_bit(EV_SYN, aura.input_dev->evbit);
set_bit(EV_ABS, aura.input_dev->evbit);
set_bit(EV_KEY, aura.input_dev->evbit); # I had to add this line so that tslib was happy
现在使用修改后的驱动源码重新构建内核,并且在开发板上运行起来。
我这里的输入设备名称是‘touchscreen’, 由于多种原因, 你们的输入设备名称可能是event1 或者event0 。
使用下面的命令查看设备
# ls -rlt /dev/input/touchscreen
lrwxrwxrwx 1 root root 6 Jan 17 21:06 /dev/input/touchscreen -> event1
# chmod 777 /dev/input/touchscreen
# chmod 777 /dev/input/event1
使用下面的命令,你可以看到更多的信息
# cat /sys/devices/virtual/input/input1/uevent
PRODUCT=0/0/0/0
NAME="aura-touchscreen"
PROP=0
EV=9
ABS=650000 0
MODALIAS=input:b0000v0000p0000e0000-e0,3,kra30,32,35,36,mlsfw
使用下面的命令,然后再屏幕上移动你的手指以确认触摸屏驱动是否正在工作。
当你的手指在屏幕上移动时,你应该看到下面的现象。
# cat /dev/input/touchscreen | hexdump
0000000 9011 3883 565f 0001 0003 0030 0001 0000
0000010 9011 3883 565f 0001 0003 0032 0001 0000
0000020 9011 3883 565f 0001 0003 0035 04c9 0000
0000030 9011 3883 565f 0001 0003 0036 0c3f 0000