Я работаю над ноутбуком 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*
Мне удалось найти обходной путь. Поскольку мой сенсорный экран работает при использовании пальцев, я просто копирую свойства «координационной матрицы» сенсорного экрана на свой стилус. После этого положение курсора стилуса идеально.
$ 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/')
Если вы хотите проверить, что находится в correct_matrix, с помощью $ echo $correct_matrix
Затем установите настройки матрицы стилуса на числа в «correct_matrix»:
xinput --set-prop {insert id of your stylus} "Coordinate Transformation Matrix" $correct_matrix
Это отлично работает для меня. Я только что сделал небольшой сценарий оболочки из этих двух команд, который я запускаю всякий раз, когда подключаю внешний монитор или меняю настройки положения внешнего монитора.
Сценарий оболочки:
#!/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', который я затем могу запустить с помощью
bash ./stylus-correct.sh
Это очень быстро решает проблему для меня. Всякий раз, когда я подключаю новый экран, я просто иду в каталог этого файла оболочки и запускаю его с помощью данной команды.