Вопрос или проблема
Я запускаю киоск с двумя экранами, одна сторона – сенсорный экран, другая – пассивная. Обычно для такой конфигурации я использую XINPUT и XRANDR, чтобы сопоставить сенсорный экран с правильным монитором. Ниже будут результаты этого и пример .sh файла, который я обычно помещаю в автозагрузку, чтобы он работал после перезагрузки. На этот раз у меня уникальный монитор с ИК-сенсорным экраном, когда я запускаю xinput, сенсорный экран не отображается в списке. Я знаю, что компьютер видит ввод с сенсорного экрана, потому что я могу щелкать и перетаскивать, но он в неправильной ориентации и разбросан по нескольким экранам. Есть ли какие-нибудь предложения, как найти сенсорный экран и сопоставить его с конкретным монитором?
eyeon@np-center-ul-ser5:~$ xinput
> ⎡ Виртуальный основной указатель id=2 [главный указатель (3)]
> ⎜ ↳ Виртуальный основной указатель XTEST id=4 [рабочий указатель
> (2)]
> viid=9ouch[рабочий указатель (2)] ⎣ Виртуальная основная клавиатура id=3 [главная клавиатура (2)]
> ↳ Виртуальная основная клавиатура XTEST id=5 [рабочая клавиатура (3)]
> ↳ Кнопка питания id=6 [рабочая клавиатура (3)]
> ↳ Видеошина id=7 [рабочая клавиатура (3)]
> ↳ Кнопка питания id=8 [рабочая клавиатура (3)]
> viid=10uch[рабочая клавиатура (3)]
eyeon@np-center-ul-ser5:~$ xrandr
Экран 0: минимум 320 x 200, текущий 2160 x 1920, максимум 16384 x 16384
DisplayPort-0 подключен, основной 1080x1920+0+0 слева (обычно слева перевернуто вправо по оси x, y) 1210mm x 681mm
1920x1080 60.00*+ 50.00 59.94 30.00 25.00 24.00 29.97 23.98
1680x1050 59.88
1600x900 60.00
1280x1024 75.02 60.02
1440x900 59.90
1366x768 59.79
1280x800 59.91
1152x864 75.00
1280x720 60.00 50.00 59.94
1024x768 75.03 70.07 60.00
832x624 74.55
800x600 72.19 75.00 60.32
720x576 50.00
720x480 60.00 59.94
640x480 75.00 72.81 66.67 60.00 59.94
720x400 70.08
HDMI-A-0 подключен 1080x1920+1080+0 справа (обычно слева перевернуто вправо по оси x, y) 1872mm x 1053mm
3840x2160 45.00 + 60.00 50.00 59.94 30.00 25.00 24.00 29.97 23.98
4096x2160 60.00 50.00 59.94 30.00 25.00 24.00 29.97 23.98
1920x1200 45.00
1920x1080 60.00 50.00 59.94 30.00 25.00 24.00 29.97 23.98*
1600x1200 60.00
1680x1050 59.88
1400x1050 59.95
1280x1024 75.02 60.02
1440x900 59.90
1280x960 60.00
1280x800 59.91
1152x864 75.00
1280x720 60.00 50.00 59.94
1024x768 75.03 70.07 60.00
832x624 74.55
800x600 72.19 75.00 60.32 56.25
720x576 50.00
720x480 60.00 59.94
640x480 75.00 72.81 60.00 59.94
720x400 70.08
DisplayPort-1 отключен (обычно слева перевернуто вправо по оси x, y)
DisplayPort-2 отключен (обычно слева перевернуто вправо по оси x, y)
eyeon@np-center-ul-ser5:~$
Это то, что я бы поместил в файл .sh, если бы был сенсорный экран, но сенсорного экрана, который можно сопоставить, нет.
sleep 4 && xinput map-to-output 4 DisplayPort-0&
Есть какие-нибудь предложения?
Ответ или решение
Ваш вопрос о пропаже устройства ввода при настройке распределения экранов в Ubuntu 20.04 интересует многих пользователей, работающих с сенсорными экранами и многомониторными конфигурациями. Давайте подробно рассмотрим возможные причины и шаги для их решения.
1. Проверка распознавания сенсорного экрана
Несмотря на то что ваш сенсорный экран обнаруживается системой, он может не отображаться в списке устройств xinput
. Для начала, убедитесь, что устройство корректно распознается ядром Linux. Это можно проверить, выполнив следующий команду:
lsusb
Ищите строку, относящуюся к вашему сенсорному экрану. Если устройство отображается в списке, это подтверждает его функционирование на уровне аппаратного обеспечения.
2. Обновление драйверов
Проблема может заключаться в отсутствии или устаревании драйверов для вашего сенсорного экрана. Выполните следующие команды для проверки обновлений:
sudo apt update
sudo apt upgrade
Также рекомендуется проверить, доступны ли специфические драйверы для вашего устройства. Для этого вы можете использовать dmesg | grep -i touch
, чтобы отфильтровать сообщения ядра, относящиеся к сенсорному экрану.
3. Установка необходимых пакетов
Убедитесь, что у вас установлены необходимые пакеты для работы сенсорных экранов. Воспользуйтесь следующей командой для установки:
sudo apt install xserver-xorg-input-evdev
Это обеспечит поддержку различных устройств ввода, включая сенсорные экраны.
4. Настройка конфигурации X11
После того как устройство будет обнаружено, перейдите к его настройке. Создайте файл конфигурации X11 для вашего сенсорного экрана, если его нет. Для этого выполните:
sudo nano /usr/share/X11/xorg.conf.d/99-touchscreen.conf
И добавьте следующее:
Section "InputClass"
Identifier "touchscreen"
MatchProduct "имя вашего устройства"
Driver "evdev"
Option "Calibration" "xmin xmax ymin ymax"
Option "EmulateThirdButton" "1"
EndSection
Под "имя вашего устройства" укажите точное имя вашего сенсорного экрана, как оно отображается в системе.
5. Перемещение сенсорного ввода на экран
После успешного обнаружения устройства и его настройки вы сможете использовать xinput
для отображения устройства ввода и его сопоставления с выходом:
xinput list
Эта команда выведет список всех устройств ввода. Найдите ваше устройство сенсорного экрана и запомните его ID. Затем выполните следующую команду, чтобы сопоставить сенсорный экран с конкретным монитором:
xinput map-to-output <ID_BOX> <имя_монитора>
Замените <ID_BOX>
на ID вашего сенсорного экрана, а <имя_монитора>
— на нужный вам монитор (например, DisplayPort-0
).
6. Скрипт автозагрузки
Если все настроено правильно, добавьте команды в ваш .sh файл:
sleep 4 && xinput map-to-output <ID_BOX> DisplayPort-0 &
Заключение
Кратко подытожим, если ваш сенсорный экран не распознается в xinput
, это может быть вызвано множеством причин — от отсутствия драйверов до неправильной конфигурации X11. Следуя приведенным выше шагам, вы сможете диагностировать и устранить проблему, что позволит корректно настроить систему и верно сопоставить устройств и мониторов.
Если у вас возникнут дополнительные вопросы или сложности, не стесняйтесь обращаться за помощью в сообщество пользователей Linux или к специалистам, работающим с подобными конфигурациями.