* 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): libinput Horizontal Scroll Enabled (305): 1 ====== Ermitteln von Button-Nummern ======= * [[xev]] ====== 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 "Propertie to be set" 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 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 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