
Связанный:FullHD ЖК-монитор распознается как 1024x768 CRT, проблема с неправильным разрешением
У меня возникли проблемы с кабелем DVI на моем дигитайзере Yiynova MVP22U, он больше не передает данные EDID. У меня не оказалось копии данных EDID для монитора, поэтому, чтобы получить правильное разрешение монитора, я использовал EDID с другого монитора. Это решило проблему неправильного разрешения экрана, но создало новую проблему.
Область указателя правильно ограничена экраном, который находится под моим другим экраном, с помощью
xinput set-prop 8 "Evdev Axis Calibration" 0 2040 -2000 2020
Монитор моего планшета находится ниже другого ЖК-монитора с разрешением 1080p.
Однако проблема, которая возникла, заключается в том, что активная область рисования на экране совершенно не соответствует активной области рисования в драйверах. Или, если говорить проще,
Прямо сейчас, если я рисую стилусом на планшете, небольшая область в верхнем левом углу экрана перетащит мой указатель через весь экран, мы говорим, что область размером примерно 1x1 дюйм переносится на всю область экрана размером 22 дюйма. Если я перемещу стилус за пределы этой области размером 1x1, указатель переместится в углы экрана.
Я использую digimend и evdev, это параметры, с которыми мне предстоит работать.
xinput list-props 8
Device 'UC-LOGIC 21.5" Tablet Monitor Pen':
Device Enabled (152): 1
Coordinate Transformation Matrix (154): 1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000
Device Accel Profile (278): 0
Device Accel Constant Deceleration (279): 1.000000
Device Accel Adaptive Deceleration (280): 1.000000
Device Accel Velocity Scaling (281): 10.000000
Device Product ID (271): 21827, 77
Device Node (272): "/dev/input/event9"
Evdev Axis Inversion (282): 0, 0
Evdev Axis Calibration (283): 0, 2040, -2000, 2020
Evdev Axes Swap (284): 0
Axis Labels (285): "Abs X" (275), "Abs Y" (276), "Abs Pressure" (277)
Button Labels (286): "Button Unknown" (274), "Button Unknown" (274), "Button Unknown" (274), "Button Wheel Up" (158), "Button Wheel Down" (159), "Button Horiz Wheel Left" (160), "Button Horiz Wheel Right" (161)
Evdev Scrolling Distance (287): 0, 0, 0
Evdev Middle Button Emulation (288): 0
Evdev Middle Button Timeout (289): 50
Evdev Middle Button Button (290): 2
Evdev Third Button Emulation (291): 0
Evdev Third Button Emulation Timeout (292): 1000
Evdev Third Button Emulation Button (293): 3
Evdev Third Button Emulation Threshold (294): 20
Evdev Wheel Emulation (295): 0
Evdev Wheel Emulation Axes (296): 0, 0, 4, 5
Evdev Wheel Emulation Inertia (297): 10
Evdev Wheel Emulation Timeout (298): 200
Evdev Wheel Emulation Button (299): 4
Evdev Drag Lock Buttons (300): 0
Вероятнее всего, мою проблему сможет решить «Матрица преобразования координат», но я понятия не имею, как она работает. Я много читал об этом в Интернете, но для меня это вообще бессмыслица.
Хотелось бы просто заменить кабель и получить правильный EDID таким образом, но это невозможно, поскольку кабель встроен в экран.
Будем очень благодарны любой помощи.
решение1
Я решил эту проблему, все оказалось проще, чем я думал. Я использовал драйвер Nvidia для Windows, чтобы создать пользовательское разрешение экрана, затем сохранил созданный EDID в файл (по сути, это был просто EDID, который ничего не говорил, кроме того, что экран поддерживает разрешение 1920x1080, теоретически любой EDID с таким разрешением должен был подойти). Я извлек его с помощьюnirsoft MonitorInfoViewи сохранил его в двоичный файл.
После этого, чтобы экран работал с правильным разрешением в X11 под управлением nvidia, мне пришлось установить опцию в xorg.conf.d/10-monitor.conf, чтобы указать X использовать этот EDID для экрана (выглядело это примерно так:)
Section "Screen"
Identifier "Screen0"
Device "Device0"
Monitor "Monitor0"
DefaultDepth 24
Option "CustomEDID" "DVI-I-0:/path/to/edidfilename.bin"
SubSection "Display"
Depth 24
EndSubSection
EndSection
Где DVI-I-0 — это порт DVI, к которому, по словам xrandr, подключен мой планшет.
^Вот где я был, когда писал исходный вопрос. Однако я не осознавал до сих пор, что драйверы digimend, по-видимому, берут данные о разрешении из ядра/kms, а не из X11. (Похоже на Wayland)
Поэтому, чтобы решить эту проблему, мне пришлось переместить свой пользовательский файл EDID в:
/usr/lib/firmware/edid/edidfilename.bin
и затем, чтобы окончательно решить эту проблему и заставить KMS считать этот edid для этого дисплея, мне пришлось добавить эту строку в командную строку ядра (если вы используете grub, вы сможете установить это в /etc/default/grub, вам нужно запустить grub-mkconfig и перезапустить, чтобы настройки вступили в силу)
drm_kms_helper.edid_firmware=DVI-I-0:edid/edidfilename.bin
(обратите внимание, что вы также можете пропустить часть DVI-I-0 и просто написать '...=edid/edidfilename.bin')
Это решает проблему, с которой я столкнулся, остальное теперь можно успешно настроить через файлы xinput или xorg.conf, установив калибровку оси evdev для планшета, чтобы восстановить его прежнюю функциональность. Надеюсь, это кому-то поможет, вам не обязательно иметь тот же планшет (то же самое, вероятно, может случиться с любым поддерживаемым digimend монитором-планшетом)
Похоже, я наконец-то могу перестать рисовать на Windows :D