Beim Schreiben mathematischer Texte wünsche ich mir, häufig verwendete Symbole direkt direkt eingeben zu können, ohne deren hexadezimalen Codes auswendig zu lernen oder in die Pickliste schauen zu müssen.
Die Windows
-Taste ist ungenutzt und bietet sich an als zusätzlicher Modifier,
auch zusammen mit anderen Modifier-Tasten, um weitere Zeichen auf die vorhandenen Tasten zu
legen.
Zum Beispiel könnten wir kleine griechische Buchstaben eingeben durch die Modifier-Tasten Windows
zusammen mit Alt
und folgender Tabelle:
Eingabe: | a | b | g | d | e | z | ä | h | i | k | l | m | n | x | o | p | r | s | ß | t | u | y | f | c | ü | ö |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Ergebnis: | α | β | γ | δ | ε | ζ | η | θ | ι | κ | λ | μ | ν | ξ | ο | π | ρ | σ | ς | τ | ου | υ | φ | χ | ψ | ω |
Die Lösung in sechs Schritten
-
Der Unicode-Standard nummeriert viele Zeichen aus der ganzen Welt durch, jedem wird eine Zahl zugeordnet. Diese Zahl kann man dezimal oder hexadezimal ausdrücken. Zum Beispiel liegt unser großes A im Unicode auf Position 65; diese dezimale 65 kann ich auch hexadezimal als x41 ausdrücken. Das kleine Delta liegt auf Position 948, das ist hexadezimal x3b4. Wenn ich den Code eines Zeichens kenne, kann ich es als Entity in ein HTML-Dokument einzufügen:
oderδ
codieren das kleine Deltaδ
δ
.Es gibt bei Wikipedia eine Liste aller Unicode-Blöcke: die Codes für griechische Zeichen finden wir im Block Griechisch und Koptisch, Smileys liegen neben anderen interessanten Symbolen im Block verschiedene Symbole. Mich interessierten Mathematische Operatoren und die hoch- und tiefgestellten Zeichen. Weitere Unicode-Resourcen finden sich in der Referenzliste ganz unten rechts.
-
Das aktuelle X11 erlaubt, Zeichen über deren hexadezimalen Unicode-Wert einzugeben:
- Shift und Control drücken und gedrückt halten;
u
drücken;- Control loslassen;
- Hexadezimalen Wert des Zeichens eingeben mit sovielen Stellen wie nötig;
- Shift loslassen.
Mit
Shift-Control-u3b4
erhalten Sie ein kleines Deltaδ
.Im Terminal-Emulator erzeugen einige Control-Zeichen Signale, z.B. beendet
ein laufendes Programm mitControl+c
SIGTERM
. Deshalb empfiehlt es sich, das
sogleich nach demControl
loszulassen.u
Wenn man die Codes der gewünschten Zeichen auf einer Haftnotiz notiert und diese an den Monitor pappt (gleich neben den Zettel mit den Passwörtern), hat man eine Lowtech-Lösung für das Problem. Uns aber steht der Sinn nach mehr.
-
Das Programm
xbindkeys
aus dem Paketxbindkeys
kann Tastenkombinationen mit Programmaufrufen belegen.Starten Sie
und drücken Sie diexbindkeys -k
-Taste zusammen mitWindows
: die Ausgabe enthält eine Zeilec
.Mod4 + c
steht für dieMod4
Windows
-Taste, undc
fürc
.Mit diesem Wissen legen wir im
\$HOME
-Verzeichnis die Datei.xbindkeysrc
an:"xclock &" Mod4 + c
Die erste Zeile enthält das auszuführende Kommando in Quotes, die zweite Zeile die zugehörige die Zeichen-Kombination. Nach dem Speichern starten wir
xbindkeys
. Die nächste Eingabe von
startet dasWindows + c
xclock
.Jetzt können wir Tastenkombinationen mit Programmaufrufen belegen, aber noch nicht mit Zeichen. Wir brauchen ein Programm, das Tastatureingaben simulieren kann. Dazu kommen wir im nächsten Schritt.
-
Das Programm
xte
aus dem Paketxautomation
erlaubt es, die Tastatur fernzubedienen.Wir rufen es mit diesem Parameter auf:
xte 'str Hallo Welt!'
Es simuliert es die Eingabe des Textes: die Zeichen werden an den X11-Client gesendet, der gerade den Keyboard-Focus besitzt.
Die praktische Nutzung: wir erweitern die Datei
.xbindkeysrc
um diese Zeilen:"xte 'str hans.wurst@example.org'" Mod4 + e
Und schon können wir überall mit
unsere Emailadresse eingeben.Windows
+e
-
Etwas kniffliger wird es, wenn wir Zeichen erzeugen wollen, die nicht auf der Tastatur liegen. Ein Aufruf von
xte
scheitert:xte 'str ψ' Character 'ψ' is not supported by your keyboard layout.
Doch
xte
kann mehr: u.a. (Modifier-)Tasten gedrückt halten, während es andere Tasten betätigt.Wir legen die kleine Datei psi.txt an:
keydown Shift_L keydown Control_L key u keyup Control_L str 3c8 keyup Shift_L
Damit füttern wir das
xte
:xte <psi.txt
Und schon erscheint das Psi
ψ
. -
Das lässt sich automatisieren. Laden Sie das kleine Perl-Programm xtehex.pl herunter:
#!/usr/bin/perl use strict; open (XTE, "|-", "xte"); print XTE "usleep 50000\\n"; print XTE "keyup Control_L\\n"; print XTE "keyup Shift_L\\n"; print XTE "keyup Alt_L\\n"; print XTE "keyup Meta_L\\n"; print XTE "keyup Super_L\\n"; foreach my \$arg (@ARGV) { next unless \$arg =~ /^([0-9a-f]+)\$/i; print XTE "keydown Shift_L\\n"; print XTE "keydown Control_L\\n"; print XTE "key u\\n"; print XTE "keyup Control_L\\n"; printf XTE "str %x\\n", hex(\$1); print XTE "keyup Shift_L\\n"; } close (XTE);
Machen Sie das Programm ausführbar und legen Sie es in ein Verzeichnis, das in ihrem Standard-Suchpfad enthalten ist. Ich nutze dazu
.\$HOME/bin
Das Programm liest Zeichen-Hexcodes von der Kommandozeile und erzeugt Befehle für
xte
, um diese Zeichen einzugeben:xtehex.pl 3bb 3cc 3b3 3bf 3c2
Dieser Befehlsaufruf erzeugt:
λόγος
.Wenn Sie lieber mit dezimalen Zeichen-Codes arbeiten, benutzen Sie statt
xtehex.pl
das Perl-Programmxtedec.pl
; die beiden unterscheiden sich nur in zwei Zeilen. Beim Aufruf übergeben Sie die dezimalen Codes der gewünschten Zeichen:xtedec.pl 955 972 947 959 962
Nun zur praktischen Nutzung: wir erweitern die Datei
.xbindkeysrc
um diese Zeilen:"xtehex.pl 03b1" Mod4 + Alt + a "xtehex.pl 03b2" Mod4 + Alt + b "xtehex.pl 03b3" Mod4 + Alt + g "xtehex.pl 03b1 3b2 3b3" Mod4 + Alt + v "xtehex.pl 263a" Mod4 + plus "xtehex.pl 2639" Mod4 + minus "xtehex.pl 2640" Mod4 + Control + Alt + f "xtehex.pl 2642" Mod4 + Control + Alt + m "xtehex.pl 262a" Mod4 + Control + Alt + i
Jetzt können wir bequem Sonderzeichen eingeben:
Modifier Taste erzeugte Zeichen Windows
+ ☺ Smiley - ☹ Frowny Windows + Alt
a α Alpha b β Beta g γ Gamma v αβγ Control + Windows + Alt
m ♂ Männchen f ♀ Weibchen i ☪ Frieden
Heureka! Problem gelöst. ☺
Hoopajoo.net:
xautomation
Nongnu.org:
xbindkeys
Semicomplete.com:
xdotool
Wikipedia:
Liste der Unicode-Blöcke
Fileformat.info:
Unicode Blocks
Unicode-table.com:
Unicode Blocks
Alan Wood:
Alan Wood’s Unicode resources