LINUX.ORG.RU

Калибровка тачскрина

 ,


1

1

Тачскрин работает, но неправильно, нужно откалибровать. Установил и запустил xinput_calibrator, ткнул 4 точки. Ничего не изменилось (хотя на этом этапе уже должно правильно работать!) Попробовал по указанию программы сохранить настройки в файлик /usr/share/X11/xorg.conf.d/99-calibration.conf:

Section "InputClass"
        Identifier      "calibration"
        MatchProduct    "Silead GSLx680 Touchscreen"
        Option  "MinX"  "67097"
        Option  "MaxX"  "401"
        Option  "MinY"  "-8966"
        Option  "MaxY"  "62759"
        Option  "SwapXY"        "0" # unless it was already set to 1
        Option  "InvertX"       "0"  # unless it was already set
        Option  "InvertY"       "0"  # unless it was already set
EndSection

В этой директории и другие похожие файлы есть, вроде 70-wacom.conf и пр. После ребута так же ничего не изменилось. Попробовал и в /etc/X11/xorg.conf.d/ закинуть (директорию пришлось создать) – так же ничего не поменялось.

Вот еще информация, которая может помочь: xinput -list

⎡ Virtual core pointer                          id=2    [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
⎜   ↳ SteelSeries Rival Gaming Mouse            id=9    [slave  pointer  (2)]
⎜   ↳ SteelSeries Rival Gaming Mouse            id=11   [slave  pointer  (2)]
⎜   ↳ Silead GSLx680 Touchscreen                id=13   [slave  pointer  (2)]
⎜   ↳ ImPS/2 Logitech Wheel Mouse               id=15   [slave  pointer  (2)]
⎣ Virtual core keyboard                         id=3    [master keyboard (2)]
    ↳ Virtual core XTEST keyboard               id=5    [slave  keyboard (3)]
    ↳ Power Button                              id=6    [slave  keyboard (3)]
    ↳ Video Bus                                 id=7    [slave  keyboard (3)]
    ↳ Power Button                              id=8    [slave  keyboard (3)]
    ↳ SteelSeries Rival Gaming Mouse            id=10   [slave  keyboard (3)]
    ↳ PC Cam                                    id=12   [slave  keyboard (3)]
    ↳ AT Translated Set 2 keyboard              id=14   [slave  keyboard (3)]
    ↳ SteelSeries Rival Gaming Mouse            id=16   [slave  keyboard (3)]

(Мой девайс под номером 13)

xinput list-props 13:

Device 'Silead GSLx680 Touchscreen':
        Device Enabled (155):   1
        Coordinate Transformation Matrix (157): 1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000
        libinput Calibration Matrix (314):      1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000
        libinput Calibration Matrix Default (315):      1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000
        libinput Send Events Modes Available (279):     1, 0
        libinput Send Events Mode Enabled (280):        0, 0
        libinput Send Events Mode Enabled Default (281):        0, 0
        Device Node (282):      "/dev/input/event9"
        Device Product ID (283):        0, 0

Попробовал поиграться с set-prop – тоже безрезультатно. Свойство вроде применяется (?), но эффекта нет. xinput set-prop 13 --type=atom --format=32 InvertX 1, xinput list-props 13:

Device 'Silead GSLx680 Touchscreen':
        Device Enabled (155):   1
        Coordinate Transformation Matrix (157): 1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000
        libinput Calibration Matrix (314):      1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000
        libinput Calibration Matrix Default (315):      1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000
        libinput Send Events Modes Available (279):     1, 0
        libinput Send Events Mode Enabled (280):        0, 0
        libinput Send Events Mode Enabled Default (281):        0, 0
        Device Node (282):      "/dev/input/event9"
        Device Product ID (283):        0, 0
        InvertX (578):  "PRIMARY" (1)

/var/log/Xorg.0.log: на pastebin

Этот тред я читал, но не понял, как тамошний гуру всё разрулил, да и у того человека калибровка уже работала, а у меня ничего.

Такое ощущение, что xorg все устройства ввода по два раза обрабатывает, применительно к тачскрину, сначала он в /dev как evdev9 регистрируется, потом ниже как mouse2...

На калибровку может и не повлияет такое, но странно.

irton ★★★★★ ()

«libinput Calibration Matrix» пробовал через setprop менять?

Deleted ()
Option  "MinX"  "67097"
Option  "MaxX"  "401"
Option  "MinY"  "-8966"
Option  "MaxY"  "62759"

А таких опций вроде у libinput нет. См. man libinput. Есть Option «CalibrationMatrix» или свойство «Calibration Matrix»

Zubok ★★★★★ ()
Последнее исправление: Zubok (всего исправлений: 1)
Ответ на: комментарий от Zubok

Попробовал xinput set-prop 13 "Coordinate Transformation Matrix" -1 0 1 0 1 0 0 0 1 – сработало! Касания свапнулись по оси X. Попробовал прописать Option "CalibrationMatrix" "-1 0 1 0 1 0 0 0 1" в файл /usr/share/X11/xorg.conf.d/99-calibration.conf – тоже сработало! Тач пашет после ребута. Теперь буду вручную подбирать коэффициенты.

@sleeply4cat, @Zubok, огромное спасибо! не знаю, почему сам не допёр до очевидного решения.

Остаётся одна незначительная проблема. Тачскрин именно что управляет курсором, а привычные жесты вроде скрола, удержания (для контексного меню) – не работают. Подозреваю, что есть уже готовые решения, куда копать? В кедах есть некие «Действия при проведении по сенсорному экрану», но что-то оно не пашет.

P.S. Кто будет читать этот тред, возможно вам поможет статья на арч вики, там объясняют за libinput Calibration Matrix.

fingolfin ()
Ответ на: комментарий от Zubok

А таких опций вроде у libinput нет.

Да, видимо, xinput_calibrator рассчитан на какой-то другой драйвер (или как там), который как раз с такими опциями работает.

fingolfin ()
Ответ на: комментарий от fingolfin

/usr/share/X11/xorg.conf.d/99-calibration.conf

Лучше в /etc/X11/xorg.conf.d положить. /usr/share/ больше для конфигураций, поставляемых пакетами, то есть для нужд системы, и лучше туда свои конфиги не класть, а то потом будешь вспоминать, что это такое и кто принес.

Zubok ★★★★★ ()
Ответ на: комментарий от Zubok

Благодарю!

Вручную не надо.

Уже подобрал)) Но за ссылку спасибо.

Обнаружил еще одну проблему. Тач по вертикали движется рывками, хотя по горизонтали нормально, см. видео. Я так пониманию, это уже железные проблемы китайского тача? Уже не помню, как оно в винде работало.

fingolfin ()
Ответ на: комментарий от fingolfin

Тач по вертикали движется рывками, хотя по горизонтали нормально,

НЕ могу сказать. Выведи список всех свойств устройства и посмотри, есть ли чего подрегулировать. Может, какой-то параметр по умолчанию стоит в плохом значении. Может, какой-то масштабный коэффициент неправильный.

Zubok ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.