gpt4 book ai didi

linux - 无法让 tslib 与 FT5x06 一起工作

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:18:36 31 4
gpt4 key购买 nike

我有一个基于 arm 的主板,上面有嵌入式 linux,我相信它有一个 FT5x06 触摸屏 Controller ,但 tslib 似乎在多点触控电容式触摸屏 Controller 方面存在一些问题。我将 tslib 与 arm-linux-gcc4.5.1 交叉编译,当我在目标上复制必要的文件并为 tslib 设置必要的环境变量后,当我运行 ts_calibrate 时,会出现一个窗口,它说:

tslib: Selected device is not a touchscreen (must support ABS_X and ABS_Y events)

而且它不接受我的触摸。现在我想不知何故我应该让 tslib 与 Controller 一起工作作为一个单一的触摸设备,但我不确定如何做到这一点或更改哪个文件。我是否必须在内核中编辑驱动程序文件并重建它?

你有什么想法吗?

我想使用 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_TSDEVICETSLIB_CALIBFILETSLIB_CONFFILE 才能与 Qt 一起使用。二进制文件 ts_calibrate 将使用 TSLIB_FBDEVICE 设备来显示一些文本。然后,这会将配置写入 TSLIB_CALIBFILE

要确定要使用的正确 TSLIB_TSDEVICE,可以检查文件 /sys/class/input/input*/name名称 应该类似于FT5202 Touchscreen。在上面的示例中,我在启动时使用此信息将 /dev/input/inputX 软链接(soft link)到 /dev/input/touchinputX 文件可能会随着其他输入驱动程序插入系统而改变,例如 USB 鼠标等。这些文件位置可能取决于 udevmdev 用于用户空间中的 /dev 目录填充。

ts.conf 文件是要加载的模块列表。这是“Focal Tech”设备的示例,

module_raw input
module linear

Tslib 由几个在运行时动态加载的模块(共享库)组成。通常,这些模块需要加载到 /usr/lib/ts 并且您的内核和文件系统 (libc) 需要支持共享库。具体来说,linear 模块将使用 ts_calibrate 程序的输出将触摸坐标映射到屏幕坐标。这对于电阻式触摸技术更有用,其中 xy parameters may inter-mix ,包括倾斜等。

注意:可以避免此校准步骤,如果您要大量生产,这是非常可取的。

/etc/pointercal 中的数字被读入数组 a[0] -> a[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 Mouse Calibration class可用于完全避免 tslib。您只需要带有固定三个常量的代码即可转换坐标。您完全避免使用 tslib 包。

关于linux - 无法让 tslib 与 FT5x06 一起工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26346019/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com