xinput 触摸屏校准不一致

xinput Touchscreen Calibration Inconsistent

我们有带触摸屏的设备,我们使用 xinput_calibrator 进行校准,然后在我们的应用程序的启动脚本中应用设置,按照

xinput set-int-prop "Microchip Technology Inc. AR1100 HID-MOUSE" "Evdev Axis Calibration" 32 109 3841 161 3973
xinput set-int-prop "Microchip Technology Inc. AR1100 HID-MOUSE" "Evdev Axes Swap" 8 1
xinput set-int-prop "Microchip Technology Inc. AR1100 HID-MOUSE" "Evdev Axis Calibration" 32 3852 112 3970 159

这有时效果很好。在其他时候,在电源循环之后,校准不会生效 - 特别是轴被交换,并且缩放似乎关闭,尽管这很难说。再通电几次,它会再次工作,然后就不行了。

我们是 X11 的新手,不确定为什么会这样。就好像我们的 xinput 语句有时被处理而其他时候被忽略,尽管除了重启之外没有任何改变。

如有任何关于如何解决此问题的想法,我们将不胜感激。

由于 X11 服务器启动过程和 xinput 调用之间似乎存在竞争条件,您将不得不等待启动过程完成。我建议您检查 this answer 以获取有关如何检测 X 服务器正常 运行 的提示。

如果不行,您应该尝试检查xinput的return代码,等待成功后再配置触摸屏。例如:

ts_dev="Microchip Technology Inc. AR1100 HID-MOUSE"
ts_calibrate="Evdev Axis Calibration"
ts_swap="Evdev Axes Swap"

# repeat until xinput returns success for the first time
while ! xinput set-int-prop "$ts_dev" "$ts_calibrate" 32 109 3841 161 3973
do
    sleep 1
done
xinput set-int-prop "$ts_dev" "$ts_swap" 8 1
xinput set-int-prop "$ts_dev" "$ts_calibrate" 32 3852 112 3970 159

您可能需要根据系统上 xinput return 的值调整脚本。