Mouse-Buttons unter Linux neu belegen

Mo, 30. November 2020, Lioh Möller

Heutige Computermäuse verfügen häufig über eine Vielzahl von Buttons, zum Beispiel einen sogenannten Thumb-Button, welcher sich seitlich an der Maus befindet und mit dem Daumen gedrückt werden kann.

In diesem Beispiel wird erklärt, wie man einen Mouse-Button neu belegen kann. Zunächst muss man dafür den Identifier der Maus ermitteln. Dies geht am einfachsten mit dem Befehl:

xinput list

Eine Ausgabe sieht kann dabei wie folgt aussehen:

⎡ Virtual core pointer                          id=2    [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
⎜   ↳ Lenovo Ultraslim Plus Wireless Keyboard & Mouse   id=10   [slave  pointer  (2)]
⎜   ↳ Lenovo Ultraslim Plus Wireless Keyboard & Mouse Consumer Control  id=11
⎜   ↳ ASUS Laser GAMING MOUSE                   id=15   [slave  pointer  (2)]

In diesem Fall geht es um die ASUS Laser GAMING MOUSE.

Um welchen Button es sich handelt kann man, sofern man noch keine Neubelegung von diesem angelegt hat, mithilfe von xinput test ermitteln. Der Befehl erwartet den zuvor ermittelten Identifier als Parameter:

xinput test "ASUS Laser GAMING MOUSE"

Ähnlich wie bei der Anwendung xev wird dabei jede Aktion der Maus ausgegeben, daher kann es sinnvoll sein diese einzuschränken:

xinput test "ASUS Laser GAMING MOUSE"|grep button

Eine mögliche Ausgabe wäre:

button release 9

Daraufhin kann die aktuell konfigurierte Belegung ausgegeben werden:

xinput get-button-map "ASUS Laser GAMING MOUSE"

In diesem Falle wäre die Ausgabe:

1 2 3 4 5 6 7 8 9

Möchte man nun die mittlere Maustaste auf den zuvor ermittelten Button 9 legen, kann dies mit dem set-button-map Parameter erfolgen:

xinput set-button-map "ASUS Laser GAMING MOUSE" 1 2 3 4 5 6 7 8 2

Die Maustasten werden wie folgt hochgezählt: 1: links, 2: Mitte, 3: rechts.

Mit dem obigen Befehl wurde der Button 9 mit der Funktion der mittleren Maustaste belegt.

Da die Änderung nur temporär ist, kann bei Bedarf eine entsprechende Xorg-Konfiguration erstellt werden:

/etc/X11/xorg.conf.d/40-mouse.conf

Section "InputClass"
        Identifier "ASUS Laser Gaming Mouse"
        MatchProduct "ASUS Laser GAMING MOUSE"
        Driver "libinput"
        Option "ButtonMapping" "1 2 3 4 5 6 7 8 2"
EndSection

Im Bereich MatchProduct kann der zuvor ermittelte Identifier angegeben werden.

In diesem Beispiel wurde die mittlere Maustaste zusätzlich auf einen anderen Mouse-Button gelegt. Mittels Xbindkeys und xvkbd lassen sich allerdings auch Funktionen wie Vor- und Zurückblättern auf Maustasten legen.

~/.xbindkeysrc

# Mouse Buttons
"xvkbd -xsendevent -text "\[XF86Back]""
m:0x0 + b:8 
"xvkbd -xsendevent -text "\[XF86Forward]""
m:0x0 + b:9

In obigen Beispiel würden Button 8 mit Zurück- und Button 9 mit Vorwärtsblättern belegt. Dazu dürfte allerdings nicht wie zuvor beschrieben die Konfiguration für Button 9 umgemapped werden.