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
Дмитрий Корнев
Я долго не знал, как подступиться к настройке дополнительных кнопок мыши в 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 настройки:
Если всё готово и вы хотели бы начать пользоваться дополнительными кнопками мыши, надо просто запустить ту же самую программу:
Ну и соответственно, чтобы оно всегда работало надо добавить эту программу в автозапуск.
В Ubuntu 20.04 есть специальная программа «Автоматически запускаемые приложения». Скорее всего там xbindkeys уже будет, тогда ничего делать не нужно.
В Elementary OS заходим в «Приложения» → «Параметры системы» → «Приложения» → Вкладка «Автозапуск» → В нижнем левом углу есть кнопка «Добавить программу в автозапуск. ». Здесь просто вписываем «xbindkeys»:
Всё, можно пользоваться. Согласитесь, ничего сложного.
Я когда с этим разбирался, то у меня был косяк в том, что нужные мне дополнительные кнопки мыши не распознавались xev. Вот именно те две кнопки, которые я и хотел настроить. С остальными сразу всё было без проблем.
В теории, если такая ситуация, то это означает, что используемый вами драйвер мышки не обеспечивает работу всех её кнопок. Где брать другой драйвер под Linux — не понятно. Производители железа редко когда заморачиваются и делают для своих устройств драйверы под эту операционную систему.
Но благо, эта ситуация крайне редкая, обычно, как я понял из информации в интернете, кнопки мышек распознаются сразу без проблем. В моём случае это была аппаратная проблема. Две нужные мне кнопки тупо вообще не работали. Видать, слишком давно ими не пользовался. Разобрал грызуна, почистил, покликал, — заработали. После этого повесил на них нужные действия за считанные минуты.
Определить, что кнопки вообще не работают помог другой компьютер с Windows. А так, наверное, еще долго бы ломал голову, почему нифига не работает и что с этим делать.
Источник
Переназначение кнопок мыши в linux. — Мысли злого плебея — ЖЖ
29 июл 2017
10:07 pm — Переназначение кнопок мыши в linux.
В windows такой фокус не предусмотрен. Там это делается сторонними программами, например X-Mouse Button Control, которые реализуют фильтр сообщений от мыши.
В Linux есть три способа для этого:
-внешний фильтр xbindkeys;
-переназначения порядка кнопок в xmodmap;
-переназначение порядка кнопок в xinput.
В linux кнопки мыши идут под номерами от 1 до 9 или 32, в источниках по разному пишут: судя по выхлопу xkbcomp их 9, xmodmap пишет про 20, а в документации evdev пишут про 32.
Их назначение.
Номер кнопки | Положение кнопки на мыше logitech | Назначение |
1 | левая кнопка | Ввод |
2 | нажатие на колесико прокрутки | linux ничего не делает |
3 | правая кнопка | контекстное меню |
4 | прокрутка колесика от себя | смещение экрана в направлении Z+(вертикальной плоскости) |
5 | прокрутка колесика на себя | смещение экрана в направлении Z-(вертикальной плоскости) |
6 | сдвиг колесика прокрутки влево | смещение экрана в направлении X- (горизонтальной плоскости) |
7 | сдвиг колесика прокрутки вправо | смещение экрана в направлении X+ (горизонтальной плоскости) |
8 | ближняя кнопка для большого пальца | назад |
9 | дальняя кнопка для большого пальца | вперед |
Какой номер имеет каждая физическая кнопка мыши определяется командой: «xev | grep -A2 —line-buffered ‘^ButtonPress’ | sed -nE ‘/button /s/^.*(button[[:space:]]+[[:digit:]]+).* $/\1/ p’«.
Для переопределения кнопок мыши может понадобиться определение ее имени.
Для получения имени мыши весящей на отдельном гнезде, необходимо выполнить команду «grep -E «Name=|Handlers» /proc/bus/input/devices | grep -EB1 ‘Handlers.*mouse’ | sed -nE ‘/Name=/,/Handlers=.*mouse/ ‘«.
Если в гнезде висит мышь с клавиатурой, например комплект из беспроводной мыши и клавиатуры, то надо выполнить команду «grep -E «Name=|Handlers» /proc/bus/input/devices | grep -EB1 ‘Handlers.*mouse’ | grep -EB1 ‘Handlers.*kbd’ | sed -nE ‘s/^.*Name=[«]([^»]+)[«].*$/\1/p’«.
Вывод имен мышей сидящих в отдельном гнезде или с клавиатурой:»grep -E «Name=|Handlers» /proc/bus/input/devices | grep -EB1 ‘Handlers.*mouse’ | sed -nE ‘s/^.*Name=[«]([^»]+)[«].*$/\1/p’«.
Для вывода имени мыши содержащей какую-то последовательность символов, надо предыдущие команды дополнить окончанием похожим на » | grep ‘Logitech M'»,где «Logitech M» может быть любой требуемой строкой.
Тогда получится что-то такое: «grep -E «Name=|Handlers» /proc/bus/input/devices | grep -EB1 ‘Handlers.*mouse’ | sed -nE ‘/Name=/,/Handlers=.*mouse/ ‘ | grep «Logitech M»«.
1. Переназначение при помощи xmodmap.
При помощи xmodmap можно только изменить номерацию кнопок мыши, причеем только у всех мышей сразу. Это самая удобная команда. Только linuxоиды ищуют трудный путь, поэтому они предпологают в ближайшее время эту лазейку заблокировать. Например, что бы 6 и 7 кнопки действовали как вперед/назад надо выполнить такую команду: ‘xmodmap -e «pointer = 1 2 3 4 5 8 9 6 7″‘. Заменить левую кнопку с правой: ‘xmodmap -e «pointer = 3 2 1»‘. Заблокировать левую кнопку: ‘xmodmap -e «pointer = 0»‘. Заблокировать все кнопки: ‘xmodmap -e «pointer = 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0»‘. Разблокировать все кнопки: ‘xmodmap -e «pointer = default»‘. Изменить направление вращения колеса прокрутки: ‘xmodmap -e «pointer = 1 2 3 5 4»‘. Вывод текущего состояния: ‘xmodmap -pp‘. Из этих примеров видно, что позиционному положению числа в команде соответствует физический номер кнопки, а это число новое значение. Цифра 0 означает заблокированную кнопку. Единственно эта программа глючит при назначении нескольким кнопкам одного номера кнопки. Команда не требует root прав, поэтому возможно незаметно кому-нибудь заблокировать мышь:)
2. Переназначение при помощи xinput. Похожа на предыдущий случай, но переназначает кнопки у конкретной мыши.
Формат команды такой: «xinput -set-button-map «id мыши» 1 2 3 4 5 6 7 8 9. » — где «id мыши» получается из выхлопа команды xinput без параметров, а последующие цифры аналогичны используемым в команде xmodmap.Использовать просто число в качестве id мыши нельзя, так как после перезагрузки компьютера оно может быть другим. Поэтому надо использовать скрипты такого вида.
Например переназначение кнопок на колесике мыши logitech для перемещения вперед-назад в интернете: «xinput set-button-map «$(xinput | awk -F'[=]’ ‘/Logitech M/
Тоже самое, если неизвестен производитель мыши, но известно, что она одна в компьютере и висит на одном гнезде без клваиатуры: «xinput set-button-map «$(xinput | sed -nE «/$(grep -E «Name=|Handlers» /proc/bus/input/devices | grep -EB1 ‘Handlers.*mouse’ | sed -nE ‘/Name=/,/Handlers=.*mouse/ ‘)/s/ ^.*id=([[:digit:]]+).*$/\1/p»)» 1 2 3 4 5 8 9 6 7«.
Если неизвестен производитель мыши, но изввестно, что она висит в одном гнезде с клавиатурой:»xinput set-button-map «$(xinput | sed -nE «/$(grep -E «Name=|Handlers» /proc/bus/input/devices | grep -EB1 ‘Handlers.*mouse’ | grep -EB1 ‘Handlers.*kbd’ | sed -nE ‘s/^.*Name=[«]([^»]+)[«].*$/\1/p’)/s/ ^.*id=([[:digit:]]+)[[:space:]]+\[slave[ [:space:]]+pointer.*\]/\1/p»)» 1 2 3 4 5 8 9 6 7«.
3. Переназначение при помощи xbindkeys.
Это самый неудобный и медленный способ, так как требует файла снастройками и вызывает внешнюю команду, которая будет эмулировать нажатие другой кнопки. Зато он самый гибкий. При помощи него можно на кнопку мыши повесить любую программу.
Для его работы необходимо создать текстовый файл «
/.xbindkeysrc». Этот файл содержит пары строк. Первая строка в каждой паре обозначает выполняемую команду, а вторя — нажую кнопку. Кроме мыши они может обрабатывать нажатия на клавиатуру. То есть команда предназначена для создания горячих клавиш.
В linux существует две команды эмулирующие нажатия кнопок: xte и xvkbd. Можно использовать любую в качестве первой строки.
Во второй строке описываетсмя нажатая комбинация кнопок. Для мыши она выглядит так: «b: «.
В моем случае переназначения смещения колесика влево-вправо на вперед-назад, «.xbindkeysrc» может быть одним из трех нижепоказанных видов.
Использование xte для симуляции нажатия на 8 или 9 кнопку мыши.
# Back
«xte ‘mousedown 8’ ‘mouseup 8′»
b:6
# Forward
«xte ‘mousedown 9’ ‘mouseup 9′»
b:7
# Forward
«xte ‘keydown Alt_L’ ‘key Right’ ‘keyup Alt_L'»
b:7
Использование xvkbd для симуляции мультимедиа кнопок вперед-назад
# Back
«xvkbd -xsendevent -text «\[XF86Back]»
b:6
# Forward
«xvkbd -xsendevent -text «\[XF86Forward]»
b:7
После чего запустить xbindkeys.
Все три способа требуют после перезагрузки выполнить какую-то команду, поэтому необходимо создать ярлык (текстовый файл с расширением .desktop) в автозагрузке (папке «
Мой ярлык.
[Desktop Entry]
Type=Application
Exec=xmodmap -e «pointer = 1 2 3 4 5 8 9 6 7»
X-GNOME-Autostart-enabled=true
NoDisplay=true
Hidden=false
Name=»mouse button exchange»
Comment=»6->8 7->9 8->6 9->7″
X-GNOME-Autostart-Delay=0
Можно было бы такой, что бы никто не понял, при помощи xinput. Зато умный как утка.
[Desktop Entry]
Type=Application
Exec=xinput set-button-map «$(xinput | sed -nE «/$(grep -E «Name=|Handlers» /proc/bus/input/devices | grep -EB1 ‘Handlers.*mouse’ | sed -nE ‘/Name=/,/Handlers=.*mouse/ ‘)/s/ ^.*id=([[:digit:]]+).*$/\1/p»)» 1 2 3 4 5 8 9 6 7
X-GNOME-Autostart-enabled=true
NoDisplay=true
Hidden=false
Name=»mouse button exchange»
Comment=»6->8 7->9 8->6 9->7″
X-GNOME-Autostart-Delay=0
Самый простой для xbindkeys.
[Desktop Entry]
Type=Application
Exec=xbindkeys
X-GNOME-Autostart-enabled=true
NoDisplay=true
Hidden=false
Name=»mouse button exchange»
Comment=»6->8 7->9 8->6 9->7″
X-GNOME-Autostart-Delay=0
Источник