LINUX.ORG.RU

XINPUT зеркалит курсор мыши.

 


0

1

Имею PIPO X8. Установил Volumio. Встало в портрет, нужно альбом. Xrandr работает только для norm и invers. Добавил в /etc/X11/xorg.conf

 Section "Monitor"
 Identifier "DSI-1"
 Option "Rotate" "right"
 EndSection

Экран встал в альбом. TouchScreen и указатель мыши поправил. Добавил в /opt/volumiokiosk.sh

 sudo DISPLAY=:0 xinput map-to-output 'pointer:Goodix Capacitive TouchScreen' DSI-1
 sudo DISPLAY=:0 xinput set-prop "pointer:Logitech M280/320/275" 'Coordinate Transformation Matrix' -1 0 1 0 -1 1 0 0 1

Но осталось: курсор мыши зеркалит относительно центра экрана.
Курсор стоит: левый-нижний угол, срабатывает: правый-верхний и правый-нижний на левый-верхний и тд..
Помогите куда копать.



Последнее исправление: hobbit (всего исправлений: 1)

Может единичную матрицу-то трансформации координат стоит использовать? Тогда координаты не должны будут меняться. Единичная матрица - это

1 0 0
0 1 0
0 0 1
PeleWin
()
Ответ на: комментарий от hobbit

Спасибо за ответ. Матрицу использовал повернул на 180грд.

sudo DISPLAY=:0 xinput set-prop "pointer:Logitech M280/320/275" 'Coordinate Transformation Matrix' -1 0 1 0 -1 1 0 0 1

Но изменилось только направление движения курсора, было мышь вниз курсор вверх, стало нормально.Координаты курсора не совпадают с монитором. Чтобы сработала кнопка на мониторе, надо курсор мышью поставить зеркально отн. центра.

volumio@volumio:~$ sudo DISPLAY=:0 xinput
⎡ Virtual core pointer                          id=2    [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
⎜   ↳ Logitech M280/320/275                     id=7    [slave  pointer  (2)]
⎜   ↳ Goodix Capacitive TouchScreen             id=9    [slave  pointer  (2)]
⎣ Virtual core keyboard                         id=3    [master keyboard (2)]
    ↳ Virtual core XTEST keyboard               id=5    [slave  keyboard (3)]
    ↳ Video Bus                                 id=6    [slave  keyboard (3)]
    ↳ bytcr-rt5640 Headset                      id=8    [slave  keyboard (3)]
    ↳ axp20x-pek                                id=10   [slave  keyboard (3)]
    ↳ gpio-keys                                 id=11   [slave  keyboard (3)]
    ↳ gpio-keys                                 id=12   [slave  keyboard (3)]
    ↳ Logitech M280/320/275                     id=13   [slave  keyboard (3)]
    ↳ Goodix Capacitive TouchScreen             id=14   [slave  keyboard (3)]

Я так понял это мышь в графическом режиме и ее свойства:

↳ Logitech M280/320/275                     id=7    [slave  pointer  (2)]
volumio@volumio:~$ sudo DISPLAY=:0 xinput list-props "pointer:Logitech M280/320/275"
Device 'Logitech M280/320/275':
        Device Enabled (179):   1
        Coordinate Transformation Matrix (181): -1.000000, 0.000000, 1.000000, 0.000000, -1.000000, 1.000000, 0.000000, 0.000000, 1.000000
        libinput Natural Scrolling Enabled (314):       0
        libinput Natural Scrolling Enabled Default (315):       0
        libinput Scroll Methods Available (316):        0, 0, 1
        libinput Scroll Method Enabled (317):   0, 0, 0
        libinput Scroll Method Enabled Default (318):   0, 0, 0
        libinput Button Scrolling Button (319): 2
        libinput Button Scrolling Button Default (320): 2
        libinput Middle Emulation Enabled (321):        0
        libinput Middle Emulation Enabled Default (322):        0
        libinput Accel Speed (323):     0.000000
        libinput Accel Speed Default (324):     0.000000
        libinput Accel Profiles Available (325):        1, 1
        libinput Accel Profile Enabled (326):   1, 0
        libinput Accel Profile Enabled Default (327):   1, 0
        libinput Left Handed Enabled (328):     0
        libinput Left Handed Enabled Default (329):     0
        libinput Send Events Modes Available (299):     1, 0
        libinput Send Events Mode Enabled (300):        0, 0
        libinput Send Events Mode Enabled Default (301):        0, 0
        Device Node (302):      "/dev/input/event0"
        Device Product ID (303):        1133, 16471
        libinput Drag Lock Buttons (330):       <no items>
        libinput Horizontal Scroll Enabled (331):       1

Мышь в текстовом режиме и ее свойства:

↳ Logitech M280/320/275                     id=13   [slave  keyboard (3)]
volumio@volumio:~$ sudo DISPLAY=:0 xinput list-props "keyboard:Logitech M280/320/275"
Device 'Logitech M280/320/275':
        Device Enabled (179):   1
        Coordinate Transformation Matrix (181): 1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000
        libinput Send Events Modes Available (299):     1, 0
        libinput Send Events Mode Enabled (300):        0, 0
        libinput Send Events Mode Enabled Default (301):        0, 0
        Device Node (302):      "/dev/input/event0"
        Device Product ID (303):        1133, 16471

Device id у них один (179) поменять одновременно не смог. Свойств с привязкой к координатам здесь не нашел.

Viacheslav65
() автор топика
Ответ на: комментарий от hobbit
volumio@volumio:~$ sudo DISPLAY=:0 xinput list --long "pointer:Logitech M280/320/275"
Logitech M280/320/275                           id=7    [slave  pointer  (2)]
        Reporting 7 classes:
                Class originated from: 7. Type: XIButtonClass
                Buttons supported: 20
                Button labels: "Button Left" "Button Middle" "Button Right" "Button Wheel Up" "Button Wheel Down" "Button Horiz Wheel Left" "Button Horiz Wheel Right" "Button Side" "Button Extra" "Button Forward" "Button Back" None None None None None None None None None
                Button state:
                Class originated from: 7. Type: XIValuatorClass
                Detail for Valuator 0:
                  Label: Rel X
                  Range: -1.000000 - -1.000000
                  Resolution: 0 units/m
                  Mode: relative
                Class originated from: 7. Type: XIValuatorClass
                Detail for Valuator 1:
                  Label: Rel Y
                  Range: -1.000000 - -1.000000
                  Resolution: 0 units/m
                  Mode: relative
                Class originated from: 7. Type: XIValuatorClass
                Detail for Valuator 2:
                  Label: Rel Horiz Scroll
                  Range: -1.000000 - -1.000000
                  Resolution: 0 units/m
                  Mode: relative
                Class originated from: 7. Type: XIValuatorClass
                Detail for Valuator 3:
                  Label: Rel Vert Scroll
                  Range: -1.000000 - -1.000000
                  Resolution: 0 units/m
                  Mode: relative
                Class originated from: 7. Type: XIScrollClass
                Scroll info for Valuator 2
                  type: 2 (horizontal)
                  increment: 15.000000
                  flags: 0x0
                Class originated from: 7. Type: XIScrollClass
                Scroll info for Valuator 3
                  type: 1 (vertical)
                  increment: 15.000000
                  flags: 0x0

Здесь координаты XY изменяются от -1 до -1. непонятно. И разрешение 0 на метр.

Viacheslav65
() автор топика
Ответ на: комментарий от imatveev13
2024-12-01 20:58:57 (326 KB/s) - 'xorg_calibrator.gz' saved [546918/546918]

volumio@volumio:~$ gunzip xorg_calibrator.gz
volumio@volumio:~$ chmod 775 xorg_calibrator
volumio@volumio:~$ ./xorg_calibrator output_filename=/usr/share/X11/xorg.conf.d/99-calibration.conf
device_info_list_get:55: Unable to connect to X server
main:328: Error: No devices found.

Загрузил. Не пойму почему не работает и чего хочет.

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

Судя по тому как вы вызываете

volumio@volumio:~$ sudo DISPLAY=:0 xinput

у вас както своеобразно настроен доступ к X серверу. xinput без sudo должен тоже работать.

Предлагаю проверить работу всяких X клиентов без sudo. Например xterm или xeyes.

Еще предлагаю попробовать

sudo DISPLAY=:0 ./xorg_calibrator output_filename=/usr/share/X11/xorg.conf.d/99-calibration.conf
imatveev13
()
Ответ на: комментарий от imatveev13

Вы колдун!

  Free Audiophile Linux Music Player - Version 3.0

          © 2015-2021 Michelangelo Guarise - Volumio Team - Volumio.org

Volumio Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Welcome to Volumio for x86_64 (6.6.32-volumio x86_64)
volumio@volumio:~$ sudo DISPLAY=:0 ./xorg_calibrator output_filename=/usr/share/X11/xorg.conf.d/99-calibration.conf
[sudo] password for volumio:
Section "InputClass"
        Identifier      "calibration"
        MatchProduct    "Goodix Capacitive TouchScreen"
        Option  "TransformationMatrix"  "-1.002890 0.004836 0.997825 -0.001517 -1.004829 1.000967 0.000000 0.000000 1.000000"
EndSection
write_file:254: failed: fopen(): /usr/share/X11/xorg.conf.d/99-calibration.conf : Input/output error
Bus error

Сработало, четыре раза нажал и выскочило, но с ошибками.

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

По идее сразу после xorg_calibrator тач должен работать правильно. Получилось?

write_file:254: failed: fopen(): /usr/share/X11/xorg.conf.d/99-calibration.conf : Input/output error Bus error

Не получилось записать файл с калибровками. Возможно директории нет. Проверка

ls /usr/share/X11/xorg.conf.d

Сильно настораживает

Input/output error Bus error

намек на проблемы с диском.

Раз сохранить конфиг не удалось можно попробовать использовать матрицу как вы делали раньше. Приблизительно такую команду сначала проверит вручную. Потом сделать чтоб она выполнялась после старта Xorg

sudo DISPLAY=:0 xinput set-prop "Goodix Capacitive TouchScreen" 'Coordinate Transformation Matrix' -1.002890 0.004836 0.997825 -0.001517 -1.004829 1.000967 0.0 0.0 1.0
imatveev13
()
Последнее исправление: imatveev13 (всего исправлений: 1)
Ответ на: комментарий от Viacheslav65

Он не смог записать настройки в файл /usr/share/X11/xorg.conf.d/99-calibration.conf.

Или прав не хватает, или там такой директории нет. Попробуй скопировать настройки, которые выдал этот калибратор(всё, начиная с Section и до EndSection соответственно), в свой xorg.conf руками и перезапустить иксы.

shell-script ★★★★★
()
Ответ на: комментарий от Viacheslav65

xorg_calibrator сразу после 4х тыков применяет матрицу. Отдельная команда применения матрицы не нужна. Т.е. после

sudo DISPLAY=:0 ./xorg_calibrator 

тач должен работать правильно. Если это не так, что-то пошло не так.

Возможно нужно калиборвать другое устройство. Получить список всех устройств кот. можно калибровать

sudo DISPLAY=:0 ./xorg_calibrator list
imatveev13
()
Последнее исправление: imatveev13 (всего исправлений: 1)
Ответ на: комментарий от shell-script

Директорий есть, файла нет. Я думаю не записался из-за SUDO.

Забыл сказать, система и Volumio стоит на флэшке, флэшка в PIPO, дисплей, тачскрин и мышь на PIPO. Я в сети с ноута, здесь все работает правильно, я в терминале.

Мышь терминальная в ноуте работает правильно и в терминале и в экране Volumio. Не правильно работает мышь, которая подключена к PIPO.

Viacheslav65
() автор топика
Ответ на: комментарий от imatveev13
volumio@volumio:~$ sudo DISPLAY=:0 ./xorg_calibrator list
[sudo] password for volumio:
id: 4 "Virtual core XTEST pointer" calibratable:0
id: 5 "Virtual core XTEST keyboard" calibratable:0
id: 6 "Video Bus" calibratable:0
id: 7 "Logitech M280/320/275" calibratable:0
id: 8 "bytcr-rt5640 Headset" calibratable:0
id: 9 "Goodix Capacitive TouchScreen" calibratable:1
id: 10 "axp20x-pek" calibratable:0
id: 11 "gpio-keys" calibratable:0
id: 12 "gpio-keys" calibratable:0
id: 13 "Logitech M280/320/275" calibratable:0
id: 14 "Goodix Capacitive TouchScreen" calibratable:0

Тоже самое дает XINPUT можно посмотреть выше.

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

xinput не говорит какое устройство calibratable. Ну и ладно. Здесь calibratable только один.

id: 9 "Goodix Capacitive TouchScreen" calibratable:1

xorg_calibrator не ошибется.

Я правильно понимаю что «Goodix Capacitive TouchScreen» находится на PIPO? Мы не ноут случайно калибруем вместо PIPO?

Пожалуйста проверьте что после 4х тыков в

sudo DISPLAY=:0 ./xorg_calibrator

тач на PIPO работает правильно. Если это не так, мы на ложном пути.

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

Тач на Pipo и он калибруется. После перезагрузки убрал матрицу из загруки, курсор двигается зеркально, в калибровке курсор совмещается с точкой и срабатывает(положение курсора совпадает с координатами креста). Все четыре тыка. Программа заканчичивается без ошибок. Но в программе курсор зеркалит, наводится в одну точку , а срабатывает в др. зеркально.

Viacheslav65
() автор топика
Ответ на: комментарий от imatveev13

Нет, в вашей программе срабатывает на нажатие, а не на координаты(поставил курсор в произволную точку и нажал пр. кнопку сработало). Где посмотреть XY координаты курсора и как передается положение курсора на дисплей?

Viacheslav65
() автор топика
Ответ на: комментарий от imatveev13

Но после произвольной калибровки (тыканье курсора в любую точку)

main:387: failed: transform_matrix_valid() transform_matrix: -nan -nan -nan -nan -nan -nan 0 0 1
main:389: Probably there were misclicks

т.е. координаты не соответствуют заданному диапазону?

Viacheslav65
() автор топика
Ответ на: комментарий от imatveev13

До этого вручную калибровал мышь, попробовал калибровать тач тоже самое кино.

volumio@volumio:~$ sudo DISPLAY=:0 xinput set-prop "pointer:Goodix Capacitive TouchScreen" 'Coordinate Transformation Matrix' -1.002890 0.004836 0.997825 -0.001517 -1.004829 1.000967 0.0 0.0 1.0
volumio@volumio:~$

Как keyboard не калибруется- разные масштабы.

Viacheslav65
() автор топика
Ответ на: комментарий от imatveev13

Еще раз, запустил с ноута xterm на PIPO поверх VOLUMIO открылось окно терминала.Но ввод в окно с клавиатуры ноута не работал.

volumio@volumio:~$ sudo DISPLAY=:0 xterm

XEYES с ноута запускалась, но вывода на PIPO не было,выключалась CTrl-C

volumio@volumio:~$ sudo DISPLAY=:0 xeyes

После подключения клавиатуры к PIPO и запуска XEYES из окна терминала на PIPO, заработали глаза. Но глаза косили на 180гр.(курсор в верху, глаза смотрят в низ и т.д.).После калибровки косоглазие сохранилось.

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

После подключения клавиатуры к PIPO и запуска XEYES из окна терминала на PIPO, заработали глаза. Но глаза косили на 180гр.(курсор в верху, глаза смотрят в низ и т.д.).После калибровки косоглазие сохранилось.

Отлично! Теперь мы знаем что обычной линуксовой калибровке что-то мешает. Думаю по той-же причине не удались попытки установить матрицу с помощью xinput set-prop.

Я правильно догадываюсь что вы установили линукс отсюда: https://volumio.com/get-started ?

В этом volumio уже есть свои настройки поворота экрана. Они могут конфликтовать с попытками калибровки.

На форуме volumio есть обсуждения на эту тему. Например:

https://community.volumio.com/t/v3-touch-screen-not-rotating-180deg-on-waveshare-7/53068/8

https://community.volumio.com/t/tuto-touchscreen-rotations/10720/6

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

Да это = Volumio. В самой программе поворота нет, там есть приложение для тачскрина с калибровкой, я его не смог поставить на PIPO. PIPO хорошая вещь - экран,тачскрин,звук, отн. хорош. проц.и стоил 2коп. Купил абс.новый их ставили на кассы,нужно было купить несколько. Работает на Винде, Андроиде и Линуксе. Встроенный Вайфай. А там они все с малиной.

Viacheslav65
() автор топика