Abgabe: 14.12.2006
Schreibt einen MINIX-Treiber für PS/2-Mäuse, der es Anwendungen erlaubt, die Mausposition innerhalb der Text-Konsole abzufragen. Implementiert zunächst nur die Grundfunktion des Treibers, indem Ihr den MINIX-Kern um ein neues Modul mouse.c mit den folgenden Prozeduren erweitert:
Bindet das Maus-Modul zunächst in den TTY-Task mit ein. Fügt dazu den Aufruf von mouse_init() in kernel/tty.c hinzu, direkt nach scr_init(). Zu diesem Zeitpunkt funktioniert auch printf(), verwendet dies vorläufig zur Ausgabe der aktuellen Mausposition. In der Folgeaufgabe wird die Grundfunktion dann zu einem eigenständigen Treiber erweitert.
Zusatzaufgabe für Interessierte:
Eine Anwendung wird in der Regel die Mausposition in Form eines Cursors auf
dem Bildschirm anzeigen wollen. Dies geschieht normalerweise durch
Ändern der Text-Attribute von Zeichen im Video-Speicher. Modifiziert
die Bildschirmanzeige in /usr/src/kernel/console.c entsprechend.
Beachtet dabei, daß MINIX mehrere virtuelle Konsolen bereitstellt.
Abgaben:
Abzugeben sind der neue Kern und alle hinzugefügten oder geänderten
Dateien per E-Mail, sowie Dokumentation und relevante kommentierte Fragmente
dazu auf Papier.
Wichtig ist die korrekte Ansteuerung der PS/2-Schnittstelle. Als Vorlage kann die Datei /usr/src/kernel/keyboard.c dienen, die den Tastatur-Teil des PS/2-Controllers ansteuert. Allerdings werden dort nicht alle Parameter "mausgeeignet" initialisiert. Beschreibungen der Funktion von Mäusen im Allgemeinen, Einzelheiten der PS/2-Schnittstelle sowie der Protokolle, mit denen Mausdaten an den Controller übermittelt werden, finden sich unter anderem auf den folgenden Web-Seiten: