Linux Braille Terminal - ein Projektbericht
August Hörandl
Der Anfang
Auf einem Seminar im Sommer 1997 diskutierte ich mit Prof. E. Schmid vom österreichischen Bundesblindeninstitut (BBI) über Linux. Er war von diesem neuen Betriebssystem sehr angetan und faßte seine Einstellung ungefähr so zusammen: "Unter Linux gibt es alle Programme als Kommandozeilenversion bzw. im Textmodus - keine Notwendigkeit für Grafik oder Windows. Linux unterstützt Braille Terminals, aber leider nicht die im BBI eingesetzten Terminals der Fa. Papenmeier".
Was ist Linux?
Linux ist ein Multiuser und Multitasking Betriebssystem für verschiedene Hardware: Intel (80x86 d.h. Standard PCs), Motorola 68k, DEC Alpha und andere. Als Unix Variante implementiert es eine Übermenge des Posix Standards und kann mit vielen anderen Betriebssystemen wie Apple, Microsoft und Novell zusammenarbeiten.
Linux ist frei verfügbar - es kann ohne Kosten und Lizenzgebühren kopiert und verteilt werden. Der Quelltext für Linux und viele Programme ist im Internet frei verfügbar.
Was ist ein Braille Terminal?
Mit Hilfe der Blinden- oder Brailleschrift ist es Blinden möglich, einen Text zu lesen. An Stelle der üblichen Buchstaben werden dabei je Zeichen 6 bzw. 8 Punkte verwendet.
Ein Braille Terminal dient zur Ausgabe des Bildschirminhalts eines Computers. Damit ist es möglich über spezielle Steuertasten verschiedene Teile des Schirms zu lesen; Kommandos werden über eine Standardtastatur eingegeben. Die Anzeige erfolgt dabei in zeilenweise durch 8 "Stifte" je Zeichen; zusätzlich gibt es einige Statuszeichen zur Anzeige der aktuelle Zeile, Cursorposition usw.
Die Verbindung des Terminals zum PC geschieht dabei meist über ein serielles Kabel.
Ein Projekt beginnt
Im September fand sich im Gegenstand Projektarbeit des Speziallehrganges für Informationstechnik, Abteilung Elektrotechnik für Berufstätige an der HTL Wien1, Schellinggasse, eine Gruppe von Schülern (Tibor Becker, Michael Burger, Herbert Gruber und Heimo Schön) die sich näher mit Linux beschäftigen wollte. Nach anfänglichen Berührungsängsten ("Was ist ein Braille Terminal? Ist das Schreiben eines Treibers nicht viel zu kompliziert?") und einer ersten Suche im Internet stand folgendes fest:
l es gibt einen Treiber (brltty) für Linux
l der Quelltext des Treibers ist, wie unter Linux üblich, frei verfügbar
l es werden verschiedene Arten von Terminals unterstützt, aber nicht das gewünschte "Papenmeier Screen 2D"
l der Treiber ist modular aufgebaut und ein weiterer Teminaltyp kann leicht ergänzt werden.
Erste Schritte
Über Prof. Schmid erhielten wir von der Fa. Papenmeier eine Beschreibung des Protokolls zwischen Terminal und PC. Leider enthielt diese Beschreibung nur den Aufbau des Protokolls, aber nicht die Kodierung d.h. die den einzelnen Tasten zugeordneten Kodes.
Bei einer ersten Exkursion in das BBI wurde das Terminal zum ersten Mal begutachtet ("So schaut das aus ! Jetzt verstehe ich endlich wovon die Dokumentation spricht") und eine genaue Analyse des Protokolls vorgenommen.
Die Entwicklung
In den nächsten Unterrichtswochen wurde die Programmierung der seriellen Schnittstelle erforscht, die gewonnenen Erkenntnisse über das Protokoll angewandt und es entstand ein erster Prototyp des Treibers. Da in der HTL kein Terminal zu Verfügung stand, entstand dazu parallel eine Terminalsimulation.
Nachdem die Gruppe jetzt von der erfolgreichen Durchführung des Projekts überzeugt war, kam es jetzt auch zu einem ersten Kontakt mit den Autoren des ursprünglichen Treibers: Im Quelltext waren drei Email Adressen angegeben und auf unsere erste Anfrage bekamen wir Antwort von einem der Entwickler: Nicolas Pitre, wie sich später herausstellte aus Montreal/Kanada. Er bot uns Hilfe und Unterstützung bei Problemen an und daraus entstand ein unregelmäßiger Austausch von E-Mails.
Inzwischen wurde auch die Dokumentation übersetzt - vielen Dank an Fr. Prof. Schimann für Ihren Einsatz bei diesem fächerübergreifenden Projekt.
Die Fertigstellung
Viele Detailprobleme und einige Exkursionen später war es im Mai endlich so weit: der Treiber war fertig. Nach einem letzten Test wurde der geänderte Quelltext via Email an die "anderen" Entwickler geschickt.
Inzwischen sollte er im Internet unter
http://sunsite.unc.edu/
utils/console/brltty-2.0
verfügbar sein.
Linux im Unterricht
Bei diesem Projekt wurden einige Vorteile des Einsatzes von Linux im Unterricht offensichtlich:
l freie Verfügbarkeit aller notwendigen Tools (Compiler, Editor etc.)
l im Internet findet man Programme und Dokumentation zu fast jedem Thema
l die Englischkenntnisse werden vertieft
l Dokumentation
l E-Mail
l gezielte Suche nach Informationen zu Detailproblemen im Internet
l die Idee der "Open Source" Software wird verständlich
l das fertige Produkt "verstaubt nicht in einer Schublade" sondern wird wieder veröffentlicht
l zusätzlicher Ansporn - "Unser Treiber wird im Internet veröffentlicht und weltweit eingesetzt!"
l durch die Verfügbarkeit des Quelltextes sind nicht nur Neuentwicklungen sondern Erweiterungen bestehender Programme möglich
l "Jeder kann zum Erfolg von Linux beitragen"
Technische Details l
Der Treiber brltty ist eigentlich ein "normales" Programm. Es wird bei Bedarf bzw. automatisch beim Booten gestartet und kommuniziert mit dem Kernel über die Datei /dev/vcsa0: Bildschirminhalt auslesen und Tastatureingaben simulieren.
Der Quelltext des Treibers ist modular aufgebaut:
l ein Hauptteil ist für alle unterstützten Terminals gleich
l Ausgabe der aktuellen Zeile des Bildschirms und der Statuswerte
l Reaktion auf Steuerkommandos vom Terminal
l verschiedene Anzeigemodis (Text, Attribute, Text mit Attributen)
l Verwendung verschiedener Codierungstabellen zur Umsetzung der ASCII Zeichen in Punkte auf der Braillezeile.
l Hilfe zur Verwendung des Terminals
l Konfiguration
l Cut & Paste
l ein Teil für jedes der unterstützten Terminals. Dieser stellt folgende Funktionen zur Verfügung
l Initialisierung der Hardware (serielle Schnittstelle)
l Einlesen eines Zeichens vom Terminal: Umsetzung der vom Terminal über die Schnittstelle empfangenen Zeichen in symbolische Werte (Zeile nach oben, oberste Zeile etc.)
l Ausgabe der aktuellen Zeile und der Statusanzeige an das Terminal.