Configure botões extras do mouse em Wayland

10

Eu uso um mouse de 10 botões (Logitech M705). No X11, consegui configurar um dos botões extras para se comportar como um segundo clique no meio, modificando os arquivos etc/X11/xorg.conf.d.

Sob Wayland, isso não funciona mais. Minha pesquisa mostra que eu preciso fazer algo libinput. Eu pensei que este seria um problema comum, mas não consigo encontrar uma resposta em qualquer lugar.

Alguém pode explicar como remapear os botões do mouse ou explicar por que isso não pode ser feito?

Kyle
fonte
Estou usando o Wayland por um tempo e não consegui encontrar como remapear os botões até agora.
Paulodiovani

Respostas:

6

Remapear os botões se você estiver executando o Wayland pode ser feito assim:

  1. Execute xev | grep buttonpara registrar os eventos de clique do mouse e obter o número do evento clicando fe na janela. No meu caso, o botão do meio é:

    state 0x10, button 2, same_screen YES
    

    e eu quero mapeá-lo:

    state 0x10, button 13, same_screen YES
    
  2. Em seguida, execute xinput --liste encontre o seu dispositivo apontador, o meu é:

    Logitech Performance MX  id=9  [slave pointer  (2)]
    
  3. xinput get-button-map 9 retorna:

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

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

NOTA: substitua o número 9pelo número retornado porid=

E se o comportamento dessa chave for definido, seu evento será mapeado. Caso contrário, esse é um problema um pouco diferente. No Wayland TBH, não encontrei uma maneira de executar um comando em um evento (o que é bastante fácil com o Xorg xbindkeys) e, portanto, personalizar totalmente o comportamento do evento de chave e mouse. Acredito que o Wayland está tentando ser mais seguro e desabilita esse comportamento .

De qualquer forma, você ainda tem a oportunidade de mudar para o Xorg facilmente e aproveitar a funcionalidade.

CermakM
fonte
Trabalhou para mim, mas como você faz a mudança permanente? Parece que eu tenho que correr xinput set-button-mappara cada nova sessão de Wayland ...
mgalgs
1
Sim, você precisa executá-lo sempre. Para automatizar isso, você pode colocar isso em um script e criar um arquivo de serviço ou em uma pasta init executada na inicialização correspondente à sua distribuição (no sistema operacional baseado em systemd que seria /etc/rc.d/init .d /)
CermakM
Você pode colocar uma opção em arquivos xconf: Option "ButtonMapping" "1 2 3 ..."
le hollandais volant
Isso só muda o controlador de entrada xorg, não todas as aplicações que a composição uso nativamente Wayland, como Gnome Shell ou Nautilus
Ray Foss
3

Criei um pequeno script de shell + arquivo de unidade systemd que chamo de wayland-mouse-mapper .

trecho mathportillo / wayland-mouse-mapper

Um pequeno script para mapear os botões do mouse para pressionar as teclas no Wayland.

Fiz para mim usar os botões extras do mouse para coisas úteis. Ele foi testado e funciona com o Logitech MX Master 2S no Fedora 27 usando o Gnome, e também no meu antigo Logitech Performance MX. Provavelmente funciona em qualquer mouse Wayland e Any Logitech (ou qualquer mouse se você editar mapeamentos) porque nenhum outro método (xdotools, xbindkeys etc.) parecia funcionar.

Ele funciona lendo os eventos de depuração da libinput e acionando os principais eventos usando evemu, dependendo do botão reconhecido do dispositivo reconhecido.

Botões

Essas são apenas as configurações padrão. Você pode personalizá-las no início do script mousemapper.sh.

  • Avançar: Mover para o espaço de trabalho acima ( Super+ Page up)
  • Voltar: Mover para a área de trabalho abaixo ( Super+ Page down)
Matheus Portillo
fonte
0

Tente modificar as regras do hwdb udev. Isso registra os botões do mouse como uma tecla do teclado, como o Launch8 / F16, e desativa sua funcionalidade em todos os programas, wayland ou outros.

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

evdev:input:*
 KEYBOARD_KEY_90004=key_f16
 KEYBOARD_KEY_90005=key_f17

como root systemd-hwdb update; udevadm triggere desconecte o mouse e conecte-o novamente.

Verificação adicional de integridade: sudo udevadm info /dev/input/by-path/*-usb-*-mouse | grep -A3 -P3 KEYBOARD_KEYou consulte-a como tal, systemd-hwdb query "evdev:input:v046dp406a*consulte a fonte para obter detalhes sobre como extrair o ID.

Fonte: https://yulistic.gitlab.io/2017/12/linux-keymapping-with-udev-hwdb/

Ray Foss
fonte