Configure botones de mouse adicionales en Wayland

10

Yo uso un mouse de 10 botones (Logitech M705). Bajo X11, pude configurar uno de los botones adicionales para que se comportara como un segundo clic central modificando los archivos etc/X11/xorg.conf.d.

Bajo Wayland, esto ya no funciona. Mi investigación muestra que necesito hacer algo libinput. Pensé que este sería un problema común, pero no puedo encontrar una respuesta en ningún lado.

¿Alguien puede explicar cómo reasignar los botones del mouse o explicar por qué no se puede hacer?

Kyle
fuente
Estoy usando Wayland por un tiempo y no pude encontrar cómo reasignar botones hasta ahora.
paulodiovani

Respuestas:

6

La reasignación de botones si está ejecutando Wayland podría hacerse así:

  1. Ejecute xev | grep buttonpara registrar eventos de clic del mouse y obtenga el número del evento haciendo clic en la ventana. En mi caso, el botón central es:

    state 0x10, button 2, same_screen YES
    

    y quiero mapearlo en:

    state 0x10, button 13, same_screen YES
    
  2. Luego corre xinput --listy encuentra tu dispositivo puntero, el mío es:

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

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

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

NOTA: reemplace el número 9por el número devuelto porid=

Y si se define el comportamiento de esa clave, se asigna su evento. Si no es así, ese es un problema un poco diferente. Bajo Wayland TBH, no he encontrado una manera de ejecutar un comando en un evento (que es bastante fácil con Xorg xbindkeys) y, por lo tanto, personalizar completamente el comportamiento del evento de tecla y mouse. Creo que Wayland está tratando de ser más seguro y deshabilita este comportamiento .

En cualquier caso, todavía tiene la oportunidad de cambiar a Xorg con bastante facilidad y disfrutar de la funcionalidad.

CermakM
fuente
A mí me funcionó, pero ¿cómo haces que el cambio sea permanente? Parece que tengo que correr xinput set-button-mappara cada nueva sesión de Wayland ...
mgalgs
1
Sí, debes ejecutarlo todo el tiempo. Para automatizar esto, puede poner esto en un script y crear un archivo de servicio, o ponerlo en una carpeta de inicio que se ejecuta al inicio correspondiente a su distribución (en el sistema operativo basado en systemd que sería /etc/rc.d/init .d /)
CermakM
Puede poner una opción en los archivos xconf: Option "ButtonMapping" "1 2 3 ..."
le hollandais volant
Esto solo cambia el controlador de entrada xorg, no cualquier aplicación que use de forma nativa composición wayland, como Gnome Shell o Nautilus
Ray Foss
3

Hice un pequeño script de shell + archivo de unidad systemd que llamo wayland-mouse-mapper .

extracto de mathportillo / wayland-mouse-mapper

Un pequeño script para asignar botones del mouse a las pulsaciones de teclas en Wayland.

Me propuse usar los botones adicionales del mouse para cosas útiles. Ha sido probado y funciona con Logitech MX Master 2S en Fedora 27 usando Gnome, y también funciona en mi antiguo Logitech Performance MX. Probablemente funciona en cualquier mouse Wayland y Any Logitech (o cualquier mouse si edita asignaciones) porque ningún otro método (xdotools, xbindkeys, etc.) parecía funcionar.

Funciona leyendo los eventos de depuración de libinput y activando eventos clave usando evemu dependiendo del botón reconocido del dispositivo reconocido.

Botones

Estas son solo las configuraciones predeterminadas, puede personalizarlas al comienzo del script mousemapper.sh.

  • Adelante: mover al espacio de trabajo arriba ( Super+ Page up)
  • Atrás: mover al espacio de trabajo a continuación ( Super+ Page down)
Matheus Portillo
fuente
0

Intente modificar las reglas de hwdb udev. Esto registra los botones del mouse como una tecla del teclado como Launch8 / F16 y desactiva su funcionalidad en todos los programas, wayland u otros.

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

evdev:input:*
 KEYBOARD_KEY_90004=key_f16
 KEYBOARD_KEY_90005=key_f17

luego como root systemd-hwdb update; udevadm triggery desconecte el mouse, luego vuelva a enchufarlo.

Comprobación de cordura adicional: sudo udevadm info /dev/input/by-path/*-usb-*-mouse | grep -A3 -P3 KEYBOARD_KEYo consulte como tal, systemd-hwdb query "evdev:input:v046dp406a*consulte la fuente para obtener detalles sobre cómo extraer la identificación.

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

Ray Foss
fuente