Как привязать кнопки мыши к клавишам?

У меня лазерная мышь Logitech MX400 с 5 кнопками + 4 для вертикальной / горизонтальной прокрутки. Мне бы хотелось, чтобы он был настроен таким образом, чтобы вместо горизонтальной прокрутки нажатие вправо на колесе прокрутки отправляло Ctrl + Tab , а слева - Ctrl + Shift + Tab , что позволит мне переключаться между вкладками в браузерах.

Кроме того, было бы неплохо, если бы я мог переназначить среднюю кнопку на одну из боковых, потому что действительно трудно нажать вниз.

Еще одним бонусом было бы, если бы я мог написать скрипт, который позволял бы мне определять, какие кнопки будут делать, что зависит от того, какое окно в данный момент активно.

Я пытался использовать xmodmap, но я мог только видеть, как переставить кнопки, а не посылать им сигналы клавиш.

Заранее спасибо.


Карта кнопок (с использованием xev):

Left        1
Middle      2
Right       3
ScrollUp    4
ScrollDown  5
ScrollLeft  6
ScrollRight 7
Backward    8
Forward     9
19
задан 23 October 2010 в 15:22

2 ответа

xbindkeys и xte могут помочь вам.

Например, мой файл .xbindkeysrc выглядит так:

# close the window under the mouse cursor
"xte 'mouseclick 1' && xte 'keydown Alt_L' 'key F4' 'keyup Alt_L'"
  b:8+Release

# double click
"xte 'mouseclick 1' 'mouseclick 1'"
  b:9
0
ответ дан 23 October 2010 в 15:22

Спасибо всем за решение. Вот более надежное / комбинированное руководство (сделано в Xubuntu 18.04).

  1. Открыть терминал (например, xterm / терминал / терминатор), стать пользователем root (sudo su -) или использовать sudo перед командой:

    apt install xbindkeys xautomation
    
  2. [ 1124] Проверьте отображение кнопок с помощью xev, для этого вам не нужно разрешение root, поэтому выйдите из корневого сеанса (с exit) или откройте другой терминал как пользователь.

    xev | grep button
    
  3. Появится небольшое окно. Вы должны переместить мышь в это окно и нажать кнопку, которую вы хотите переназначить. Пример вывода в терминале будет:

    state 0x0, button 8, same_screen YES
    

    Это вторая боковая кнопка на моей мыши, которую я хочу использовать как PAGE_DOWN.

    state 0x0, button 9, same_screen YES
    

    Это 1-я боковая кнопка (да, порядок обратный), которую я хочу использовать в качестве PAGE_UP.

  4. Когда у вас есть все кнопки, которые вы хотите переназначить, вы можете закрыть маленькое окно xev. Откройте ваш любимый редактор (например, gedit / vi / nano) и отредактируйте файл конфигурации.

    vi .xbindkeysrc
    
  5. Если у вас уже есть какой-то контент в файле, посмотрите, есть ли уже такая привязка (вряд ли, по умолчанию) и добавьте в конце.

    #Pagedown press
    "xte 'keydown Next'"
    b:8
    
    #Pagedown release
    "xte 'keyup Next'"
    b:8 + Release
    
    #Pagedup press
    "xte 'keydown Prior'"
    b:9
    
    #Pageup release
    "xte 'keyup Prior'"
    b:9 + Release
    

    Примечание: вам нужно две записи, одну для нажатия кнопки и одну для выпуска.

  6. Кнопки 8 + 9 будут отображены на клавиши «Далее» (то есть PAGE_DOWN) и «Приор» (PAGE_UP). Если вы хотите отобразить разные ключи, вы можете найти символ ключа с помощью xev.

    xev | grep keysym
    
  7. Как и раньше, запустите его в терминале, подведите мышь к маленькому окну и нажмите нужную клавишу.

    state 0x0, keycode 117 (keysym 0xff56, Next), same_screen YES,
    
  8. Сохранить и убить xbindings.

    killall xbindkeys ; xbindkeys
    

Теперь вы можете использовать дополнительные боковые кнопки мыши. Настройка будет загружена автоматически при следующей перезагрузке / входе в систему. Вам нужна только команда killall [...] сверху, если вы измените настройки.

0
ответ дан 23 October 2010 в 15:22

Другие вопросы по тегам:

Похожие вопросы: