Wie bekomme ich das Ö in den Rechner?

Patrick Gundlach


Inhalt


Einleitung

Die meisten Rechner am Fachbereich haben eine Tastatur, auf der keine Umlaute abgebildet sind. Wie kommen nun die Umlaute in den Rechner? Andererseits möchte man auch bestimmte Tasten dazu bewegen, andere Zeichen als die aufgedruckten anzuzeigen. Gibt es dabei Dinge, die ich beachten muß?


Eingabe von Sonderzeichen

Unter X11 sollten alle Programme die Compose Notation beherrschen. Das heißt, einmal auf die Compose Taste (auf der Sun Tastatur rechts unten) drücken, loslassen, dann die gewünschte Taste mit dem Zeichen, auf die der Umlaut erscheinen soll und anschließend die Taste ". Um also ein Ö zu erzeugen, müssen folgende Tasten nacheinander gedrückt werden:
Compose   O   "
(Das Anführungszeichen und das O können auch in umgekehrter Reihenfolge gedrückt werden.)

Warum steht im ersten Satz sollten? Zum einen halten sich manche Programme nicht daran bzw. sind fehlerhaft und zum anderen kennen manche Programme in der normalen Einstellung keinen Zeichensatz der Umlaute darstellen kann.


Programme, die mit Compose zurechtkommen

Programme, die ohne weitere Änderungen mit der Compose Notation zurechtkommen, sind unter anderem

Der Browser von Netscape in der Version 4.6 kennt immerhin in der Location-Zeile Umlauteingabe mit der Compose Notation, versagt aber in Eingabefeldern von HTML Seiten.


Problematische Programme

Programme, die ohne Änderung mit der Compose Notation nichts anfangen können, sind unter anderem Wie bringe ich diesen Programmen Umlaute bzw. die Compose Taste bei?

tcsh und bash
Die bash und tcsh verhalten sich wie gewünscht, wenn in einer Startup Datei die Variable LC_CTYPE auf iso_8859_1 gesetzt wird. Die Syntax sieht wie folgt aus:


Tabelle 1: Setzen der LC_CTYPE Variable
Shell Profile Datei Kommando
bash ~/.bash_profile export LC_CTYPE=iso_8859_1
tcsh ~/.profile setenv LC_CTYPE iso_8859_1
     


Leider funktionieren bei der bash die Kommandos nicht mehr, die auf der Meta Taste liegen. Dem Autor ist keine Möglichkeit bekannt, mit der bash im xterm (unter X11) Umlaute darzustellen und die Meta Kommandos zu benutzen.

emacs
Will man auch im Emacs Umlaute mit Hilfe der Compose Taste eingeben, dann muß man obige Variable (LC_CTYPE) auf de setzen. Achtung: per cut and paste kopierte Umlaute verändert emacs (Version 20.2 - in Version 20.4 ist dieser Fehler behoben), indem ein Sonderzeichen zusätzlich zum Umlaut eingefügt wird. Außerdem muß man emacs anweisen, die Sonderzeichen nicht als Oktalzahl darzustellen. Dazu schreibt man in die ~/.emacs Datei folgende Zeile:
(standard-display-european 1)
Programme, die mit 8 Bit Zeichensätzen (z.B. iso-8859-1) nicht zurechtkommen:
rsh
Die rsh Programme (rsh, rlogin) unterbinden die 8 Bit Übertragung, wenn sie nicht explizit eingeschaltet wird. Dieses geschieht mit dem Parameter -8, der bei dem Programmaufruf mit angegeben werden muß. Beispiel: rlogin -8 -l julian00 marvin. Das Programm telnet hat unter Solaris 2.6 und 2.7 keine Probleme mit 8 Bit Kodierung des Zeichensatz.


Alternativen

Möchte man sich nicht auf die Fälle verlassen, in denen das Programm die Compose Taste erkennt bzw. nicht erkennt, so kann man die Umlaute noch auf eine andere Tastenkombination legen. Das funktioniert - einmal eingerichtet - für alle Programme unter X11. Der X Server verwaltet die Tastatur und gibt die Information über gedrückte Tasten an die einzelnen Programme weiter. Ändert man die Zuordnung der gedrückten Tasten zu den ausgegebenen Zeichen im X Server, so erhalten alle Programme die Tastendrücke entsprechend der veränderten Tastaturbelegung.

Dazu benutzt man das Programm xmodmap. Mit xmodmap können einzelne Tasten unter X11 verändert werden. Eine Beispielanweisung für xmodmap sieht so aus:

keysym 2  =  2               at
Hiermit sagen wir dem Rechner, daß bei einem einfachen Tippen auf die Taste 2 eine 2 erscheinen soll und in Kombination mit der Shift-Taste das at-Symbol (@, Klammeraffe). Entweder übergibt man xmodmap einzelne keysym-Zeilen mit der Option -e:
xmodmap -e "keysym 2 = 2 at"
oder man weist xmodmap dazu an, eine ganze Datei von Anweisungen einzulesen. Dazu legt man sich eine Datei an, die lauter keysym-Anweisungen enthält. Heißt diese Datei dann zum Beispiel .xmodmap und liegt sie im Homeverzeichnis, so wird sie mittels
/usr/openwin/bin/xmodmap ~/.xmodmap
eingelesen. Möchte man für jede X11 Sitzung diese Tastenänderung haben, so schreibt man (unter CDE) die obige Anweisung am besten in die Datei ~/.dtprofile. Jetzt wird sie automatisch bei jedem Start ausgeführt.

Diese Informationen können jetzt genutzt werden, um Umlaute für alle Applikationen gleich einzugeben. Die Anweisung

keysym a =  a       A       adiaeresis
weist der Taste mit der Beschriftung A den Buchstaben a zu, in Kombination mit der Shift-Taste den Buchstaben A, und in Kombination mit der Alt Graph Taste das ä. Möchte man die anderen Umlaute auch auf die entsprechenden Tasten legen (zusammen mit der Alt Graph Taste), dann bietet sich folgende xmodmap Datei an:
keysym a =    a       A       adiaeresis Adiaeresis 
keysym o =    o       O       odiaeresis Odiaeresis 
keysym u =    u       U       udiaeresis Udiaeresis 
keysym s =    s       S       ssharp
Die Bezeichnungen für die Buchstaben und Symbole (,,ssharp``, ,,adiaeresis``) befinden sich in der Datei
/usr/openwin/share/include/X11/keysymdef.h. xmodmap kennt neben der keysym-Anweisung auch eine keycode-Anweisung. Bei dieser wird nicht die Tastenbezeichnung angegeben, sondern ein Tastaturabhängiger Code. Dieser ist mit Vorsicht anzuwenden, da er jeweils nur für eine Art von Tastatur gültig und nicht portabel ist.

Selbst wenn ein Programm die Compose Notation nicht versteht (aber trotzdem Umlaute darstellen kann), können mit der Alt Graph Kombination diese Sonderzeichen eingegeben werden. Diese beiden Methoden können gleichzeitig benutzt werden und sind völlig unabhängig voneinander.


Ausgabe von Sonderzeichen

Wichtig ist, dass nicht nur die Eingabe der Sonderzeichen möglich ist, sondern auch die Ausgabe.


Software

tcsh und bash
Die tcsh und die bash brauchen dazu die LC_CTYPE Anweisung wie sie in Tabelle 1 beschrieben wird.

less
Das Anzeigeprogramm less bezieht seine Zeichensatzinformation aus der Umbebungsvariablen LESSCHARSET. Setzt man diese auf latin1, so stellt less die Umlaute korrekt dar.


Der Euro

Um im xterm das Eurozeichen zu bekommen, braucht man eine Schrift mit dem Eurosymbol. Zeichensätze in der iso-8859-15 Codierung sollten dieses darstellen können. Wie komme ich an diese Zeichensätze? Unter solaris sind im Normalzustand keine Zeichensätze in iso-8859-15 Codierung erreichbar. Das kann man mit dem Programm xfontsel überprüfen: startet man xfontsel und wählt unter dem Menüpunkt rgstry die Option iso8859 aus, so sieht man unter dem Menüpunkt encdng, ob dort die Option 15 auswählbar ist, oder nicht. Ist das nicht der Fall, dann ist kein entsprechender Zeichensatz in dieser Codierung eingebunden. Um den einzubinden, muß man den fontpath von X11 erweitern:

xset fp+ /usr/openwin/lib/locale/iso_8859_15/X11/fonts/TrueType
xset fp rehash
Nun können alle Programme unter X11 auf diese Zeichensätze zurückgreifen. Als Test könnte nun ein xterm gestartet werden:
xterm -fn "-*-interface user-*-r-*-*-*-*-*-*-*-*-iso8859-15"
Wurden die Anweisungen im Abschnitt über die Eingabe von Umlauten beachtet, so kann das Euro Symbol mit der Tastenkombination AltGraph - e eingegeben werden.


Status

Dies ist vermutlich keine vollständige Aufstellung aller Probleme und Lösungen, die die Eingabe und Darstellung von Umlauten und ähnlichen Sonderzeichen behandelt.

Korrekturen und weitere Tips bitte an support@irb schreiben, mit dem Stichwort ,,X11-Umlaute`` im Subject.



Patrick Gundlach 2001-04-30