使用 Xubuntu 19.10,我尝试校准 Toughbook CF-19 MK5 的触摸屏。我使用xinput_calibrator
了其他人建议它完成了并且给我一个代码片段来复制到 xorg.conf 文件中,但是有一个问题:
chris@helmhorn:~$ sudo xinput_calibrator -v
Calibrating standard Xorg driver "Fujitsu Component USB Touch Panel Pen (0)"
current calibration values: min_x=0, max_x=16777215 and min_y=0, max_y=16777215
If these values are estimated wrong, either supply it manually with the --precalib option, or run the 'get_precalib.sh' script to automatically get it (through HAL).
DEBUG: Name 'Fujitsu Component USB Touch Panel Pen (0)' does not match any in '/sys/class/input/event*/device/name'
--> Making the calibration permanent <--
copy the snippet below into '/etc/X11/xorg.conf.d/99-calibration.conf' (/usr/share/X11/xorg.conf.d/ in some distro's)
Section "InputClass"
Identifier "calibration"
MatchProduct "!!Name_Of_TouchScreen!!"
Option "MinX" "1267029"
Option "MaxX" "16165546"
Option "MinY" "615310"
Option "MaxY" "14567195"
Option "SwapXY" "0" # unless it was already set to 1
Option "InvertX" "0" # unless it was already set
Option "InvertY" "0" # unless it was already set
EndSection
Change '!!Name_Of_TouchScreen!!' to your device's name in the config above.
校准没有应用,将代码片段/usr/share/X11/xorg.conf.d/99-calibration.conf
与其他 xorg 文件放在一起并重新启动也没有效果。我怀疑错误消息Name 'Fujitsu Component USB Touch Panel Pen (0)' does not match any in '/sys/class/input/event*/device/name'
是关键,但通过 Google 找不到太多信息。
比较来自两个相关来源的设备名称:
chris@helmhorn:~$ cat /sys/class/input/event*/device/name | grep Fujitsu
Fujitsu Component USB Touch Panel
chris@helmhorn:~$ sudo xinput_calibrator --list
Device "Fujitsu Component USB Touch Panel Pen (0)" id=13
设备名称不完全匹配,将这两个值中的任何一个放入 xorg.conf.d 文件中都没有效果。
编辑:我在 Google 上能找到的最佳信息是此网站有韩文版本我必须借助翻译来阅读;基本上它建议使用不同的匹配器,例如MatchUSBID "28bd: 000c"
。
这是迄今为止我发现的最清晰的信息:
chris@helmhorn:~$ sudo xinput --list
⎡ Virtual core pointer id=2 [master pointer (3)]
⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)]
⎜ ↳ PS/2 Generic Mouse id=11 [slave pointer (2)]
⎜ ↳ Fujitsu Component USB Touch Panel Pen (0) id=13 [slave pointer (2)]
⎣ Virtual core keyboard id=3 [master keyboard (2)]
↳ Virtual core XTEST keyboard id=5 [slave keyboard (3)]
↳ Power Button id=6 [slave keyboard (3)]
↳ Video Bus id=7 [slave keyboard (3)]
↳ Power Button id=8 [slave keyboard (3)]
↳ Fujitsu Component USB Touch Panel id=9 [slave keyboard (3)]
↳ AT Translated Set 2 keyboard id=10 [slave keyboard (3)]
↳ Panasonic Laptop Support id=12 [slave keyboard (3)]
chris@helmhorn:~$ sudo xinput_calibrator --list
Device "Fujitsu Component USB Touch Panel Pen (0)" id=13
它仍然没有告诉我哪里出了问题,但它显示触摸板和笔是独立的设备,并且校准器正在尝试与笔一起工作。
编辑:我发现了一个最近的博客文章来自一位在相同硬件上遇到过类似问题的人。在 xorg.conf 不起作用之后,他们决定创建一个xinput set-prop
在登录时调用的脚本。我会看看他们的解决方案是否对我有用。作为额外奖励,他们谈到了屏幕键盘,这也是我需要的。
答案1
更新:我重新浏览了这篇文章,发现此 Ubuntu 论坛帖子,正确地建议:
sudo apt install xserver-xorg-input-evdev
sudo apt remove xserver-xorg-input-libinput
重启后,xinput_calibrator
能够识别触摸屏并正确校准!
原始答案:
这篇博文是我能找到的最佳解决方法。此解决方案不是将配置放入 xorg.conf 文件中,而是调用xinput set-prop
一个脚本,然后在登录时调用该脚本。这样就无需想出一个好方法来告诉 xorg.conf 我们正在讨论哪个设备。虽然不太美观,但确实有效。
#!/bin/sh
# Coordinate touch panel to screen
xinput set-prop "Fujitsu Component USB Touch Panel" --type=float "Coordinate Transformation Matrix" 1.115 0 -0.073 0 1.14 -0.04 0 0 1
正如博客文章中所述,调整矩阵参数的最佳方法似乎是反复试验。博客文章中的值对我来说是一个相当接近的起点。
我仍然希望听到一个使用 xorg.conf 并使 xinput_calibrator 满意的解决方案,因为这将使调整变得更加容易。