В SCO нет настройки сенсорной панели, она выполняется на стороне интеграций. Здесь описаны способы решения некоторых проблем.
Не калибруется сенсор в 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
Тестирование сенсора
Для проверки сенсорной панели необходимо выполнить команду:
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) - координаты события.