Я долго не знал, как подступиться к настройке дополнительных кнопок мыши в Linux. В отличие от Windows здесь нет или почти нет для этого программок с графическим интерфейсом. Меня пугало, что придётся возиться с командной строкой и какими-нибудь мутными конфигами. Теперь, вспоминая эти страхи, как-то даже смешно. На деле всё оказалось слишком просто.
Инструкция годиться для любых современных версий Ubuntu, как впрочем и многих других дистрибутивов Linux. Все сразанное далее опробовано в Elementary OS 0.4 Loki, 5.0 Juno, 5.1 Hera. Я пользуюсь этой операционной системой, поэтому в статье чуть больше внимания будет именно ей.
Внимание! Вам сюда, если у вас Wayland. Во многих современных системах, включая Ubuntu, Debian, Fedora и т.д. Wayland по умолчанию.
Моя мышка Logitech VX Revolution из-за которой пришлось заморочиться:
Я привык на подобные мышки на боковые кнопки назначать функции копирования и выставки. Конечно, функции дополнительным кнопкам можно назначить любые — разные сочетания кнопок клавиатуры, комбинации одновременного нажатия кнопок на клавиатуре и мышке.
Аналогично всё настраивается и для мышек очень многих других моделей и производителей. Позднее я настраивал:
- Logitech Marathon Mouse M705
- A4tech N-708X
Для начала открываем консоль. В основном все действия будут производиться с её помощью.
Устанавливаем необходимый софт в Ubuntu/Debian/etc:
sudo apt install xbindkeys xautomation x11-utils
Установка в Fedora:
sudo dnf install xbindkeys xautomation
К сожалению в Fedora нет особого смысла настраивать xbindkeys, т.к. программа не будет обрабатывать нажатия кнопок в приложениях, написанных для Wayland. Решение здесь.
Драйвер или что-то ещё дополнительное для вашей мышки искать не надо! Она ведь у вас работает, курсор движется? Значит всё и так уже есть, обычно этого достаточно. Убедиться в работе всех кнопок мышки поможет следующая команда:
xev | grep button
Она откроет над консолью небольшое окошко. Вам нужно будет навести на него курсор мыши и нажимать те её дополнительные кнопки, которые требуется настроить. Так вы узнаете порядковые номера этих кнопок, запишите их, они потребуются чуть позже.
Закройте маленькое окошко, чтобы закончить.
Следующая команда создаёт в домашней папке текущего пользователя файл конфигурации, редактируя его потом мы будем настраивать кнопки. Вы должны выполнять эту команду под тем пользователем, под которым обычно работаете в системе. Если вы её выполните под 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»:
Всё, можно пользоваться. Согласитесь, ничего сложного.
Я когда с этим разбирался, то у меня был косяк в том, что нужные мне дополнительные кнопки мыши не распознавались xev. Вот именно те две кнопки, которые я и хотел настроить. С остальными сразу всё было без проблем.
В теории, если такая ситуация, то это означает, что используемый вами драйвер мышки не обеспечивает работу всех её кнопок. Где брать другой драйвер под Linux — не понятно. Производители железа редко когда заморачиваются и делают для своих устройств драйверы под эту операционную систему.
Но благо, эта ситуация крайне редкая, обычно, как я понял из информации в интернете, кнопки мышек распознаются сразу без проблем. В моём случае это была аппаратная проблема. Две нужные мне кнопки тупо вообще не работали. Видать, слишком давно ими не пользовался. Разобрал грызуна, почистил, покликал, — заработали. После этого повесил на них нужные действия за считанные минуты.
Определить, что кнопки вообще не работают помог другой компьютер с Windows. А так, наверное, еще долго бы ломал голову, почему нифига не работает и что с этим делать.