LINUX.ORG.RU

Переназначение действий кнопок мыши

 ,


0

1

Доброго времени!

Есть мышь с дополнительными кнопками сбоку (вперед/назад), их действие перепутано тестами, т.е. вперед - это назад, а назад - это вперед. Как переназначить действие этих кнопок мыши? Желательно без доп софта.

Мышь Defender Safari MM-675

Kubuntu 18.04 LTS.

Ответ на: комментарий от mky

На команду

grep -E "Name=|Handlers" /proc/bus/input/devices | grep -EB1 'Handlers.*mouse' | sed -nE '/Name=/,/Handlers=.*mouse/ {/Name=/N; /Handlers=.*kbd/bskip;/Handlers=.*mouse/s/^.*Name=["]([^"]+)["].*$/\1/p;:skip}'

выдал

MOSART Semi. 2.4G Keyboard Mouse
SYNA3602:00 0911:5288 Touchpad

На команду

xev | grep -A2 --line-buffered '^ButtonPress' | sed -nE '/button /s/^.*(button[[:space:]]+[[:digit:]]+).*$/\1/ p'

в терминале курсор переводится в начало строки и появляется кнопка запущенного приложения «xev» на панели запуска приложений, но без всяких окон. Как я понимаю это как раз таки и запускается «xev» для определения кнопок (в моем случае мыши). Я поочередно нажал все кнопки мыши, но вот как из него «xev» выйти и куда он пишет полученную информацию так и не понял.

На команду

xinput

выдал

user@pc:~$ xinput
⎡ Virtual core pointer                          id=2    [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
⎜   ↳ MOSART Semi. 2.4G Keyboard Mouse          id=9    [slave  pointer  (2)]
⎜   ↳ MOSART Semi. 2.4G Keyboard Mouse Consumer Control id=10   [slave  pointer  (2)]
⎜   ↳ SYNA3602:00 0911:5288 Touchpad            id=13   [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)]
    ↳ Power Button                              id=7    [slave  keyboard (3)]
    ↳ MOSART Semi. 2.4G Keyboard Mouse          id=8    [slave  keyboard (3)]
    ↳ MOSART Semi. 2.4G Keyboard Mouse System Control   id=11   [slave  keyboard (3)]
    ↳ USB2.0 Camera: PC Camera                  id=12   [slave  keyboard (3)]
    ↳ Intel HID 5 button array                  id=14   [slave  keyboard (3)]
    ↳ Intel HID events                          id=15   [slave  keyboard (3)]
    ↳ AT Translated Set 2 keyboard              id=16   [slave  keyboard (3)]
    ↳ MOSART Semi. 2.4G Keyboard Mouse Consumer Control id=17   [slave  keyboard (3)]
parnyagan
() автор топика
Ответ на: комментарий от mky

Исходя из вывода этих команд можно черпнуть какую то информацию о переназначении кнопок мыши?

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

Для выхода из xev нужно в терминале где он запущен нажать Ctrl-C. А то, что не появляется окно — странно. После запуска xev должно появиться небольшое окно ″Event Tester″ (может оно у вас свёрнуто). Туда нужно навести курсор мыши и понажимать кнопки. Тогда xev будет ловить события нажатия кнопок (ButtonPress) и информация про это появится в терминале, где он запущен.

Без номеров кнопок сложно определить что куда переназначать. Можете попробовать:

xinput --set-button-map "MOSART Semi. 2.4G Keyboard Mouse" 1 2 3 4 5 6 7 9 8
Если не поймёт мышь по имени, укажите в команде ″9″. Здесь переназначаются кнопки 8 и 9 (стандартные «назад», «вперёд»).

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

Все, разобрался. И окошко «xev» появилось. Кнопки в териинале прописались.

Нажал поочередно:

  • Левая кнопка мыши
  • Средняя кнопка мыши
  • Правая кнопка мыши (нажатие на колесико)
  • Прокрутка полесика от себя
  • Прокрутка колесика на себя
  • Боковая кнопка мыши дальняя от себя
  • Боковая кнопка мыши ближняя к себе

Вывод терминала:

bash
user@pc:~$ xev | grep -A2 --line-buffered '^ButtonPress' | sed -nE '/button /s/^.*(button[[:space:]]+[[:digit:]]+).*$/\1/ p'
button 1
button 2
button 3
button 4
button 5
button 8
button 9
parnyagan
() автор топика
Ответ на: комментарий от mky

Кнопок 6 и 7 (сдвиг колесика влево/вправо) у меня на этой мыше нет.

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

На команду

bash
xinput --set-button-map "MOSART Semi. 2.4G Keyboard Mouse" 1 2 3 4 5 6 7 9 8

был получен ответ

bashuser@pc:~$ xinput --set-button-map "MOSART Semi. 2.4G Keyboard Mouse" 1 2 3 4 5 6 7 9 8                                                                                            
Warning: There are multiple devices named 'MOSART Semi. 2.4G Keyboard Mouse'.                                                                                                      
To ensure the correct one is selected, please use the device ID instead.                                                                                                           
                                                                                                                                                                                   
unable to find device 'MOSART Semi. 2.4G Keyboard Mouse'
parnyagan
() автор топика
Ответ на: комментарий от parnyagan

Если не поймёт мышь по имени, укажите в команде ″9″

xinput --set-button-map 9 1 2 3 4 5 6 7 9 8

Если сработает, то в автозагрузку нужно будет пихать скрипт, который определить id мыши по выводу xinput, так как не гарантировано, что при следующей загрузке у неё будте id=9.

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

теперь кнопка «назад» вообще перестала работать, которая ближе к запястию.

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

Но при этом кнопка «вперед» работает как надо (т.е. выполняет действие «вперед»).

Одно наладили, второе сломали…

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

Во, вот так вот запахало

bash
xinput --set-button-map 9 1 2 3 4 5 6 7 9 8

кнопки при этом работают, наконец-то, как надо, а не наоборот :-)

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

Теперь осталось разобраться как это все в автозагрузку запихнуть

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

Создаёте у себя в домашнем каталоге какой-нибудь файлик с таким содержимым:

#!/bin/bash
MID=`xinput | sed -n '/MOSART Semi. 2.4G Keyboard Mouse Mouse.*pointer/s/.*id=\([0-9]*\).*/\1/p'`
[ -n "$MID" ] && xinput --set-button-map $MID 1 2 3 4 5 6 7 9 8

Потом делаете этот файл исполняемым — из терминала:

chmod 755 ИМЯ_ФАЙЛА

А дальше уже тонкости KDE (раз kubuntu). Либо так: https://linuxmasterclub.ru/autorun-apps-kde/ , либо создать файл в ~/.config/autostart/ , как указано здесь https://www.addictivetips.com/ubuntu-linux-tips/autostart-programs-on-kde-pla...

Если после перезагрузки кнопки не перенастроились, то сначала запустить скрипт из терминал — проверить, что он работает...

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

Попробовал добавить через Системные настройки - Запуск и завершение - Автозапуск приложений - Добавил сценарий. Не получилось, после перезагрузки кнопки вернулись на свои места (как были изначально).

Попробовал ввести скрипт в терминале, я даже нажать ничего не успел, только вставил его… он сразу же разложился на 3 строки

user@pc:~$ #!/bin/bash
user@pc:~$ MID=`xinput | sed -n '/MOSART Semi. 2.4G Keyboard Mouse Mouse.*pointer/s/.*id=\([0-9]*\).*/\1/p'`
user@pc:~$ [ -n "$MID" ] && xinput --set-button-map $MID 1 2 3 4 5 6 7 9 8
parnyagan
() автор топика
Ответ на: комментарий от parnyagan

Ну как закончите праздновать 23-е, все же попробуйте создать файл с помощью текстового редактора и вставить текст скрипта туда, а не в терминал.

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

Получилось добавить команду

xinput --set-button-map $MID 1 2 3 4 5 6 7 9 8

следующим образом:

touch /home/user/.kde/env/script.sh
chmod +x /home/user/.kde/env/script.sh
nano /home/user/.kde/env/script.sh

в nano ввел

xinput --set-button-map $MID 1 2 3 4 5 6 7 9 8

после чего сохранил и вышел: Ctrl+X -> Y -> Enter

Затем перешел в Системные настройка - Запуск и завершение - Автозапуск - Добавить сценарий.

[url=https://radikal.ru/big/afggla6qcq819][img]https://a.radikal.ru/a24/2002/6a/0606324999det.jpg[/img][/url]

В появившемся окне указал путь к файлу: /home/user/.kde/env/script.sh

Ребутнул ноут. Все работает ;-)

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

Вам еще раз ОГРОМНОЕ СПАСИБО за помощь в решении проблемы, возможно на будущее и придется добавить

#!/bin/bash
MID=`xinput | sed -n '/MOSART Semi. 2.4G Keyboard Mouse Mouse.*pointer/s/.*id=\([0-9]*\).*/\1/p'`
[ -n "$MID" ] && xinput --set-button-map $MID 1 2 3 4 5 6 7 9 8

Но на данный момент уже дня 3 все работает.

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