Configura i pulsanti extra del mouse in Wayland


10

Uso un mouse a 10 pulsanti (Logitech M705). Sotto X11, sono stato in grado di configurare uno dei pulsanti extra per comportarsi come un secondo clic centrale modificando i file in etc/X11/xorg.conf.d.

Sotto Wayland, questo non funziona più. La mia ricerca dimostra che devo fare qualcosa con libinput. Ho pensato che questo sarebbe stato un problema comune ma non riesco a trovare una risposta da nessuna parte.

Qualcuno può spiegare come rimappare i pulsanti del mouse o spiegare perché non può essere fatto?


Sto usando Wayland da un po 'e finora non sono riuscito a trovare come rimappare i pulsanti.
paulodiovani,

Risposte:


6

La rimappatura dei pulsanti se si esegue Wayland potrebbe essere eseguita in questo modo:

  1. Esegui xev | grep buttonper registrare gli eventi di clic del mouse e ottenere il numero dell'evento facendo clic sulla finestra. Nel mio caso, il pulsante centrale è:

    state 0x10, button 2, same_screen YES
    

    e voglio mapparlo su:

    state 0x10, button 13, same_screen YES
    
  2. Quindi esegui xinput --liste trova il tuo dispositivo puntatore, il mio è:

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

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

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

NOTA: sostituire il numero 9per il numero restituito daid=

E se viene definito il comportamento di quella chiave, il tuo evento viene mappato. In caso contrario, è un problema leggermente diverso. Sotto Wayland TBH non ho trovato il modo di eseguire un comando su un evento (che è abbastanza facile con quello di Xorg xbindkeys) e quindi personalizzare completamente il comportamento dell'evento chiave e del mouse. Credo che Wayland stia cercando di essere più sicuro e disabilita questo comportamento .

In ogni caso, hai ancora l'opportunità di passare a Xorg abbastanza facilmente e goderti la funzionalità.


Ha funzionato per me, ma come si rende permanente la modifica? Sembra che devo correre xinput set-button-mapper ogni nuova sessione di Wayland ...
mgalgs

1
Sì, devi eseguirlo ogni volta. Per automatizzare ciò, è possibile inserirlo in uno script e creare un file di servizio oppure inserirlo in una cartella init che viene eseguita all'avvio corrispondente alla propria distribuzione (sul sistema operativo basato su systemd che sarebbe /etc/rc.d/init .d /)
CermakM

Puoi mettere un'opzione nei file xconf: Option "ButtonMapping" "1 2 3 ..."
le hollandais volant,

Questo cambia solo il driver di input xorg, non tutte le applicazioni che usano nativamente la composizione wayland, come Gnome Shell o Nautilus
Ray Foss

3

Ho creato un piccolo script shell + file unità systemd che chiamo wayland-mouse-mapper .

estratto mathportillo / wayland-mouse-mapper

Un piccolo script per mappare i pulsanti del mouse sui tasti premuti su Wayland.

Ho creato per me stesso l'uso dei pulsanti extra del mouse per cose utili. È testato e funziona con Logitech MX Master 2S su Fedora 27 utilizzando Gnome e funziona anche sul mio vecchio Logitech Performance MX. Probabilmente funziona su qualsiasi mouse Wayland e qualsiasi Logitech (o qualsiasi mouse se si modificano i mapping) perché nessun altro metodo (xdotools, xbindkeys, ecc.) Sembra funzionare.

Funziona leggendo gli eventi di debug di libinput e attivando eventi chiave usando evemu a seconda del pulsante riconosciuto dal dispositivo riconosciuto.

pulsanti

Queste sono solo le impostazioni predefinite, puoi personalizzarle all'inizio dello script mousemapper.sh.

  • Avanti: sposta nell'area di lavoro sopra ( Super+ Page up)
  • Indietro: sposta nell'area di lavoro in basso ( Super+ Page down)

0

Prova a modificare le regole udev hwdb. Ciò registra i pulsanti del mouse come un tasto della tastiera come Launch8 / F16 e disabilita la loro funzionalità in tutti i programmi, wayland o altro.

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

evdev:input:*
 KEYBOARD_KEY_90004=key_f16
 KEYBOARD_KEY_90005=key_f17

quindi come root systemd-hwdb update; udevadm triggere scollegare il mouse, quindi ricollegarlo.

Controllo di integrità aggiuntivo: sudo udevadm info /dev/input/by-path/*-usb-*-mouse | grep -A3 -P3 KEYBOARD_KEYoppure esegui una query in quanto tale, systemd-hwdb query "evdev:input:v046dp406a*consulta la fonte per i dettagli su come estrarre l'id.

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

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.