Настройте дополнительные кнопки мыши под Wayland

10

Я использую 10-кнопочную мышь (Logitech M705). Под X11 я смог настроить одну из дополнительных кнопок для работы в качестве второго среднего щелчка, изменив файлы в etc/X11/xorg.conf.d.

Под Уэйлендом это больше не работает. Мои исследования показывают, что мне нужно что-то делать libinput. Я думал, что это будет распространенной проблемой, но нигде не могу найти ответ.

Может кто-нибудь объяснить, как переназначить кнопки мыши или объяснить, почему это нельзя сделать?

рукав моря
источник
Я пользуюсь Wayland некоторое время, и пока не могу найти, как переназначить кнопки.
paulodiovani

Ответы:

6

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

  1. Запустите xev | grep buttonдля регистрации событий щелчка мыши и получить номер события, например, нажав в окне. В моем случае средняя кнопка - это:

    state 0x10, button 2, same_screen YES
    

    и я хочу отобразить это на:

    state 0x10, button 13, same_screen YES
    
  2. Затем запустите xinput --listи найдите ваше указательное устройство, мое:

    Logitech Performance MX  id=9  [slave pointer  (2)]
    
  3. xinput get-button-map 9 возвращает:

    1 2 3 4 ... 20
    
  4. xinput set-button-map:

    $ xinput set-button-map 9  1 13 3 4 .. 12 2 14 .. 20
    

ПРИМЕЧАНИЕ: замените номер 9на номер, возвращенныйid=

И если поведение этого ключа определено, ваше событие отображается. Если это не так, это немного другая проблема. В Wayland TBH я не нашел способа выполнить команду для события (что довольно просто для Xorg xbindkeys) и, следовательно, полностью настроить поведение события «ключ» и «мышь». Я считаю, что Wayland пытается быть более безопасным и отключает это поведение. ,

В любом случае, у вас все еще есть возможность довольно легко переключиться на Xorg и наслаждаться функциональностью.

CermakM
источник
Работал на меня, но как вы делаете изменения постоянными? Кажется, я должен баллотироваться xinput set-button-mapна каждый новый сеанс в
Вейленде
1
Да, вам нужно запускать его каждый раз. Чтобы автоматизировать это, вы можете поместить это в сценарий и создать служебный файл или поместить его в папку init, запускаемую при запуске в соответствии с вашим дистрибутивом (в ОС на базе systemd это будет /etc/rc.d/init). .d /)
CermakM
Вы можете поместить опцию в файлы xconf: Option "ButtonMapping" "1 2 3 ..."
le hollandais volant
Это только меняет драйвер ввода xorg, но не любые приложения, которые изначально используют композицию Wayland, такие как Gnome Shell или Nautilus
Рэй Фосс
3

Я сделал небольшой скрипт shell + системный файл systemd, который я называю wayland-mouse-mapper .

выдержка mathportillo / wayland-mouse-mapper

Небольшой скрипт для отображения кнопок мыши на нажатия клавиш на Wayland.

Я сделал для себя, чтобы использовать мои дополнительные кнопки мыши для полезных вещей. Он протестирован и работает с Logitech MX Master 2S на Fedora 27 с использованием Gnome, а также работает на моем старом Logitech Performance MX. Вероятно, он работает на любой мыши Wayland и Any Logitech (или любой мыши, если вы редактируете сопоставления), поскольку никакой другой метод (xdotools, xbindkeys и т. Д.), Похоже, не работает.

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

Кнопки

Это просто настройки по умолчанию, вы можете настроить их в начале скрипта mousemapper.sh.

  • Вперед: перейти в рабочее пространство выше ( Super+ Page up)
  • Назад: перейти в рабочее пространство ниже ( Super+ Page down)
Матеус Портильо
источник
0

Попробуйте изменить правила hwdb udev. Это регистрирует кнопки мыши как клавиши клавиатуры, такие как Launch8 / F16, и отключает их функциональность во всех программах, Wayland или иным образом.

# /usr/lib/udev/hwdb.d/71-mouse-local.hwdb

evdev:input:*
 KEYBOARD_KEY_90004=key_f16
 KEYBOARD_KEY_90005=key_f17

затем от имени пользователя root systemd-hwdb update; udevadm triggerи отключите мышь, затем подключите его снова.

Дополнительная проверка работоспособности: sudo udevadm info /dev/input/by-path/*-usb-*-mouse | grep -A3 -P3 KEYBOARD_KEYили запросите его как таковой, systemd-hwdb query "evdev:input:v046dp406a*см. Источник для получения подробной информации о получении идентификатора.

Источник: https://yulistic.gitlab.io/2017/12/linux-keymapping-with-udev-hwdb/

Рэй Фосс
источник