Дополнительные кнопки мыши в Linux

Я долго не знал, как подступиться к настройке дополнительных кнопок мыши в Linux. В отличие от Windows здесь нет или почти нет для этого программок с графическим интерфейсом. Меня пугало, что придётся возиться с командной строкой и какими-нибудь мутными конфигами. Теперь, вспоминая эти страхи, как-то даже смешно. На деле всё оказалось слишком просто.

Инструкция годиться для любых современных версий Ubuntu, как впрочем и многих других дистрибутивов Linux. Все сразанное далее опробовано в Elementary OS 0.4 Loki, 5.0 Juno, 5.1 Hera. Я пользуюсь этой операционной системой, поэтому в статье чуть больше внимания будет именно ей.

Внимание! Вам сюда, если у вас Wayland. Во многих современных системах, включая Ubuntu, Debian, Fedora и т.д. Wayland по умолчанию.

Моя мышка Logitech VX Revolution из-за которой пришлось заморочиться:

Мышь Logitech VX Revolution

Я привык на подобные мышки на боковые кнопки назначать функции копирования и выставки. Конечно, функции дополнительным кнопкам можно назначить любые — разные сочетания кнопок клавиатуры, комбинации одновременного нажатия кнопок на клавиатуре и мышке.

Аналогично всё настраивается и для мышек очень многих других моделей и производителей. Позднее я настраивал:

Для начала открываем консоль. В основном все действия будут производиться с её помощью.

Устанавливаем необходимый софт в Ubuntu/Debian/etc:

sudo apt install xbindkeys xautomation x11-utils

Установка в Fedora:

sudo dnf install xbindkeys xautomation

К сожалению в Fedora нет особого смысла настраивать xbindkeys, т.к. программа не будет обрабатывать нажатия кнопок в приложениях, написанных для Wayland. Решение здесь.

Драйвер или что-то ещё дополнительное для вашей мышки искать не надо! Она ведь у вас работает, курсор движется? Значит всё и так уже есть, обычно этого достаточно. Убедиться в работе всех кнопок мышки поможет следующая команда:

xev | grep button

Она откроет над консолью небольшое окошко. Вам нужно будет навести на него курсор мыши и нажимать те её дополнительные кнопки, которые требуется настроить. Так вы узнаете порядковые номера этих кнопок, запишите их, они потребуются чуть позже.

Xev: смотрим коды кнопок мыши

Закройте маленькое окошко, чтобы закончить.

Следующая команда создаёт в домашней папке текущего пользователя файл конфигурации, редактируя его потом мы будем настраивать кнопки. Вы должны выполнять эту команду под тем пользователем, под которым обычно работаете в системе. Если вы её выполните под root, то соответственно файл поместиться в домашнюю папку root, а это часто не то, что надо.

xbindkeys --defaults > $HOME/.xbindkeysrc

В моём случае файл разместился по такому пути:

/home/d1mon/.xbindkeysrc

Теперь редактируем его своим любимым редактором. Если у вас такового нет, могу порекомендовать встроенные редакторы файловых коммандеров mc или Double Commander.

По умолчанию в файле на 40 строке присутствует включенный пример:

# Examples of commands:
"xbindkeys_show" 
  control+shift + q


Можно его отключить (закомментировать), установив вначале строк символ #. Следом пишем свои команды. Например, я для боковых кнопок мышки добавил две следующие:

"xte 'keydown Control_L' 'key Insert' 'keyup Control_L'"
  b:9

"xte 'keydown Shift_L' 'key Insert' 'keyup Shift_L'"
  b:8

Из кода видно, что происходит. В первом случае, держим левый «Ctrl», нажимаем кнопку «Insert», отпускаем левый «Ctrl». Вся эта эмуляция клавиатуры происходит по нажатию кнопки мышки под номером 9.

Комбинации кнопок Ctrl+Insert и Shift+Insert для копирования и вставки считаются общепринятыми, как и Ctrl+C и Ctrl+V. В настройки лучше прописывать именно первый вариант. Он будет работать всегда, при любой включенной раскладке клавиатуры.

А вот комбинации Ctrl+C и Ctrl+V будут работать, только если будет включена латинская. Во всяком случае так в Elementary OS, возможно в простой Ubuntu такого нет. На англоязычных интернет-ресурсах часто советуют следующий код, т.к. у них нет трудностей с раскладками:

"xte 'keydown Control_L' 'key c' 'keyup Control_L'"
  b:9

"xte 'keydown Control_L' 'key v' 'keyup Control_L'"
  b:8

Пример, когда нужно просто эмулировать нажатие кнопок клавиатуры:

"xte 'key Control_L'"
  b:13

"xte 'key q'"
  b:14

Эмуляция нажатия комбинации CTRL + левая кнопка мыши, чтобы по дополнительной кнопке 10 мыши в веб-браузере открывать вкладку в новом окне:

"xte 'keydown Control_L' 'mouseclick 1' 'keyup Control_L'"
  b:10 + Release

Следующей командой можно посмотреть справку, где приводятся коды других функциональных кнопок клавиатуры, которые могут пригодиться для конфига:

xte -h

Ещё можно узнать коды вообще любых кнопок так:

xev | grep keycode

А такая команда позволяет протестировать сделанные в файле .xbindkeysrc настройки:

xbindkeys -n -v

Если всё готово и вы хотели бы начать пользоваться дополнительными кнопками мыши, надо просто запустить ту же самую программу:

xbindkeys

Ну и соответственно, чтобы оно всегда работало надо добавить эту программу в автозапуск.

В Ubuntu 20.04 есть специальная программа «Автоматически запускаемые приложения». Скорее всего там xbindkeys уже будет, тогда ничего делать не нужно.

В Elementary OS заходим в «Приложения» → «Параметры системы» → «Приложения» → Вкладка «Автозапуск» → В нижнем левом углу есть кнопка «Добавить программу в автозапуск...». Здесь просто вписываем «xbindkeys»:

Автозапуск xbindkeys

Всё, можно пользоваться. Согласитесь, ничего сложного.

Я когда с этим разбирался, то у меня был косяк в том, что нужные мне дополнительные кнопки мыши не распознавались xev. Вот именно те две кнопки, которые я и хотел настроить. С остальными сразу всё было без проблем.

В теории, если такая ситуация, то это означает, что используемый вами драйвер мышки не обеспечивает работу всех её кнопок. Где брать другой драйвер под Linux — не понятно. Производители железа редко когда заморачиваются и делают для своих устройств драйверы под эту операционную систему.

Но благо, эта ситуация крайне редкая, обычно, как я понял из информации в интернете, кнопки мышек распознаются сразу без проблем. В моём случае это была аппаратная проблема. Две нужные мне кнопки тупо вообще не работали. Видать, слишком давно ими не пользовался. Разобрал грызуна, почистил, покликал, — заработали. После этого повесил на них нужные действия за считанные минуты.

Определить, что кнопки вообще не работают помог другой компьютер с Windows. А так, наверное, еще долго бы ломал голову, почему нифига не работает и что с этим делать.

6 комментариев

E-
Огромное спасибо! На боковые кнопки мыши повесил громкость + и громкость - "amixer -D pulse set Master 5%+" b:9 "amixer -D pulse set Master 5%-" b:8
Av
Спасибо!
Ев
Низкий поклон тебе, мил человек!! Очень полезная статейка. Debian + Mate - всё заработало без бубна.
Иг
Спасибо! Отличная статья! Настроил без проблем боковые клавиши мышки
DE
Спасибо!
Ва
Linux Mint 21 Вместо первой команды, которая не хотела работать xbindkeys --defaults > $HOME/.xbindkeysrc использовал xbindkeys --defaults > ~/.xbindkeysrc После этого все настроилось без проблем. Спасибо :)