Калибровка сенсора CHUWI Hi10Go в Kubuntu: udev для Wayland и xinput для X11

Калибровка сенсора CHUWI Hi10Go в Kubuntu: udev для Wayland и xinput для X11

У планшета CHUWI Hi10Go под Kubuntu сенсор Goodix Capacitive TouchScreen часто путает оси: касания перевёрнуты или уезжают в сторону. Разовая правка через xinput живёт до перезагрузки. Ниже три способа закрепить калибровку: правило udev для libinput, которое работает и в Wayland, и в X11, и старые варианты со скриптом xinput для сессии X11.

Сначала про Wayland

Скрипт с xinput работает только в сессии X11. А KDE объявила, что Plasma 6.8 будет только на Wayland: сессии X11 в ней не будет, X11-приложения пойдут через Xwayland. Последняя версия с X11 это Plasma 6.7, её поддерживают до начала 2027 года. В свежих Kubuntu по умолчанию и так Wayland, поэтому основной способ теперь udev.

Способ 1: правило udev для libinput

libinput умеет брать матрицу калибровки из свойства udev LIBINPUT_CALIBRATION_MATRIX. Матрица из шести чисел, это первые две строки той же матрицы, что передаётся в xinput. Так калибровка применяется при появлении устройства и не зависит от того, X11 у вас или Wayland. Подробности в документации libinput.

Точное имя устройства берём из вывода libinput или udev:

sudo libinput list-devices | grep -A2 -i goodix

Файл /etc/udev/rules.d/99-touchscreen-calibration.rules:

ACTION=="add|change", KERNEL=="event[0-9]*", ATTRS{name}=="Goodix Capacitive TouchScreen", ENV{LIBINPUT_CALIBRATION_MATRIX}="0 1 0 -1 0 1"
sudo udevadm control --reload
sudo udevadm trigger
udevadm info /dev/input/eventN | grep CALIBRATION

Вместо eventN подставьте номер своего устройства из list-devices. Надёжнее всего перезагрузиться и проверить касания. Матрица 0 1 0 -1 0 1 подходит под перевёрнутые оси именно этого планшета, при другой ориентации её надо подбирать.

Способ 2: скрипт xinput для сессии X11

Если вы пока сидите в X11, работает и старый вариант. Файл /usr/local/bin/fix-touchscreen.sh:

#!/bin/bash
export DISPLAY=:0
export XAUTHORITY=/home/$USER/.Xauthority
# ждём, пока устройства появятся в X
sleep 15
DEVICE_ID=$(xinput list | grep "Goodix Capacitive TouchScreen" | grep -o "id=[0-9]*" | grep -o "[0-9]*" | head -n 1)
if [ -n "$DEVICE_ID" ]; then
    xinput set-prop "$DEVICE_ID" "Coordinate Transformation Matrix" 0 1 0 -1 0 1 0 0 1
fi
sudo chmod +x /usr/local/bin/fix-touchscreen.sh
/usr/local/bin/fix-touchscreen.sh
xinput list-props <ID> | grep "Coordinate Transformation Matrix"

ID ищется по имени, поэтому номер устройства можно не запоминать. Если имя тачскрина другое, поправьте строку в grep. Самый простой автозапуск в Plasma: Системные настройки, раздел Автозапуск, кнопка Добавить, Скрипт, путь /usr/local/bin/fix-touchscreen.sh.

Способ 3: unit systemd

Запасной путь для X11, если нужен unit на уровне системы. Минус в том, что сервису надо дотянуться до X: указать DISPLAY, XAUTHORITY и подождать графическую сессию. Файл /etc/systemd/system/fix-touchscreen.service, вместо USERNAME ваш логин:

[Unit]
Description=Fix touchscreen orientation on boot
After=graphical.target

[Service]
Type=oneshot
User=USERNAME
Environment="DISPLAY=:0"
Environment="XAUTHORITY=/home/USERNAME/.Xauthority"
ExecStartPre=/bin/sleep 60
ExecStart=/usr/local/bin/fix-touchscreen.sh
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable --now fix-touchscreen.service

Если не срабатывает

  • скрипт стартует раньше устройства: увеличьте sleep до 30 секунд или ExecStartPre до 90;
  • нет файла ~/.Xauthority: уберите строку XAUTHORITY из скрипта и unit, в автозапуске KDE обычно хватает DISPLAY из сессии;
  • в Wayland xinput ничего не меняет: это нормально, используйте правило udev;
  • калибровка сбрасывается: проверьте, что имя в правиле udev совпадает с выводом libinput list-devices.

Итог: для CHUWI Hi10Go и похожих планшетов с Goodix в 2026 году лучше один раз прописать правило udev с LIBINPUT_CALIBRATION_MATRIX. Оно переживёт и перезагрузку, и переход Plasma на чистый Wayland. Скрипт с xinput остаётся вариантом только для сессии X11.

Источники и ссылки


Комментарии загружаются…