Wie man sich unter linux leicht eine Tastaturfunktionalität basteln kann, die es einem ermöglicht, geschützte Bindestriche, Leerzeichen, weiche Trenner, deutsche, tschechische, spanische, französische, rumänische, slowakische, ungarische, polnische und anderssprachige Texte ebenso wie etliche mathematische Zeichen direkt einzugeben, ohne über „Sonderzeichen‑Einfügen‑Dialogfenster“ gehen zu müssen...
Voraussetzung ist nur ein unicode‑fähiges X‑System und das sollte heute eigentlich jedes linux sein (und man muss xmodmap installiert haben). (Unicode ist ein Zeichensystem, welches für fast alle Schriftzeichen und Symbole der Welt eine eindeutige Nummer vergibt. Man kann also so ziemlich alle Texte der Welt als Zahlenfolge abspeichern und – vorausgesetzt, man hat eine Schriftart, für die diese Zeichen definiert sind – auch richtig darstellen.)
Man speichert zunächst seine Standard-Tastaturbelegung mit dem Befehl
xmodmap -pke > ~/.Xmodmap.standardab.
xmodmap ~/.Xmodmap.spezialbzw.
xmodmap ~/.Xmodmap.standardladen.
Hat man die .Xmodmap.spezial‑Datei geladen, sind den Tasten der Tastatur die Zeichen so zugeordnet, wie
es unten dargestellt ist.
Das
Schema zeigt für die meisten Tasten der Tastatur vier bis sechs Zeichen.
Wenn man einfach die Taste drückt, erscheint das links unten
angegebene Zeichen. Das links oben abgebildete erreicht man durch
gleichzeitiges Drücken der Umschalttaste (“shift”) und der
jeweiligen Taste. Das Zeichen in der Mitte oder rechts unten entspricht der Eingabe
[Alt Gr]+[Taste] und rechts oben schließlich
[Alt Gr]+[shift]+[Taste].*)
Das Zeichen rechts unten entspricht ggf. der Eingabe
[rechte Fenstertaste]+[Taste] und rechts oben schließlich
[rechte Fenstertaste]+[shift]+[Taste].*)
*) Vorausgesetzt, der Taste [Alt Gr] wurde als Funktion “Mode_switch” und der [rechten Fenstertaste] “ISO_Level3_Shift” zugewiesen.
Zu beachten sind die kombinierenden Zeichen. Es gibt erstens sogenannte „tote Tasten“ (“dead keys”) und zweitens kombinierende unicode‑Zeichen.
Zu Zweitens: Man kann beispielsweise ein c mit Häkchen (č) eingeben, indem man zunächst das c
eingibt und dann [rechte Fenstertaste]+[4] drückt. Ein (großes) s
mit Cedilla (Ş) erhält man sinngemäß durch
Nacheinandereingabe von S (also [shift]+[s]) und [rechte Fenstertaste]+[z]. Gespeichert werden zwei Zeichen die übereinander dargestellt werden müssen.
Zu Erstens: Besser ist die Verwendung der dead keys. hier gibt man zuerst den Akzent, das Cedilla o.ä. ein und dann den Buchstaben, zu dem das diakritische Zeichen treten soll. Es wird dann ‒ falls ein solches Zeichen vorhanden und die Kombination definiert ist ‒ das kombinierte Zeichen gebildet und als ein Zeichen gespeichert und dargestellt.
(Wenn es nicht funktioniert, kann es daran liegen, dass die gewünschte Kombination nicht definiert ist oder dass es kein solches Zeichen gibt. Falls das kombinierte Zeichen nicht vorhanden ist, muss man auf das kombinierende Unicode‑Zeichen ausweichen, welches mit allen Buchstaben/Zeichen kombinierbar sein sollte. Falls die Komposition nicht definiert ist, kann man das ggf. anpassen, siehe: Definieren von Kompositionen.)
In der hier vorgestellten Tastatur sind, falls beides exisitert, die dead keys immer „vor“ den kombinierenden unicode-Zeichen positioniert. (Wenn beides existiert, liegt das Zeichen auf einer Taste und ist als dead key über Alt Gr erreichbar, als kombinierendes Unicode‑Zeichen hingegen über die rechte Fenstertaste. Das Unterkomma ist nur als kombinierendes Unicode‑Zeichen (also nach t,T, s oder S einzugeben) verfügbar.
Man kann das Tastaturlayout über die .Xmodmap‑Datei nahezu beliebig verändern. (Ideen dazu liefert auch http://neo-layout.org/neo_de.xmodmap)
In einer Xmodmap‑Datei werden die Zeichen den Tasten folgendermaßen zugewiesen:
Jede Taste hat eine Nummer, den “keycode”. (Man kann die keycodes seiner Tastatur herausfinden, indem man das Programm xev aufruft, dann der Reihe nach alle Tasten drückt und aus der Ausgabe von xev die keycodes ermittelt.)
Die Xmodmap‑Datei hat nach dem Gleichheitszeichen (=) bis zu acht Spalten. In der ersten Spalte wird das Zeichen (bzw. die Funktion) definiert, welches dem Drücken der Taste mit dem jeweiligen keycode zugewiesen wird. In der zweiten Spalte dasjenige, welches beim Drücken von [shift]+[Taste] erzeugt werden soll. Das Zeichen, welches in der dritten Spalte angegeben wird, erzeugt man, indem die Taste mit der Funktion “Mode_switch” gleichzeitig mit der Taste gedrückt wird. Das in der vierten wird durch die Mode_switch‑Taste, die Umschalttaste und die Taste hervorgerufen.
Die fünfte Spalte ermöglicht die Zuordnung von Zeichen (bzw. Funktionen) zum Drücken der Taste bei gleichzeitigem Drücken der Taste mit der “ISO_Level3_Shift”‑Funktion. Im Beispiel unten ist die “ISO_Level3_Shift”‑Funktion auf die (überflüssige) „rechte Fenster‑Taste“ gelegt.
Manche Zeichen haben einen Namen, über den sie definiert werden können. Man kann aber auch alle Zeichen mit ihrer Nummer aus dem unicode‑System angeben. Das geschieht in der Form 0x01nmijkl, wobei nmijkl die unicode-Zeichennummer (in hexadezimaler Darstellung) ist. (Hexadezimal heißt, dass die Basis des Positionssystems nicht 10, sondern 16 ist. Es gibt also auch 16 Ziffern, auf 0 bis 9 folgen noch a bis f.) Um die unicode‑Nummern von Zeichen herauszufinden, bietet sich das Programm gucharmap an.
Eine gebräuchliche deutsche Tastatur sieht
hingegen so aus: Tastaturlayout_de.pdf.
Davon oder von der hier
vorgestellten Tastenbelegung ausgehend kann man mit OpenOffice ein der eigenen
Xmodmap‑Datei entsprechendes Schema erstellen.
Eine zu diesem Tastaturlayout passende .Xmodmap‑Datei findet sich hier.
Leider ist die Darstellung hier fehlerhaft. Schicker sieht es im pdf aus und auch zum Ausdrucken ist dieses Format geeigneter.
|
Esc 9 |
|
F1 67 |
F2 68 |
F3 69 |
F4 70 |
F5 71 |
F6 72 |
F7 73 |
F8 74 |
F9 75 |
F10 76 |
F11 95 |
F12 96 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
49 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
rückwärts löschen/ backspace
22 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Tab |<--- --->| 23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
Zeilenende/return | | | | <- 36 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Großbuchstaben/ || caps lock V 66 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
51 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Umschalt/ ^ shift || 50 |
94 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
Umschalt/ ^ shift || 62 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Strg/ Ctrl
37 |
Fenster/ windoof ≈H 115 |
Alt
64 |
65 |
Alt Gr
113 |
Fenster/ windoof ≈H 116 |
Menü/ menu E|\ 117 |
Strg/ Ctrl
109 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
113: zweite Spalte (mode_switch) 116: dritte Spalte (iso_level3_shift)
61:
Minus bzw. Trennstrich, 57: Gedankenstrich (m Strich) 65: Leerzeichen, geschütztes Leerzeichen / non breaking space und dehnbarer Zwischenraum (zunächst) ohne Breite (für Blocksatz) 59 und 60: deutsche Gänsefüßchen („99 unten“ und „66 oben“) 60 engl. Gänsefüßchen („66 und 99 oben“) |
55 und 56: einfache deutsche An /Ausführungszeichen („9 unten“ und „6 oben“) 56: einfache englische An /Ausführungszeichen („6 und 9 oben“)
kombinierend: 49: Kringel/ ring above 10: Brevis/ breve 11: Diäresis 12: schwerer Akzent / grave 13: Häkchen / caron 14: akuter/spitzer Akzent / acute 15: Zirkumflex Akzent / circumflex 21: doppelter akuter/spitzer Akzent / double acute |
40: Überpunkt / dot above 41: Unterpunkt / dot below
42: Tilde
43: Unterstreichung / low line 44: Oberkomma rechts / comma above right
27: Ogonek 39: Unterkomma / comma below (28: Unterkomma / comma below) 29: Cedilla
30: kleiner und großer Schrägstrich
31: kleines i ohne Punkt / dotless i |
|
Leider kann es passieren, dass eine Schriftart nicht alle Zeichen enthält. Es gibt auch Programme, die unicode (noch) nicht richtig umsetzen können. (Beispielsweise zeigte mir quanta+ beim Erstellen/Bearbeiten einer html‑Datei statt eines geschützten Bindestrichs nur ein Leerzeichen, firefox zeigte dann aber an dieser Stelle den Bindestrich.)