Benutzer-Werkzeuge

Webseiten-Werkzeuge


xinput
  • Tool zum Konfigurieren von Eingabegeräten unter X
    • hauptsächlich relevant für Touchscreens, Mäuse, Trackpoints, Trackballs, Touchpads
  • u.a. kann man darüber folgendes konfigurieren
    • Sensitivität
    • Geschwindigkeit
    • Belegung von Buttons
    • Scrollen per Mehrfinger-Geste
    • Scrollen per berühren des Randes des Touchpads
    • Scrollen bei klick eines Buttons und bewegens der Maus/Trackballs

Anzeigen der Devices

  • die meisten Befehle benötigen eine Angabe für welches Device der Befehl ausgeführt werden soll
    • in der Regel Name oder Device ID

xinput

Hinweis: Einige Devices können 2 mal gelistet sein:

 Virtual core pointer                    	id=2	[master pointer  (3)]
⎜   ↳ ELECOM TrackBall Mouse HUGE TrackBall   	id=13	[slave  pointer  (2)]
⎜   ↳ SynPS/2 Synaptics TouchPad              	id=17	[slave  pointer  (2)]
⎣ Virtual core keyboard                   	id=3	[master keyboard (2)]
    ↳ ELECOM TrackBall Mouse HUGE TrackBall   	id=20	[slave  keyboard (3)]

Hier taucht „ELECOM TrackBall Mouse HUGE TrackBall“ 2 mal auf.
Die ID existiert immer nur für ein Device, der Name kann aber mehrfach auftreten.
Bei Nutzung des Namens muss ggf. dann „pointer:“ oder „keyboard:“ davor geschrieben werden (Wichtig: Ohne Leerzeichen zwischen Namen und Prefix).

Hinweis: Die IDs sind temporär und können sich nach dem Neustart von X oder dem System oder dem Ein-und Ausstecken des Devices oder bei Nutzung eines Tastaturumschalters ändern.

Listen der gesetzten Optionen für ein Device

  • man braucht die ID oder den Namen (siehe vorhehrgehende Sektion)


 xinput --list-props 11
 Device 'ELECOM TrackBall Mouse HUGE TrackBall':
	Device Enabled (143):	1
	Coordinate Transformation Matrix (145):	1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000
	libinput Natural Scrolling Enabled (286):	0
	libinput Natural Scrolling Enabled Default (287):	0
	libinput Scroll Methods Available (288):	0, 0, 1
	libinput Scroll Method Enabled (289):	0, 0, 1
	libinput Scroll Method Enabled Default (290):	0, 0, 0
	libinput Button Scrolling Button (291):	9
	libinput Button Scrolling Button Default (292):	2
	libinput Middle Emulation Enabled (293):	1
        libinput Middle Emulation Enabled Default (294):        0
        libinput Rotation Angle (295):  0.000000
        libinput Rotation Angle Default (296):  0.000000
        libinput Accel Speed (297):     0.121739
        libinput Accel Speed Default (298):     0.000000
        libinput Accel Profiles Available (299):        1, 1
        libinput Accel Profile Enabled (300):   1, 0
        libinput Accel Profile Enabled Default (301):   1, 0
        libinput Left Handed Enabled (302):     0
        libinput Left Handed Enabled Default (303):     0
        libinput Send Events Modes Available (267):     1, 0
        libinput Send Events Mode Enabled (268):        0, 0
        libinput Send Events Mode Enabled Default (269):        0, 0
        Device Node (270):      "/dev/input/event7"
        Device Product ID (271):        1390, 269
        libinput Drag Lock Buttons (304):       <no items>
        libinput Horizontal Scroll Enabled (305):       1

Ermitteln von Button-Nummern

Setzen von Optionen für ein Device

  • vermutlich sieht man alle möglichen Optionen für ein Device über xinput list-props
  • ansonsten kann man auch in man libinput unter „Supported Properties“ schauen
xinput --set-prop <Device-Name (in "") or ID> "Propertie to be set" <Value>

Beispiel:

xinput --set-prop "pointer:ELECOM TrackBall Mouse HUGE TrackBall"  "libinput Button Scrolling Button" 9
xinput --set-prop "pointer:ELECOM TrackBall Mouse HUGE TrackBall" "libinput Scroll Method Enabled" 0, 0, 1

Obiges Beispiel nutzt den Device-Namen zum addressieren des Devices. Da der Name einmal von einem virtuellen Keyboard und einmal von einem Pointer verwendet wird muss man pointer: vor den Namen schreiben.

Der erste Befehl definiert den Button 9 als „Scroll Button“ - das drücken und gleichzeitige Bewegen des Trackballs (oder Maus) wird als Scrollen gewertet.
Der zweite Befehl aktiviert das Scrollen per Tastendruck und bewegen des Eingabegerätes.

Hinweis: Bei Werten mit Komma, muss nach dem Komma zwingend ein Leerzeichen kommen!

Hinweis:: Die Einstellungen sind temporär - bis X oder das System neugestartet wird, das Device herausgezogen und wieder eingesteckt wird oder per Tastaturumschalter zwischen Systemen gewechselt wird

Persistent machen der Einstellungen

  • es gibt mehrere Wege
  • über Startscripte xinput aufzurufen (oder über Autostart des Desktop-Environments)
    • ist der einfachste
    • aber beim abziehen und wieder anstecken oder späterem anstecken wird das Device nicht konfiguriert mit den Einstellungen

Im folgenden der Weg über eine xorg.conf bzw. eine Datei unter /etc/X11/xorg.conf.d:

  • es können nicht die Namen der Einstellungen genommen werden die in xinput genutzt werden
    • man muss sich die Einstellung aus „man xorg.conf“ raussuchen - Sektion „InputDevice“
    • oder (wenn es eine Option von libinput ist) aus „man libinput“ Sektion „Configuration Details“
      • die Optionen heißen ähnlich, aber leicht anders als in xinput

Eine Datei /etc/X11/xorg.conf.d/99-libinput.conf (das Verzeichnich xorg.conf.d muss ggf. angelegt werden, der Dateiname ist egal, muss auf .conf enden) könnte so aussehen:

Section "InputClass"
    Identifier  "ElcomHuge"
    MatchProduct    "ELECOM TrackBall Mouse HUGE TrackBall"
    MatchIsPointer "true"
    Driver "libinput" 
    Option  "ScrollMethod" "button" 
    Option  "ScrollButton" "9"
EndSection
  • Identifier ist ein frei wählbarer Name
  • MatchProduct gibt an für welches Produkt die Konfig gilt - kann ggf. weggelassen werden, dann für alle
    • der name ist der aus xinput
  • MatchIsPointer ist ggf. wichtig wenn man das Device in xinput zweimal hat (einmal als Keyboard und einmal als Pointer) um zu unterscheiden welches der beiden Devices man konfiguriert
  • Driver „libinput“ ist eventuell wichtig wenn sich die Einstellungen auf libinput beziehen
  • Option xyz sind wie oben beschrieben aus der man-Page von xorg.conf oder libinput
    • das Schema ist „Setting“ „Wert“

Beispiele

Scrollen per Taste + bewegen des Trackballs/der Maus

  • man kann ein Scrollrad emulieren
  • man drückt eine Taste an der Maus/dem Trackball und bewegt den Trackball oder die Maus horizontal - die Bewegung wird als das Bewegen eines Scrollrades interpretiert

<xsh bash> xinput –set-prop „pointer:ELECOM TrackBall Mouse HUGE TrackBall“ „libinput Button Scrolling Button“ 9 xinput –set-prop „pointer:ELECOM TrackBall Mouse HUGE TrackBall“ „libinput Scroll Method Enabled“ 0, 0, 1 </xsh>

Obiges Beispiel setzt Button 9 (zu ermitteln via xev) als Scroll-Button (Button der gedrückt werden muss damit die Bewegung als Scrollen erkannt wird) und aktiviert das Scrollen per Button + Bewegung im zweiten Schritt als (zusätzliche) Scroll-Methode.


Ein xorg.conf-File (/etc/X11/xorg.conf.d/99-libinput.conf) könnte so aussehen für obige Konfiguration:

Section "InputClass"
    Identifier  "ElcomHuge"
    MatchProduct    "ELECOM TrackBall Mouse HUGE TrackBall"
    MatchIsPointer "true"
    Driver "libinput" 
    Option  "ScrollMethod" "button" 
    Option  "ScrollButton" "9"
EndSection
xinput.txt · Zuletzt geändert: 2020/09/15 21:19 von root