Wenn Sie ein reales Programm schreiben, das die Maus unter Linux verwendet, schreiben Sie höchstwahrscheinlich eine X-Anwendung. In diesem Fall sollten Sie den X-Server nach Mausereignissen fragen. Qt , GTK und libsdl sind einige beliebte C-Bibliotheken, die Funktionen für den Zugriff auf Maus, Tastatur, Grafik, Timer und andere Funktionen bieten, die zum Schreiben von GUI-Programmen erforderlich sind. Ncurses ist eine ähnliche Bibliothek für Terminalanwendungen.
Aber wenn Sie Ihr System erkunden oder X aus irgendeinem Grund nicht verwenden können, finden Sie hier die Funktionsweise der Kernel-Oberfläche.
Eine Kernidee in der UNIX-Philosophie ist, dass "alles eine Datei ist". Genauer gesagt, so viele Dinge wie möglich sollten über dieselben Systemaufrufe zugänglich sein, die Sie für die Arbeit mit Dateien verwenden. Die Kernel-Schnittstelle zur Maus ist also eine Gerätedatei. Sie können open()
es wahlweise anrufen poll()
oder select()
darauf zugreifen, um zu sehen, ob eingehende Daten vorliegen, und read()
um die Daten zu lesen.
In Zeiten vor USB war die spezifische Gerätedatei häufig eine serielle Schnittstelle, z. B. /dev/ttyS0
eine PS / 2-Schnittstelle /dev/psaux
. Sie haben mit der Maus über das in die Maus integrierte Hardwareprotokoll gesprochen. Heutzutage wird das /dev/input/*
Subsystem bevorzugt, da es eine einheitliche, geräteunabhängige Möglichkeit zum Umgang mit vielen verschiedenen Eingabegeräten bietet. Insbesondere erhalten /dev/input/mice
Sie Ereignisse von jeder an Ihr System angeschlossenen Maus und /dev/input/mouseN
Ereignisse von einer bestimmten Maus. In den meisten modernen Linux-Distributionen werden diese Dateien dynamisch erstellt, wenn Sie eine Maus anschließen.
Weitere Informationen darüber, was Sie in der Mausgerätedatei lesen oder schreiben würden, finden Sie in der Kerneldokumentation unter input / input.txt . Beachten Sie insbesondere die Abschnitte 3.2.2 (mousedev) und 3.2.4 (evdev) sowie die Abschnitte 4 und 5.