|
本帖最后由 wangzm 于 2012-9-7 16:37 编辑
项目需要用linux系统,QT来做界面,电容屏,而下载光盘中QT是不支持电容屏的
网上找了下,主要就是说要把电容屏模拟成电阻屏与tslib配合上。只说了把ABS_MT_POSITION_X,ABS_MT_POSITION_Y,ABS_MT_TOUCH_MAJOR改成ABS_X,ABS_Y,ABS_PRESSURE,最后再input_sync
经过对内核代码分析和多次试验,终于成功。
主要思路:搜索代码里带MT的字符串的,分析代码,并参考电阻屏驱动结构。
1. 本论坛下载电容屏驱动,ft5x06_ts.h 里 #define CFG_MAX_TOUCH_POINTS 置为1
2. ft5x06_ts.c里面,static void ft5x0x_report_value(void)把ABS_MT_POSITION_X改成ABS_X, y的改成ABS_Y ABS_MT_TOUCH_MAJOR改成ABS_PRESSUSER,值赋1,input_mt_sync去掉,其他带MT的都注释掉,static void ft5x0x_ts_release里pressure赋值为0
3. static int ft5x0x_ts_probe函数里带MT的就保留三个与 X,Y,PRESSURE有关的input_set_abs_params 函数,set_bit带MT的都注释掉。
4. 将驱动加入内核并选中,就是kconfig什么的剪切一下,然后直接make,不要按手册上的./mk,那个是个脚本
5. 启动后,到tslib目录里运行./ts_test 看看吐不吐坐标。不吐多数是有驱动没加载,内核里touchscreen里goodix和solomon也要选上,需要用到其中代码和函数。
5. 查屏对应的event号,用“cat /proc/bus/input/devices”查看,对应修改/etc/profile和/bin里的QT脚本对应的event号。再重启就可以在qt里用触摸操作了,QT4.5可以,qtopia操作点小,不建议使用。
因项目涉及东西多,暂时没有多余时间测试完善代码,请各位多提意见!
附件是代码,内核配置文件及编译好的内核,对应event4。 |
|