Дополнительные кнопки мыши в Linux
Дмитрий Корнев
Я долго не знал, как подступиться к настройке дополнительных кнопок мыши в Linux. В отличие от Windows здесь нет или почти нет для этого программок с графическим интерфейсом. Меня пугало, что придётся возиться с командной строкой и какими-нибудь мутными конфигами. Теперь, вспоминая эти страхи, как-то даже смешно. На деле всё оказалось слишком просто.
Инструкция годиться для любых современных версий Ubuntu, как впрочем и многих других дистрибутивов Linux. Все сразанное далее опробовано в Elementary OS 0.4 Loki, 5.0 Juno, 5.1 Hera. Я пользуюсь этой операционной системой, поэтому в статье чуть больше внимания будет именно ей.
Моя мышка Logitech VX Revolution из-за которой пришлось заморочиться:
Я привык на подобные мышки на боковые кнопки назначать функции копирования и выставки. Конечно, функции дополнительным кнопкам можно назначить любые — разные сочетания кнопок клавиатуры, комбинации одновременного нажатия кнопок на клавиатуре и мышке.
Аналогично всё настраивается и для мышек очень многих других моделей и производителей. Позднее я настраивал:
Для начала открываем консоль. В основном все действия будут производиться с её помощью.
Устанавливаем необходимый софт:
Драйвер или что-то ещё дополнительное для вашей мышки искать не надо! Она ведь у вас работает, курсор движется? Значит всё и так уже есть, обычно этого достаточно. Убедиться в работе всех кнопок мышки поможет следующая команда:
Она откроет над консолью небольшое окошко. Вам нужно будет навести на него курсор мыши и нажимать те её дополнительные кнопки, которые требуется настроить. Так вы узнаете порядковые номера этих кнопок, запишите их, они потребуются чуть позже.
Закройте маленькое окошко, чтобы закончить.
Следующая команда создаёт в домашней папке текущего пользователя файл конфигурации, редактируя его потом мы будем настраивать кнопки. Вы должны выполнять эту команду под тем пользователем, под которым обычно работаете в системе. Если вы её выполните под root, то соответственно файл поместиться в домашнюю папку root, а это часто не то, что надо.
В моём случае файл разместился по такому пути:
Теперь редактируем его своим любимым редактором. Если у вас такового нет, могу порекомендовать встроенные редакторы файловых коммандеров mc или Double Commander.
По умолчанию в файле на 40 строке присутствует включенный пример:
Можно его отключить (закомментировать), установив вначале строк символ # . Следом пишем свои команды. Например, я для боковых кнопок мышки добавил две следующие:
Из кода видно, что происходит. В первом случае, держим левый «Ctrl», нажимаем кнопку «Insert», отпускаем левый «Ctrl». Вся эта эмуляция клавиатуры происходит по нажатию кнопки мышки под номером 9.
Комбинации кнопок Ctrl+Insert и Shift+Insert для копирования и вставки считаются общепринятыми, как и Ctrl+C и Ctrl+V. В настройки лучше прописывать именно первый вариант. Он будет работать всегда, при любой включенной раскладке клавиатуры.
А вот комбинации Ctrl+C и Ctrl+V будут работать, только если будет включена латинская. Во всяком случае так в Elementary OS, возможно в простой Ubuntu такого нет. На англоязычных интернет-ресурсах часто советуют следующий код, т.к. у них нет трудностей с раскладками:
Пример, когда нужно просто эмулировать нажатие кнопок клавиатуры:
Эмуляция нажатия комбинации CTRL + левая кнопка мыши, чтобы по дополнительной кнопке 10 мыши в веб-браузере открывать вкладку в новом окне:
Следующей командой можно посмотреть справку, где приводятся коды других функциональных кнопок клавиатуры, которые могут пригодиться для конфига:
Ещё можно узнать коды вообще любых кнопок так:
А такая команда позволяет протестировать сделанные в файле .xbindkeysrc настройки:
Если всё готово и вы хотели бы начать пользоваться дополнительными кнопками мыши, надо просто запустить ту же самую программу:
Ну и соответственно, чтобы оно всегда работало надо добавить эту программу в автозапуск. В Elementary OS заходим в «Приложения» → «Параметры системы» → «Приложения» → Вкладка «Автозапуск» → В нижнем левом углу есть кнопка «Добавить программу в автозапуск. ». Здесь просто вписываем «xbindkeys»:
Всё, можно пользоваться. Согласитесь, ничего сложного.
Я когда с этим разбирался, то у меня был косяк в том, что нужные мне дополнительные кнопки мыши не распознавались xev. Вот именно те две кнопки, которые я и хотел настроить. С остальными сразу всё было без проблем.
В теории, если такая ситуация, то это означает, что используемый вами драйвер мышки не обеспечивает работу всех её кнопок. Где брать другой драйвер под Linux — не понятно. Производители железа редко когда заморачиваются и делают для своих устройств драйверы под эту операционную систему.
Но благо, эта ситуация крайне редкая, обычно, как я понял из информации в интернете, кнопки мышек распознаются сразу без проблем. В моём случае это была аппаратная проблема. Две нужные мне кнопки тупо вообще не работали. Видать, слишком давно ими не пользовался. Разобрал грызуна, почистил, покликал, — заработали. После этого повесил на них нужные действия за считанные минуты.
Определить, что кнопки вообще не работают помог другой компьютер с Windows. А так, наверное, еще долго бы ломал голову, почему нифига не работает и что с этим делать.
Ubuntu 18.04. Настройка дополнительных кнопок мыши.
Здравствуйте.
Дано:
— Ubuntu 18.04 — 1 шт.
— Мышь Deathadder 2014 — 1 шт.
— Дополнительные кнопки на мыши — 2 шт.
— Дополнительные кнопки на мыши работают в браузере стандартно
Хочу:
— Перенастроить на доп-кнопки скроллинг экрана в firefox.
Знаю:
— Что надо использовать xbindkeys + xautomation (вроде бы)
— Номера кнопок на мыши, которые надо биндить (xev | grep button)
Не знаю:
— Как отменить стандартные бинды на эти кнопки.
— Какая команда (или название кнопки со стрелками) соответсвует скроллингу страницы в браузере
— Как здесь в тексте использовать табуляцию, чтобы делать нормальное смещение текста
Помогииитеее.
Easystroke поставь , там можно настроить на кнопки мыши действия или команды, кнопки. А для скролинга мышью есть расширение Scrollbar Anywhere
спасибо, посмотрю. На всякий случай — мне нужен скроллинг БОКОВЫМИ кнопками мыши. На них по-умолчанию стоит что-то вроде undo/redo, если я не путаю. Но в любом случае — посмотрю, что Вы посоветовали, спасибо!
Разве когда ты переназначаешь на кнопку другое значение, старое не отменяется?
- Какая команда (или название кнопки со стрелками) соответсвует скроллингу страницы в браузере
Тебе нужен скроллинг как колесиком? Тогда можно назначить на нужные кнопки действия, совершаемые по колесику. Вот тут есть статья про три разные способа: https://zepete.livejournal.com/151204.html Почитай, может поможет.
- Как здесь в тексте использовать табуляцию, чтобы делать нормальное смещение текста
Не знаю зачем, но описание разметки здесь https://www.linux.org.ru/help/markdown.md https://www.linux.org.ru/help/lorcode.md Тип разметки выбирается в профиле или в форме ответа.
Тебе нужен скроллинг как колесиком? Тогда можно назначить на нужные кнопки действия, совершаемые по колесику. Вот тут есть статья про три разные способа: https://zepete.livejournal.com/151204.html Почитай, может поможет.
Вот это походу должно помочь.
По-идее, в моем случае должно быть что-то типа:
Linux настройка дополнительных кнопок мыши
Автор — очень сложно и в корне неверный подход.
1) Уже предложили xbindkeys — это первый вариант если у кнопок есть номера. А обычно так и есть, даже у наклона колёсика есть свой номер кнопки.
2) Настройки компиза. Compiz прекрасно понимает нажатие любых кнопок мыши и на них можно всё что угодно повесить. Compiz Config Settings Manager — команды — комбинации клавиш — прокручиваем вниз, дальше я надеюсь можно разобраться. Комбинации можно городить даже вместе с управляющими клавишами клавиатуры.
Минус этого способа очевиден — не все используют Compiz.
3) Есть третий вариант, который я считаю самым правильным и надёжным, не смотря на то, что что-то неправильное в нём всё же есть.
Минусами предыдущих способов было то, что на кнопки приходилось вешать определённые команды, выполнявшие определённые программы. Когда как хотелось чтобы нажатие кнопки было нативным, отсылало нужный код, который бы понимала рабочая оболочка и все программы внутри неё. Допустим на нажатие кнопки реагировал регулятор громкости системы, а на другое нажатие мультимедиая-кнопок реагировали все плееры.
Дело в том, что соответствия клавиш сканкодам ставит udev, у него есть для этого специальный каталог таких соответствий: /lib/udev/keymaps Но там перечислены далеко не все модели устройств. Мы можем исправить это для нашего устройства:
1) По аналогии с имеющимися файлами, создаём новый, например logitech-revolution-mouse
2) Находим скан-коды кнопок с помощью
sudo evtest /dev/input/eventX
где X — номер того event’а, на котором висит мышь. Вместо evtest можно попробовать
sudo /lib/udev/keymap -i input/eventX
работает только в виртуальном терминале (ctrl + alt + f1), не требует установки дополнительных приложений.
3) Заполняем файл /lib/udev/keymaps/logitech-revolution-mouse , вот как он выглядит у меня:
Названия клавиш содержатся в файле /usr/include/linux/input.h можно выбирать практически любое (только префикс видимо нужно убирать).
В том числе, можно на наклон колёсика повесить какие-нибудь левые коды, а потом в своём любимом рабочем окружении повесить на эту полноценную КЛАВИШУ (а не номер кнопки мыши!) любую команду.
4) Нужно создать ещё правило udev для мыши. udev должен знать какому устройству какой файл должен соответствовать. Создаём файл /etc/udev/rules.d/96-kemap.rules и вписываем туда что-то вроде:
SUBSYSTEMS==»usb», ENV
# The following are external USB keyboards
ENV
Посмотреть примеры можно в файле: /lib/udev/rules.d/95-keymap.rules
lsusb вам в помощь для определения VENDOR_ID и MODEL_ID
Всё, после этого по-моему достаточно вынуть/вставить устройство и правило сработает. Всё вышенаписанное про udev справедливо для клавиатур, причём даже в большей мере чем для мышей.
Кажется довольно громоздко, но это самый лучший способ заставить работать клавиши мышей/клавиатур. Я много лет пробовал разные способы, собаку на этом съел, и давно остановился на этом способе.
Чтение и запись в hidraw насколько я знаю нужно в исключительных ситуациях, при настройке клавиатуры/мыши, получения информации с них, отрисовка на экране клавиатуры, и, как я понимаю, в случае клавиатуры G15 для её спец. клавиш.