无法在kivy上校准触摸屏

Posted

技术标签:

【中文标题】无法在kivy上校准触摸屏【英文标题】:Cant calibrate touchscreen on kivy 【发布时间】:2018-04-11 13:51:48 【问题描述】:

对于我的 pi 触摸屏项目,我正在使用一个 - 你猜对了 - pi 和一个 egalax 触摸驱动程序。这个东西接收输入,触摸屏实际工作,经过一些小的调整,比如反转 y_axis 和其他东西。然而,此时我被困在试图触摸屏幕边缘的某个按钮,而我无法触及。我实际上使用了一支启用了光标的笔,以确保我知道屏幕在哪里注册了我的输入。

所以在 kivy 文档中搜索了一下后,我发现了 this postproc.calibration 模块,它应该可以解决问题。

但事实并非如此。我尝试将以下 2 个代码 sn-ps 放入 .kivy/config.ini 文件中:

[input]
egalax = hidinput,/dev/input/event0,rotation=90,invert_y=1

[postproc:calibration]
egalax = xratio=1.2,yratio=1.2

[input] 位有效,没有问题。 [postproc:calibration] 位不起作用。我尝试将这条线放在[postproc] 模块的上方、下方,甚至是[modules] 模块的下方。我还尝试将egalax = xratio=1.2,yratio=1.2 行放入[postproc] 模块中。似乎没有工作。我也尝试将浮点数增加到 2.0,但没有任何变化。

那么我将如何“扩展”我的触摸输入区域?

【问题讨论】:

【参考方案1】:

对于这个问题,我从以下来源找到了解决方案:Google group。只是为了澄清:它涉及更改 kivy 安装目录中的文件。

/usr/local/lib/python3.5/dist-packages/kivy/input/providers/hdinput.py 中插入最后一行:

class HIDInputMotionEventProvider(MotionEventProvider):
    options = ('min_position_x', 'max_position_x',
               'min_position_y', 'max_position_y',
               'min_pressure', 'max_pressure',
               'invert_x', 'invert_y', 'rotation',
            -> 'min_abs_x', 'max_abs_x', 'min_abs_y', 'max_abs_y') # <- this one

然后在 .kivy/config.ini 文件中添加:

[input]
eGalax = hidinput,/dev/input/event1,rotation=90,min_abs_x=60,min_abs_y=90,max_abs_x=1985,max_abs_y=1970

至少我的触摸屏(eGalax 的东西)已经过校准。

【讨论】:

【参考方案2】:

我有一个关于 Kivy & Waveshare 10.1 英寸触摸屏的答案。 须藤纳米.kivy/config.ini。我需要“param=rotation=90”

添加

[input]
mouse = mouse
mtdev_%(name)s = probesysfs,provider=mtdev
hid_%(name)s = probesysfs,provider=hidinput,param=rotation=90

【讨论】:

以上是关于无法在kivy上校准触摸屏的主要内容,如果未能解决你的问题,请参考以下文章

触摸屏校准 Linux、Arch、EloTouch xinput_calibrator 符号查找错误

ubuntu系统下 触摸屏校准疑问

在kivy中的触摸事件上旋转对象

从终端启动 kivy GUI 应用程序

旧文-linux 触摸屏校准-2010年02月09日 13:59

tslib 工具不在屏幕上绘制任何内容