The Answer Girl

Aus LinuxUser 04/2000

The Answer Girl

Mehr als eine Maus

Dass der Computeralltag auch unter Linux des Öfteren für Überraschungen gut ist, ist eher eine Binsenweisheit: Immer wieder funktionieren Dinge nicht oder nicht so wie eigentlich angenommen. Das Answer-Girl im Linux-Magazin zeigt, wie man mit solchen Problemchen elegant fertig wird.

Wenn eine/r eine Reise tut…, dann kommt heutzutage oft ein Notebook ins Spiel. Diese netten Geräte haben lediglich einen Nachteil: Sie sind in der Regel mauslos und die Versuche eines Mausersatzes vielen Zeitgenossen eher ein Notbehelf. Wenn man dann endlich wieder an einem vernünftigen Schreibtisch sitzt, lässt sich meistens ein brauchbarer Nager auftreiben. Doch mit Einstöpseln alleine ist es leider nicht getan.

Plug&Search

Ein Versuch war es ja wert, aber soviel Plug&Play ist natürlich nichts für richtige Frauen, und so begeben wir uns dann doch besser wieder auf die Suche nach – ja, was eigentlich?

In grauer Vorzeit, so lässt sich mühsam dem Gedächtnis entlocken, haben wir mal eine Linux-Distribution installiert, und dabei mussten wir irgendwann auch die Maus konfigurieren. Alte Häsinnen, die das noch vor dem Aufkommen grafischer Konfigurationstools getan haben, sind jetzt fein raus. Damals verdankten wir die funktionierende Maus unter anderem nämlich einem Tool namens Xconfigurator, ganz archaisch XF86Config o.ä., auf jeden Fall einem, das irgendwie mit einem großen X begann.

Wenn jedoch etwas ein X als Anfangsbuchstaben hat, dann führt die Spur nahezu unweigerlich zu X, dem X-Window-System, und damit brauchen wir eigentlich nur noch die passende Konfigurationsdatei. Systemweite Konfigurationsdateien – so hat uns mal ein schlaues Linuxbuch verraten – haben ihren Platz normalerweise im Verzeichnis /etc.

Ein ls /etc/X und zweimal die Tab-Taste verraten in den gebräuchlichsten Shell-Programmen und bei den meisten Distributionen schon fast alles: Wer sich erinnert, dass das X-Window-System unter Linux normalerweise auf den komplizierten Namen XFree86 (oder so ähnlich) hört, dem wird die Identifizierung der Datei /etc/XF86Config (oft auch /etc/X11/XF86Config) als wichtigste Konfigurationsdatei für selbiges nicht schwer fallen.

Mit ein wenig Glück weist uns darin das Stichwort mouse (gefunden mit dem less-Suchbefehl /mouse) den Weg: /dev/mouse sieht ganz danach aus, als hätten wir gefunden, wo das Maus-Gerät (dev steht für “device”) konfiguriert wird. Leider sind nicht alle so glücklich: Ein ls -al /dev/mouse belehrt uns…

lrwxrwxrwx  1 root  root  10 Aug  8 18:18 /dev/mouse -> /dev/psaux

… dass es sich dabei lediglich um einen symbolischen Link auf /dev/psaux (oder auch einen seriellen Port) handelt, und niemand kann uns oder ein Konfigurationsprogramm daran hindern, die tatsächliche PS2-Schnittstelle statt des symbolträchtigen /dev/mouse in die /etc/XF86Config aufzunehmen.

man mag Dateien

Doch so schnell geben wir nicht klein bei. Dunkel erinnern wir uns daran, dass uns unser heißgeliebtes man nicht nur bei Kommandos zur Verfügung steht, sondern auch, wenn wir mehr über die Formate spezieller Konfigurationsdateien wissen wollen. Und so ahnen wir nach einem ersten Blick auf man XF86Config, dass uns dieses Übersichtswerk im Folgenden von hohem Nutzwert sein wird.

Auf der Suche nach dem Stichwort Mouse landen wir dort recht schnell bei einer Auflistung verschiedener Maus-Protokolle wie Auto, BusMouse, …, IntelliMouse, IMPS/2, Logitech, Microsoft, …, MMSeries, Mouseman, MouseManPlusPS/2, MouseSystems, NetMousePS/2, NetScrollPS/2, OSMouse, PS/2 etc. Oberhalb davon treffen wir auf den Hinweis, dass diese Dinge im Abschnitt (“section”) Pointer angegeben sein müssen. Und da sich ein Maus-ähnliches Gerät mit einiger Fantasie gut und gern als “Zeiger” umschreiben lässt, sind wir wenig verwundert, dass unser /dev/mouse-(o.ä.)-Schnittstelleneintrag tatsächlich in einer Section “Pointer” zu finden ist:

Section "Pointer"
    Protocol "PS/2"
    Device "/dev/mouse"
EndSection

Das wird dann wohl die Konfiguration unseres Touchpads sein… Anzunehmen, dass die Konfiguration einer eingestöpselten richtigen Maus ähnlich aussieht.

Sicher ist sicher

Wie ls -al /etc/XF86Config beweist…

-rw-r--r--   1 root     root         2981 Jan 18 18:27 /etc/XF86Config

… gehört die Datei der Benutzerin root (und in der Regel auch der in der folgenden Spalte aufgeführten, gleichnamigen Gruppe), die mit dem Rechtetripel rw- als einzige Lese-(r) und Schreibrechte (w) an diesem File besitzt. Allerdings gehören wir als “andere” immerhin zu den Leuten, die diese Datei auch lesen dürfen, und ehe wir später als root Dummheiten begehen, legen wir lieber jetzt, wo wir noch nichts zerstören können, eine Sicherheitskopie im Homeverzeichnis an:

cp /etc/XF86Config ~/XF86Config

Wir könnten die Sicherungsdatei auch im Verzeichnis /tmp unterbringen, aber wer weiß, ob wir nicht aus Versehen einmal booten werden? Viele Distributionen räumen dann nämlich das /tmp-Verzeichnis leer. Ganz auf Nummer sicher geht man selbstverständlich mit einer (geprüften!) Sicherungskopie auf einem externen Datenträger.

Was ist die Maus?

Da unsere Maus vermutlich ähnliche Einträge in der Pointer-Sektion der /etc/XF86Config bekommen wird, kommt jetzt die große Frage: Welches Protokoll spricht das Nagetier? Und an welcher Schnittstelle hängt es?

Vielleicht hilft uns ja irgendein nettes Tool aus der Falle… Wer z.B. unter Calderas OpenLinux spaßeshalber mouse und die Tabulatortaste eingibt, erspäht ein Programm, das wie geschaffen für unsere Zwecke scheint. Da keine Manpage vorhanden ist, versuchen wir als Nicht-root unser Glück mit

mouse-test --help

Indem wir eine übliche Hilfeoption wie –help anhängen, verringern wir die Wahrscheinlichkeit, dass das Programm gegen unseren Willen etwas Unbedachtes tut. Im besten Fall kommen wir so zu einer Hilfeseite, im weniger guten Fall – wie hier – zu einer Fehlermeldung, gleichzeitig aber auch zu einem erklärenden Text:

This program is designed to help you in detecting what type your
mouse is. Please follow the instructions of this program. If you're
bored before it is done, you can always press your 'Interrupt' key
(usually Ctrl-C)[...]

Genau, was wir brauchen also… Versuchen wir unser Glück mit mouse-test in einem X-Terminal und folgen den englischen Anweisungen zur Bewegung der Maus und zum Knöpfedrücken. (Sollten Sie aus irgendwelchen Gründen einmal den Fokus verlieren und ein wenig hilflos vor Ihrem X sitzen, bewahren Sie Ruhe: Strg+Alt und eine Funktionstaste von F1 bis F6 bringt Sie auf eine Textkonsole, in der Sie mit killall mouse-test oder als letzte Rettung killall -9 mouse-test dem Spuk hoffentlich ein Ende setzen können.)

Das Ergebnis: eine MS-Maus an der seriellen Schnittstelle /dev/ttyS0 alias COM1. Das entsprechende Protocol, so schließen wir aus der XF86Config-Man-Page, hieße demnach Microsoft.

Mausbestimmung

Auch ohne mouse-test ist das Herausfinden der ersten Versuchsbedingungen für die Maus nicht völlig unmöglich.

  • Stecker mit trapezförmigen Querschnitt gehören an serielle Schnittstellen:
  • meistens an /dev/ttyS0 als erste serielle Schnittstelle alias COM1 oder
  • an /dev/ttyS1 als zweite alias COM2 (häufig, wenn ein Modem COM1 belegt),
  • solche mit rundem Querschnitt steckt man hingegen an die PS/2-Schnittstelle /dev/psaux. Was das Protokoll betrifft, so probiert man am besten erstmal aus, ob die automatische Erkennung – Auto laut Man-Page – hält, was sie verspricht. Allerdings funktioniert das nur mit vergleichsweise neuen Modellen: Bei älteren oder Billigmäusen ist das Microsoft-Protokoll ein guter Ausgangspunkt.

Wer wagt, gewinnt

Nach diesen Sicherungsvorkehrungen bringt uns su – in Machtposition. Doch halt! Um die X-Konfiguration zu ändern, müssen wir zwar nicht neu booten, wohl aber den X-Server neu starten. Da zeugt es nicht gerade von geistiger Wachheit, wenn wir uns in einem X-Terminal mit Superuser-Rechten ausstatten… Daher loggt man sich besser auf einer Textkonsole als root ein.

Wer jetzt einen Editor wie

vi /etc/XF86Config

benutzt, mit dem er/sie sich unsicher fühlt, ist selbst schuld… (Die Escape-Taste und :q! retten Sie ohne Schaden aus dem Würgegriff meines Lieblingseditors…). Statt jetzt die alten Pointer-Einträge zu löschen (Wir brauchen sie ja ohnehin wieder in mauslosen Zeiten.), kopieren wir sie einmal und kommentieren eine Version davon mit dem Kommentarzeichen # am Zeilenanfang aus. Außerdem fügen wir das Ergebnis unseres bisherigen Erkundungsprozesses ein:

Section "Pointer"
    # Protocol "PS/2"
    # Device "/dev/mouse"
    Protocol "Microsoft"
    Device "/dev/ttyS0"
EndSection

Damit können wir schon mal den ersten Test fahren. Wer seinen X-Server von einer Textkonsole aus startet, schließt dazu einfach den Window-Manager bzw. die Desktop-Umgebung und gibt das startx-Kommando. Wer sich hingegen grafisch einloggt, sorgt nach dem Ausloggen mit einem Strg+Alt+Backspace dafür, dass der X-Server beendet und dank des grafischen Logins automatisch neu gestartet wird. Die selbe Funktion erreicht man im kdm, dem KDE-Login-Manager, durch das Anwählen von Shutdown…–>Restart X Server–>OK (resp. Beenden…–>X-Server neu starten–>OK).

An die Tasten – im kdm

Da es nicht unwahrscheinlich ist, dass die Maus bei den Konfigurationsexperimenten am X-Server zeitweilig gar nicht geht, ist es gut zu wissen, dass sich der kdm auch mit der Tastatur bedienen lässt:

  • Mit der Tabulatortaste wechselt man den Fokus von einem Button zum anderen sowie von einem Menüeintrag zum nächsten.
  • Die Leertaste aktiviert (“drückt”) einen Button oder einen Menüpunkt.
  • Die Escape-Taste schließt ein Menü, ohne eventuelle Auswahlen zu berücksichtigen. Hiermit lassen sich eventuell unbedachte Konfigurationsänderungen rückgängig machen, sofern sie noch nicht bestätigt wurden.

Jetzt ein wenig die Maus bewegen: Marschiert der Mauszeiger mit? Wunderbar. Rufen Linksklicks auf Icons und Menüpunkte Programme auf den Plan? Wie sieht’s mit dem Markieren mit der linken Maustaste aus? Wenn’s eine mittlere Maustaste gibt: Kann sie kopierten Text in ein X-Terminal “pasten”, sprich kopieren? Poppen die gewohnten Menüs mit der rechten Maustaste auf?

Wer hier beim ersten Versuch alles mit Ja beantworten kann, sollte sich glücklich schätzen: Es wird selten genug der Fall sein.

Probieren geht über Studieren

Wenn sich der Mauszeiger gar nicht bewegt, kann das sowohl an der falschen Schnittstelle, als auch am falschen Protokoll liegen. Bewegt er sich nur ruckartig, ist letzteres schuld. In diesem Fall beißen wir wohl in den sauren Apfel und probieren sukzessive alle sinnvoll erscheinenden Protokolle durch. Man-Page lesen hilft, um das eine oder andere von Vornherein auszuschließen.

So ist das Protokoll Logitech bestenfalls für sehr alte Logitech-Mäuse geeignet, neuere sprechen in der Regel Microsoft oder MouseMan. Wer eine serielle Maus hat, kann die PS2-Protokolle sowieso ausschließen, SysMouse interessiert nur unter FreeBSD, OSMouse unter OS/2 (ja, auch für Nicht-Unixe gibt es X-Server!) oder SCO Unix, und eine Logitech-Wheelmouse spricht normalerweise IMPS/2 (vgl. auch den Linux-User-Artikel “Schnurlos scrollen” in Heft 01/2000).

Immer wieder dasselbe Spiel: /etc/XF86Config editieren, X-Server neu starten und Maus ausprobieren. Wenn sich der Nager endlich vernünftig bewegt, gibt es höchstens noch Kleinigkeiten zu richten: Besitzer/innen von Zwei-Tasten-Mäusen können unter der Device-Zeile mit Buttons 2 noch die Knopfzahl eintragen und in einer vierten Zeile in der Pointer-Sektion mit Emulate3Buttons die Funktion der fehlenden mittleren Maustaste auf das artistisch anmutende Kunsttück eines gleichzeitigen Drucks der linken und rechten Maustaste legen.

Damit sollten gängige, nicht gerade uralte Einfachmäuse zur Mitarbeit zu bewegen sein. Für darüber hinaus gehende Bedürfnisse sei im Interesse der Artikellänge auf – was wohl? genau! – die Man-Page verwiesen. Das anschließende Trial&Error-Verfahren bleibt sich auch dabei gleich.

Nimm zwei!

Nun hat so ein Touchpad immerhin doch einige Vorteile. Spätestens, wenn man gedankenverloren über die Padfläche streicht und in eine Schimpfkanonade über die verdammte Maus ausbricht, die sich wieder mal nicht bewegt, wird es ärgerlich. Dann stellt sich die Frage: Kann ich nicht beides haben, Touchpad und Maus?

Der erste kühne Versuch, die auskommentierten Zeilen durch Entfernen der Anfangskreuze wieder zu beleben, schlägt (erwartungsgemäß?) fehl. Auch das Auslagern der entsprechenden Zeilen in eine zweite Section “Pointer” hat lediglich den Effekt, dass die Angaben der zweiten die der ersten “überschreiben”. Was also nun?

Stimmt, wir hätten das Thema vermutlich gar nicht angerissen, wenn es wirklich keine Lösung gäbe… Und so hilft wieder einmal – Sie ahnen es – die Man-Page weiter. Falls Sie am Anfang hartnäckig waren, sind Sie auf der Suche nach dem Stichwort Mouse vermutlich schon in Gefilden gelandet, die eine optionale XInput-Sektion beschreiben. In der lassen sich so nette Untersektionen wie die zur Konfiguration eines Joysticks oder Grafiktabletts einstellen. Oder eben auch eine Maus neben dem Touchpad. (Wenn Sie dazu nichts in Ihrer Man-Page finden, haben Sie vermutlich eine ewig-alte X-Version und müssen ohne Update ohnehin passen…)

Die wahrscheinlichste “Subsection” für unsere Mausgelüste heißt Mouse, und der erste beschreibende Man-Page-Satz dazu klärt uns zu unserer großen Erleichterung auf, dass er “dieselben Einträge wie die Pointer-Sektion unterstützt”. Wir brauchen also fast gar nichts mehr zu ändern!

Abgesehen davon, dass wir noch nicht genau wissen, wie denn nun das magische Wort für “Unterabschnitt” genau geschrieben wird… Vermutlich brauchen wir ähnliche Einleitungs- und Endezeilen wie bei Section, und wenn wir genauer hinschauen, liegt es nahe, dass die Schreibregel in /etc/XF86Config “Schreibe jedes Teilwort eines Stichpunkts groß, verzichte aber auf Leerzeichen” heißt. Damit müssten wir

SubSection "Mouse"[...]
EndSubSection

schreiben, und ein wenig Suchen in der Datei bestätigt unsere Vermutung: In der Grafikkartensektion finden sich eine ganze Reihe SubSections zum Orthografievergleich.

Setzen wir also unser Werk aus dem alten Pointer-Abschnitt zum Touchpad und der neuen XInput-Sektion mit dem Mouse-Unterabschnitt zusammen:

Section "Pointer"
    Protocol "PS/2"
    Device "/dev/mouse"
EndSection
Section "XInput"
SubSection "Mouse"
    Protocol "Microsoft"
    Device "/dev/ttyS0"
    Emulate3Buttons
    AlwaysCore
    Buttons 2
EndSubSection
EndSection

Aufmerksame Leser/innen fragen sich an dieser Stelle vermutlich, warum ich die AlwaysCore-Zeile hinein geschmuggelt habe… Nunja, damit sollte wohl still und heimlich vertuscht werden, dass es zwischendurch doch einen Fehlversuch mit der schönen neuen Konfiguration gegeben hat: Leider mochte sich das Touchpad ohne diesen Zusatz nicht mit der Maus arrangieren.

Warum, erklärt die Man-Page: AlwaysCore bittet (genaugenommen: zwingt) das Pointer-Gerät (hier also das Touchpad), seine Boykotthaltung gegenüber dem XInput-Gerät aufzugeben. Wer hier Gleichberechtigung auch auf dem Papier, äh, in der Konfigurationsdatei, verwirklicht sehen will, wird leider enttäuscht: AlwaysCore ist ein spezielles Feature der XInput-Subsektion Mouse – im Pointer-Abschnitt lässt es sich nicht einsetzen.

Glossar

X-Window-System

Die verbreitetste grafische Benutzerschnittstelle für Linux und andere Unix-Betriebssysteme. Unter Linux wird meistens seine Open-Source-Umsetzung XFree86 benutzt.

Shell

Ohne einen Kommandozeileninterpreter (sprich: eine Shell) steht man dem Linux-Betriebssystemkern als Benutzerin ziemlich hilflos gegenüber. Die Shell sorgt nämlich erst für eine Eingabemöglichkeit (den Prompt) und anschließend dafür, dass die eingegebenen Kommandos ordnungsgemäß ans Betriebssystem weitergegeben werden. Dabei bieten die verschiedenen Shells unterschiedlichen Komfort und bedienen verschiedene Geschmäcker. Unter Linux ist die Bash am verbreitetsten.

symbolischen Link

Ein Verweis auf eine andere Datei: Ändert man den Inhalt des Links, verändert sich auch die Zieldatei, ohne dass die Datei jedoch zweimal vorliegt. Im Gegensatz zu harten Links (“Hardlinks”) unterscheiden sich Link und Zieldatei unter anderem darin, dass der Link ins Leere zeigt, wenn sein Ziel gelöscht wird. Einen Symlink erzeugt man mit dem Kommando ln -s.

Protokolle

Im Bereich der Rechner und Netze eine “Sprache”, in der sich zwei kommunizierende Parteien (auf Hard- oder Softwareebene) “unterhalten”, beispielsweise die Maus und das Betriebssystem.

X-Terminal

Ein Kommandozeilenfenster (z.B. xterm, kvt oder konsole) unter X.

FreeBSD

Ein weiteres Open-Source-Unix, sehr beliebt als Internetserver.

LinuxUser 04/2000 KAUFEN
EINZELNE AUSGABE
ABONNEMENTS
TABLET & SMARTPHONE APPS
E-Mail Benachrichtigung
Benachrichtige mich zu:

Hinweis: Dieser Artikel ist älter als ein Jahr, enthaltene Informationen sind möglicherweise veraltet.

0 Kommentare
Älteste
Neuste Beste Bewertung
Inline Feedbacks
Alle Kommentare anzeigen
Nach oben