Давно пользуюсь многокнопочной мышью Logitech MX1100. В Windows на отдельные её кнопки настроены различные сочетания клавиш, это позволяет сделать стандартное ПО SetPoint. К сожалению, Logitech не выпускает этой программы под Linux.
Есть много способов переназначить кнопки (сделать маппинг), но вот проблема: кнопки изменения dpi не распознаются в системе. Точнее, они только и могут, что менять dpi, а вот, например, программа xev
не выдаёт вообще ничего при их нажатии.
Решение нашлось тут: http://askubuntu.com/questions/117149/disabling-remapping-logitech-g400-mouse-dpi-buttons.
Мне повезло: скрипт оказался написанным именно под мою мышь (Logitech MX1100), хотя изначально вопрос задавался про другую (Logitech G400). Повезло вот почему. Хотя там и описано решение для прочих моделей, но на практике его применять трудно — нужно снимать дамп обмена данными с помощью WireShark и анализировать его. Но основная проблема в том, что для той же самой MX1100 мой дамп отличается от представленного, причём даже размером блоков. На счастье, всё сработало и так.
Короче говоря, что нужно сделать
- Скопировать отсюда скрипт в любой файл, например,
g_hack.c
. - Изменить его под своё устройство:
- Добавить последовательность байтов для своей модели (см. выше, где про WireShark; для меня этот пункт оказался необязательным). Подробности тут.
- Изменить значения определений:
#define VENDOR 0x046d /* для фирмы Logitech */
#define MOUSE_G5 0xc041 /* для мыши модели G5 */
#define MOUSE_MX1100 0xc526 /* для мыши модели NX1100 */и так далее. Айди производителя и модели мыши можно узнать с помощью команды
lsusb
. Она выведет все USB-устройства; выбираете строчку для вашего, в ней нужные данные разделены двоеточием, например:046d:c526
- Компилируем:
cc -o g_hack g_hack.c
- Запускаем от имени root:
sudo g_hack
Скорее всего, команда выдаст ошибку, в которой будет сказано, какие параметры мы не указали. Например:
Перезапускаемg_hack
с нужными параметрами (экспериментируйте):
- Проверяем, начали определяться кнопки или нет. Сделать это можно с помощью команды
xev
. С помощью этой же утилиты узнаём коды кнопок мыши. - Назначаем нужные команды на кнопки. Для этого есть масса утилит, включая графические. Я пользовался
btnx
, но вообще для Logitech советуютlomoco
. Сейчас пользуюсь связкойxbindkeys
иxte
(она же Xaut, она же в прошлом Xautomation). - По желанию автоматизируем запуск
g_hack
при старте системы.
1 | Левая кнопка |
2 | Средняя кнопка (нажатие колеса) |
3 | Правая кнопка |
4 | Колесо вперёд |
5 | Колесо назад |
6 | Колесо влево |
7 | Колесо вправо |
8 | Назад (боковая) |
9 | Вперёд (боковая) |
10 | Зум (боковая) |
13 | +DPI |
14 | -DPI |