我正在使用 HP Envy X360 Ryzen 笔记本电脑 (13-ag0xxx) Ubuntu 20.04。当我在笔记本电脑上添加外部(非触摸)屏幕时,HP 笔在笔记本电脑屏幕上的位置不再正确。一旦我在笔记本电脑屏幕上添加外部屏幕,笔的位置仍然在笔记本屏幕的最低点,但我在笔记本的触摸屏上向上移动得越多,屏幕上光标的位置就越差。然后光标甚至会切换到外部屏幕,尽管我仍然只触摸笔记本屏幕。
这与帖子 askubuntu.com/questions/1146029/ 中的问题相同,但遗憾的是解决方案“打开/关闭电视显示”没有帮助......
非常感谢您的帮助!从 Windows 切换到 Ubuntu 这是我最后一个未解决的问题...
xinput --list-props (of Pen):
*'ELAN0732:00 04F3:262B Pen (0)':
Device Enabled (147): 1
Coordinate Transformation Matrix (149): 1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000
Device Node (272): "/dev/input/event17"
Device Product ID (273): 1267, 9771
libinput Tablet Tool Pressurecurve (579): 0.000000, 0.000000, 0.000000, 0.000000, 1.000000, 1.000000, 1.000000, 1.000000*
答案1
我设法找到了解决方法。由于我的触摸屏在使用手指时可以工作,我只需将触摸屏的“协调矩阵”属性复制到我的手写笔上即可。这样做之后,手写笔光标位置就完美了。
$ xinput
Virtual core pointer id=2 [master pointer (3)]
↳ Virtual core XTEST pointer id=4 [slave pointer (2)]
↳ Dell Dell Universal Receiver Mouse id=10 [slave pointer (2)]
↳ Dell Dell Universal Receiver Consumer Control id=11 [slave pointer (2)]
↳ ELAN0732:00 04F3:262B id=15 [slave pointer (2)]
↳ SynPS/2 Synaptics TouchPad id=18 [slave pointer (2)]
↳ ELAN0732:00 04F3:262B Pen (0) id=22 [slave pointer (2)]
id=15 是我的触摸屏,id=22 是我的触控笔
首先查看它们的属性:
xinput --list-props 15
Device 'ELAN0732:00 04F3:262B':
Device Enabled (147): 1
Coordinate Transformation Matrix (149): 1.000000, 0.000000, 0.000000, 0.000000, 0.500000, 0.500000, 0.000000, 0.000000, 1.000000
libinput Calibration Matrix (304): 1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000
libinput Calibration Matrix Default (305): 1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000
libinput Send Events Modes Available (269): 1, 0
libinput Send Events Mode Enabled (270): 0, 0
libinput Send Events Mode Enabled Default (271): 0, 0
Device Node (272): "/dev/input/event8"
Device Product ID (273): 1267, 9771
xinput --list-props 22:
'ELAN0732:00 04F3:262B Pen (0)':
Device Enabled (147): 1
Coordinate Transformation Matrix (149): 1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000
Device Node (272): "/dev/input/event17"
Device Product ID (273): 1267, 9771
libinput Tablet Tool Pressurecurve (579): 0.000000, 0.000000, 0.000000, 0.000000, 1.000000, 1.000000, 1.000000, 1.000000*
由于触摸屏工作正常,我认为它的属性是正确的。两者的“坐标变换矩阵”不同。(拔下外接屏幕时我也检查了——这些分数是相等的)
然后我只需将坐标变换矩阵设置从触摸屏设置到我的手写笔上:
外接屏幕位于我的笔记本屏幕之上的解决方案:
xinput --set-prop 22 "Coordinate Transformation Matrix" 1.000000, 0.000000, 0.000000, 0.000000, 0.500000, 0.500000, 0.000000, 0.000000, 1.000000
外部屏幕所有位置的通用解决方案:首先将正确的数字保存到我称为“correct_matrix”的对象中:
correct_matrix=$(xinput --list-props {insert id of your touchscreen} | grep "Coordinate Transformation Matrix" | sed -E 's/.*Coordinate Transformation Matrix.*:(.*)$/\1/')
如果你想使用 $ echo $correct_matrix 检查 correct_matrix 中的内容
然后将触控笔矩阵设置设为“correct_matrix”中的数字:
xinput --set-prop {insert id of your stylus} "Coordinate Transformation Matrix" $correct_matrix
对我来说这很好。我只是用这两个命令制作了一个小型 shell 脚本,每当我连接外部显示器或更改外部显示器的位置设置时,我都会运行该脚本。
Shell 脚本:
#!/bin/bash
correct_matrix=$(xinput --list-props {insert id of your touchscreen} | grep "Coordinate Transformation Matrix" | sed -E 's/.*Coordinate Transformation Matrix.*:(.*)$/\1/')
xinput --set-prop {insert id of your stylus} "Coordinate Transformation Matrix" $correct_matrix
我将其放入 'stylus-correct.sh' shell 文件中,然后就可以运行它了
bash ./stylus-correct.sh
这很快就帮我解决了这个问题。每当我连接一个新屏幕时,我只需转到此 shell 文件的目录并使用给定的命令运行它。
答案2
对于任何有这个问题的人,我认为这线程更适合并且更容易(对我有用)。
如果您有多个输入设备,则必须对每个设备重复该命令(例如,我有触摸屏、触控笔和触控笔橡皮擦)