2

我们有带有触摸屏的设备,我们使用 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 语句有时会被处理而有时会被忽略,尽管除了重新启动之外什么都没有改变。

任何关于如何解决这个问题的想法都值得赞赏。

4

1 回答 1

1

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

如果这不起作用,您应该xinput在配置触摸屏之前尝试检查返回码并等待成功。例如:

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系统返回的值调整脚本。

于 2015-03-26T09:25:02.690 回答