В SCO нет настройки сенсорной панели, она выполняется на стороне интеграций.
Тестирование сенсора
В Artix:SCO реализована возможность тестирования тачскрина (пункт "Тест тачскрина" в меню "Сервис" -> "Тест оборудования"). В процессе тестирования тачскрина можно определить правильность калибровки сенсора, рисуя на нем линии пальцами. Рисование на экране может осуществляться одновременно несколькими пальцами. Подвижная кнопка выхода позволяет проверять правильность калибровки тачскрина на всех участках экрана.
Для проверки сенсорной панели необходимо выполнить команду:
DISPLAY=:255 XAUTHORITY=/home/autologon/.Xauthority sudo -u autologon xev -geometry 5000x5000
Будут логироваться выполняемые события.
MotionNotify event, serial 28, synthetic NO, window 0x1200001, root 0x127, subw 0x0, time 6675569, (738,334), root:(740,336), state 0x10, is_hint 0, same_screen YES ButtonPress event, serial 28, synthetic NO, window 0x1200001, root 0x127, subw 0x0, time 6675569, (738,334), root:(740,336), state 0x10, button 1, same_screen YES MotionNotify event, serial 28, synthetic NO, window 0x1200001, root 0x127, subw 0x0, time 6676204, (738,334), root:(740,336), state 0x110, is_hint 0, same_screen YES ButtonRelease event, serial 28, synthetic NO, window 0x1200001, root 0x127, subw 0x0, time 6676204, (738,334), root:(740,336), state 0x110, button 1, same_screen YES
В примере ButtonPress и ButtonRelease - события нажатия и отжатия на экране. root:(740,336) - координаты события.
Возможные проблемы и способы их решения
Не калибруется сенсор в Artix
В Artix до некоторой версии была некорректно реализована калибровка сенсорных панелей, отсутствовала привязка сенсора к экрану. Проявляется при наличии нескольких мониторов или при повороте экрана. Подробнее можно прочитать на wiki.
Для исправления надо добавить скрипт:
#!/bin/bash SCREEN=VGA1 IFS=$'\n' for dev in $(xinput_calibrator --list | cut -d'"' -f 2); do xinput map-to-output "$dev" "$SCREEN" done
Заменить VGA1 на нужный. Используемый монитор можно посмотреть при помощи команды:
/linuxcash/cash/bin/graphicsmode.py -q
Сделать этот скрипт исполняемым:
chmod +x /linuxcash/cash/conf/autostart/touch.sh
Удалить уже существующий файл калибровки:
rm -f /usr/share/X11/xorg.conf.d/99-calibration.conf
И перезапустить программу.
Не калибруется сенсор ILITEK ILITEK-TP
В зависимости от конкретного устройства настройка может отличаться.
Если интерфейс сенсорного экрана распознается системой как default
, но работает некорректно, то необходима дополнительная настройка:
Удалить уже существующий файл калибровки:
rm -f /usr/share/X11/xorg.conf.d/99-calibration.conf
Добавить параметр
fbcon=rotate:1
в значениеGRUB_CMDLINE_LINUX_DEFAULT
в файле/etc/default/grub
:Пример настройкиGRUB_DEFAULT=0 GRUB_TIMEOUT_STYLE=hidden GRUB_TIMEOUT=3 GRUB_DISTRIBUTOR='lsb_release -i -s 2> /dev/null || echo Debian' GRUB_CMDLINE_LINUX_DEFAULT="text nopti fbcon=rotate:1" GRUB_CMDLINE_LINUX=""
Создать файл
:/usr/share/X11/xorg.conf.d/1-fbdev.conf
Section "Device" Identifier "LCD" Driver "fbdev" Option "fbdev" "/dev/fb0" Option "Rotate" "CW" EndSection
Запустить команду:
update-grub
- Перезапустить программу и откалибровать экран в сервисном меню.
Добавить в файл
/usr/share/X11/xorg.conf.d/99-calibration.conf
в секцию "InputClass
" поворот координат в строкеOption
:Section "InputClass" Identifier "calibration" MatchProduct "ILITEK ILITEK-TP" Option "TransformationMatrix" "0 1 0 -1 0 1 0 0 1" EndSection
Варианты поворота сенсорного экрана0 – "1 0 0 0 1 0 0 0 1"
90 – "0 1 0 -1 0 1 0 0 1"
180 – "-1 0 1 0 -1 1 0 0 1"
270 – "0 -1 1 1 0 0 0 0 1"- Перезапустить программу.
Привязка двух одинаковых сенсоров к мониторам в Artix
В Artix не поддерживается привязка двух абсолютно одинаковых сенсоров при работе с двумя мониторами.
Для исправления надо добавить скрипт:
#!/bin/bash logFile=/tmp/touchscreenmap.devices rm -f $logFile declare -A map # Сопоставление адреса сенсора и монитора map['pci-0000:00:14.0-usb-0:4.3:1.0']='eDP-1' map['pci-0000:00:14.0-usb-0:4.1:1.0']='DP-1' IFS=$'\n' for dev in $(xinput_calibrator --list); do id=${dev#*id=} node=$(xinput list-props $id | grep 'Device Node' | cut -d'"' -f 2) bus=$(udevadm info --query=property --name=$node | grep ID_PATH= | sed -e "s/^ID_PATH=//") echo "$dev -> $bus" >> $logFile screen=${map["$bus"]} [ -z "$screen" ] && continue xinput map-to-output "$id" "$screen" done
Сделать этот скрипт исполняемым:
chmod +x /linuxcash/cash/conf/autostart/touch.sh
Перезапустить программу.
В файле /tmp/touchscreenmap.devices необходимо скопировать адреса устройств и сопоставить с мониторами в строках 8-9.
Названия мониторов можно посмотреть при помощи команды:
/linuxcash/cash/bin/graphicsmode.py -q
После изменения скрипта необходимо еще раз перезапустить программу для применения мапинга.
Перестает работать тач на Wintec
На Wintec периодически отваливается touchscreen. Производитель порекомендовал изменить настройки BIOS.
- Перейти в Chipset → South Bridge → USB configuration
- XHCI установить в Disable
- USB2.0(EHCI) установить в Enable
- Сохранить в выйти (F4)
Также есть рекомендация подключать кабель тача к первому USB порту на плате.
Автоматическая привязка при переподключении устройства
Если настройки bios не помогли, то можно добавить udev правило и systemd сервис для автоматического подключения.
Для этого надо создать файл /etc/udev/rules.d/99-touch.rules
В нем заменить значения ID_VENDOR_ID и ID_MODEL_ID на необходимые. В примере для Wintec, но надо проверять.
ACTION=="add" SUBSYSTEM=="usb", ENV{ID_VENDOR_ID}=="29bd", ENV{ID_MODEL_ID}=="4101", RUN+="/bin/systemctl --no-block start touch.service"
Создать файл /etc/systemd/system/touch.service
[Unit] Description=Touchscreen mapping [Service] Type=oneshot Environment=DISPLAY=:255 Environment=XAUTHORITY=/home/autologon/.Xauthority ExecStart=/usr/bin/env bash -c "sleep 1 && sudo -u autologon /linuxcash/cash/conf/autostart/touch.sh" [Install] WantedBy=multi-user.target
Выполнить
systemctl daemon-reload udevadm control --reload-rules