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


19

У меня есть лазерная мышь 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

Ответы:


18

В xbindkeys и ХТА могут помочь вам.

Например, мой файл .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

Это фантастично и расширяемо, большое спасибо
Callum Rogers

1
Чтобы получить xte в Ubuntu 16.x, вам нужно установить xautomation из apt .
1111161171159459134

Это работает не так хорошо, как мне нравится, потому что это не работает так же, если я удерживаю кнопку нажатой. У моей старой мыши была кнопка, которая позволяет колесу прокрутки свободно вращаться, и это здорово, если я просто хочу, чтобы оно двигалось очень быстро и прокручивало длинный путь. Но у моего нового такого нет, поэтому я связал две кнопки сбоку (я думаю, они предназначены как кнопки назад / вперед для просмотра веб-страниц) с клавишами PgUp / PgDn. Но я должен нажимать их несколько раз, если я хочу продолжать прокручивать; Я не могу просто удержать их. Как заставить его удерживать клавишу, пока я держу кнопку?
flarn2006

5

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

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

    apt install xbindkeys xautomation
  2. Проверьте сопоставление кнопок с помощью 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 [...]команда сверху, если вы измените настройки.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.