我有它的嵌入式linux一个基于ARM的董事会,我相信它有一个FT5x06触摸屏控制器,但好像tslib的牙齿有问题的多点触控电容式触摸屏控制器。 我十字臂的linux-gcc4.5.1当目标复制必要的文件和设置necassary环境变量tslib的,当我跑后编译tslib的ts_calibrate一个窗口显示出来,它说:
tslib: Selected device is not a touchscreen (must support ABS_X and ABS_Y events)
而且它不接受我的触动。 现在我觉得莫名其妙,我应该得到tslib的与控制器作为一个单一的触摸设备的工作,但我不知道该怎么做或文件来改变。 我一定要修改驱动程序文件在内核和重建它呢?
你有什么想法?
我想用tslib的作为我的Qt4程序的输入。
tslib的需要的几个文件和/或环境变量设置框的制定。 下面是一些环境变量的样本,
TSLIB_CONSOLEDEVICE=none
TSLIB_FBDEVICE=/dev/fb0
TSLIB_TSDEVICE=/dev/input/touch
TSLIB_CALIBFILE=/etc/pointercal
TSLIB_CONFFILE=/etc/ts.conf
不需要很多的变量与tslib的运行Qt的。 但是,您将需要TSLIB_TSDEVICE
, TSLIB_CALIBFILE
和TSLIB_CONFFILE
使用Qt来使用。 ts_calibrate将使用的二进制文件TSLIB_FBDEVICE
设备显示一些文本。 于是,这将写入配置TSLIB_CALIBFILE
。
要确定正确的TSLIB_TSDEVICE
使用,可以检查文件/ SYS /班/输入/输入* /名称 。 名称应该是类似FT5202触摸屏 。 我使用该信息在引导时软链接的/ dev /输入/ inputX到在上面的示例中的/ dev /输入/触摸 。 其他输入驱动器插入到系统中,如USB鼠标等,这些文件的位置可能取决于udev的类型或MDEV您使用用户空间中的/ dev目录人口inputX文件可能会改变。
该ts.conf文件是要装载的模块列表。 下面是'局灶性理工学院的设备的示例,
module_raw input
module linear
tslib的构造与在运行时被动态加载几个模块(共享库)。 典型地,这些模块需要被加载到/ usr / LIB / TS和内核和文件系统(libc中)需要支持共享库。 具体地, 线性模块将使用ts_calibrate程序的输出映射的触摸坐标来筛选坐标 。 这是与许多电阻式触摸技术,其中x和y更有用参数可以混合间 ,包括sheering等
注意:有可能避免这种校准步骤,这是非常可取的,如果你正在制造大量。
在/ etc / pointercal的号码被读入一个数组a [0] - >一个[7]。 式是这样的,
x' = (a2 + a0 *x + a1 * y) / a6;
y' = (a5 + a3 *x + a4 * y) / a6;
对于电容的情况下,不存在纯粹的。 此外,对于设备FocalTech的值似乎受到限制,使得屏幕上的位置(0,0)是触摸位置(0,0),所有设备提供相同的最大值(X,Y)的值。 所以方程减少,
x' = (a1 * x) / a6;
y' = (a4 * y) / a6;
所以pointercal文件的唯一目的是绘制触摸屏幕坐标与同为每个设备。 所以,你可以手动当你回到解方程的最大屏幕位置的十六进制编辑pointercal文件。 你可以通过ts_print_raw二进制信息。
最后, Qt的鼠标校准类可用于完全避免tslib的 。 你只需要与固定三个常量,将改变的坐标代码。 您避免tslib的包装完全。
你的芯片的驱动程序只需使用仅ABS_MT_POSITION_X / Y事件代码。 作为tslib的1.3,这是支持和tslib的应该没有问题工作。 截至目前,有tslib的-1.3-RC3这应该是可以放心使用。 不会有很多变化,直到tslib的-1.3被释放,看到tslib的的项目页面 。