Configurer des boutons de souris supplémentaires sous Wayland

10

J'utilise une souris à 10 boutons (Logitech M705). Sous X11, j'ai pu configurer l'un des boutons supplémentaires pour qu'il se comporte comme un deuxième clic du milieu en modifiant les fichiers dans etc/X11/xorg.conf.d.

Sous Wayland, cela ne fonctionne plus. Mes recherches montrent que je dois faire quelque chose avec libinput. Je pensais que ce serait un problème courant mais je ne trouve aucune réponse nulle part.

Quelqu'un peut-il expliquer comment remapper les boutons de la souris ou expliquer pourquoi cela ne peut pas être fait?

Kyle
la source
J'utilise Wayland depuis un moment et je n'ai pas trouvé de remappage des boutons jusqu'à présent.
paulodiovani

Réponses:

6

Le remappage des boutons si vous utilisez Wayland pourrait se faire comme ceci:

  1. Exécutez xev | grep buttonpour enregistrer les événements de clic de souris et obtenez le numéro de l'événement en cliquant sur dans la fenêtre. Dans mon cas, le bouton du milieu est:

    state 0x10, button 2, same_screen YES
    

    et je veux le mapper sur:

    state 0x10, button 13, same_screen YES
    
  2. Ensuite, exécutez xinput --listet trouvez votre périphérique de pointeur, le mien est:

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

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

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

REMARQUE: remplacez le numéro 9du numéro renvoyé parid=

Et si le comportement de cette clé est défini, votre événement est mappé. Si ce n'est pas le cas, c'est un problème un peu différent. Sous Wayland TBH, je n'ai pas trouvé de moyen d'exécuter une commande sur un événement (ce qui est assez facile avec Xorg xbindkeys) et donc de personnaliser entièrement le comportement de l'événement clé et souris. Je crois que Wayland essaie d'être plus sécurisé et désactive ce comportement .

Dans tous les cas, vous avez toujours la possibilité de passer à Xorg assez facilement et de profiter de la fonctionnalité.

CermakM
la source
J'ai travaillé pour moi, mais comment rendre le changement permanent? Il me semble que je dois courir xinput set-button-mappour chaque nouvelle session Wayland ...
mgalgs
1
Oui, vous devez l'exécuter à chaque fois. Pour automatiser cela, vous pouvez le mettre dans un script et créer un fichier de service, ou le mettre dans un dossier init qui est exécuté au démarrage correspondant à votre distribution (sur un système d'exploitation basé sur systemd qui serait /etc/rc.d/init .d /)
CermakM
Vous pouvez mettre une option dans les fichiers xconf: Option "ButtonMapping" "1 2 3 ..."
le hollandais volant
Cela ne change que le pilote d'entrée xorg, pas les applications qui utilisent nativement la composition wayland, comme Gnome Shell ou Nautilus
Ray Foss
3

J'ai fait un petit script shell + fichier d'unité systemd que j'appelle wayland-mouse-mapper .

extrait mathportillo / wayland-mouse-mapper

Un petit script pour mapper les boutons de la souris aux frappes sur Wayland.

Je me suis fait utiliser les boutons supplémentaires de ma souris pour des trucs utiles. Il est testé et fonctionne avec Logitech MX Master 2S sur Fedora 27 à l'aide de Gnome, et fonctionne également sur mon ancien Logitech Performance MX. Cela fonctionne probablement sur n'importe quelle souris Wayland et Any Logitech (ou n'importe quelle souris si vous modifiez des mappages) car aucune autre méthode (xdotools, xbindkeys, etc.) ne semblait fonctionner.

Il fonctionne en lisant à partir des événements de débogage libinput et en déclenchant des événements clés à l'aide d'evemu en fonction du bouton reconnu du périphérique reconnu.

Boutons

Ce ne sont que les paramètres par défaut, vous pouvez les personnaliser au début du script mousemapper.sh.

  • Vers l'avant: passer à l'espace de travail au-dessus ( Super+ Page up)
  • Retour: Déplacer vers l'espace de travail ci-dessous ( Super+ Page down)
Matheus Portillo
la source
0

Essayez de modifier les règles hwdb udev. Cela enregistre les boutons de la souris comme une touche de clavier telle que Launch8 / F16 et désactive leur fonctionnalité dans tous les programmes, wayland ou autre.

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

evdev:input:*
 KEYBOARD_KEY_90004=key_f16
 KEYBOARD_KEY_90005=key_f17

puis en tant que root systemd-hwdb update; udevadm triggeret débranchez la souris puis rebranchez-la.

Vérification de cohérence supplémentaire:, sudo udevadm info /dev/input/by-path/*-usb-*-mouse | grep -A3 -P3 KEYBOARD_KEYou interrogez-la en tant que telle, systemd-hwdb query "evdev:input:v046dp406a*consultez la source pour plus de détails sur l'extraction de l'ID.

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

Ray Foss
la source