Tipp: Akzente und andere Sonderzeichen mit Tk
Weckt Tote auf
von Holger Jakobs
Erschienen im Linux-Magazin
2005/03
Deadkeys helfen jedem User Sonderzeichen mit Akzenten einzutippen. Allerdings sind diese Tottasten auf vielen Linux-Systemen abgeschaltet. Mit Tk und dem hier vorgestellten Paket fällt diese Barriere.
Die so genannten Tottasten stammen noch aus der Zeit der mechanischen Schreibmaschine. Sie werden vor einem Vokal gedrückt und erzeugen einen Akzent, bewegen den Wagen aber nicht vorwärts. Damit lassen sich praktisch alle westeuropäischen Akzente erzeugen, nur die Tilde für - fehlt oft. Für den Accent circonflex sind zwei Tottasten nötig (Accent aigu und Accent grave), per Grad-Zeichen entsteht ein Œ.
Unter Windows funktioniert das ebenfalls recht gut, nach dem Drücken von [«] gefolgt von der [E]-Taste erscheint Ž am Bildschirm. Aber bei vielen Linux-Installationen nehmen die X11-Tastaturlayouts »de-latin1-no-deadkeys« sowie »Option "Xkb-Variant" "no-deadkeys"« den Tottasten ihre Sonderfunktion. Sie setzen sofort den Akzent auf ein Leerzeichen, statt Ž erscheint «e. Als Ausweg bleibt oft nur, das Zeichen umständlich per Menüfunktion zu holen oder aus der Manpage »iso-8859-1« zu kopieren.
Ohne Hilfe des X-Servers
Die Konfigurationsdatei des X-Servers dürfen weder User noch Programmierer ändern. Findige Entwickler umgehen das und simulieren die Tottasten in ihren eigenen Tcl-Programmen. Listing 1 zeigt, wie das funktioniert. Die ausführliche Version auf [ftp://ftp.linux-magazin.de/pub/magazin/2005/03/Deadkeys/] belegt weitere Kombinationen sinnvoll mit diakritischen Zeichen.
Das Paket ergänzt die Bindings der Widget-Klassen »Entry« und »Text« (Zeile 2). Die Tottasten ändern die globale Variable »switch« (Zeilen 4 bis 6). Der Umschaltmodus kann leer sein (normale Eingabe) oder »acute« (Accent aigu), »grave« (Accent grave), »circum« (Accent circonflex), »degree« (Ring-Akzent) oder »tilde« (Tilde-Akzent) enthalten. Drückt der Anwender ein Zeichen, das einen Akzent erhalten könnte, wertet das Skript die Variable »$switch« aus (Zeile 13). Je nach Umschaltmodus fügt es das veränderte Zeichen mit Akzent ein.
Türkische Sonderzeichen
Damit gelingt es auch, türkische Sonderzeichen einzugeben (Abbildung 1): Für das kleine i ohne Punkt, das große I mit Punkt, und ‚ sowie kleine und große s und g mit Häkchen nutzt das Paket die Tottaste [¡], also den Ring-Akzent. Fürs Spanische bringen [¡]+[!] und [¡]+[?] die umgedrehten Satzzeichen Á und À in den Text.
Für die Zeichen ¿ und ¯ der skandinavischen Sprachen ist leider keine Belegung mehr frei, weil es das o mit allen anderen Akzenten gibt. Hier wäre eine zusätzliche Tottaste nötig, etwa [#]. Mit ihr könnte das Programm auch griechische Buchstaben oder weitere diakritische Zeichen verstehen, beispielsweise den Punkt auf einem Buchstaben, Hacek-Akzente, doppelte Akzente, den Strich-Akzent und weitere.

|
Abbildung 1: Mit etwas Tk-Code ist es leicht, diese Sonderzeichen einzutippen.
|
Die Unicode-Zeichencodes der Alphabete sind auf [http://www.unicode.org/charts/] zu finden. Für das lateinische Alphabet plus Sonderzeichen sind die ersten vier Tabellen zuständig: Basic Latin, Latin-1 Supplement, Latin Extended-A und Latin Extended-B.
Für eigene Tastaturzuordnungen muss der Programmierer die passenden Codes für das »bind«-Kommando kennen:
pack [text .t] -expand y -fill both
bind .t <KeyPress> {
.t insert end "t%%K=%K %%A=%An"
.t see end
}
Dieses Skript fügt am Ende eines Textwidget den Code für jede gedrückte Taste ein. Auch ausgefallene Kombinationen sind damit zu meistern. (fjl)
01 set switch ""
02 foreach class [list Text Entry] {
03 bind $class <KeyPress-acute> {
04 if {$switch == ""} {
05 set switch "acute"
06 } else { set switch "" }
07 break
08 }
09 [...]
10 bind $class <Key> {
11 set i_ch "%A"
12 if {$switch ne "" && "%A" ne "{}"} {
13 if {$switch eq "acute"} {
14 switch -- %A {
15 " " {set i_ch "u00b4"}
16 a {set i_ch "u00e1"}
17 A {set i_ch "u00c1"}
18 e {set i_ch "u00e9"}
19 E {set i_ch "u00c9"}
20 [...]
21 }
22 } [...]
23 }
24
25 if {$i_ch ne "{}"} {
26 %W insert insert "$i_ch"
27 set switch ""
28 }
29 }
30 }
|
| Whitepaper |
|
The Role of Open Source in Data Integration
Obwohl in den letzten Jahren viele technische Fortschritte erzielt werden konnten, verfügen die meisten Datenintegrationsprozesse nach wie vor nur über eine sehr begrenzte Automatisierung. Das vorliegende White Paper von dem Industry Analyst Mark Madson wird zunächst ein grundlegendes Verständnis von Daten Integration vermitteln, die Vorzüge von Open Source Lösungen für Daten Integration erläutern und Ihnen professionelle Empfehlungen geben, damit Sie Ihre Integrationsjobs noch einfacher und produktiver gestalten können.
Download PDF (Registrierung erforderlich)
|
|
Open Source Datenintegration in der Praxis: Fallstudien und Anwendungsbeispiele (Folge 2)
Der zweite Teil des Open Source Datenintegration in der Praxis: Fallstudien und Anwendungsbeispiele White Papers beleuchtet anhand weiterer ausgewählter Case Studies die Implementierung von Open Source Datenintegration in der Praxis und benennt die daraus resultierenden Vorteile.
Download PDF (Registrierung erforderlich)
|
Dieser Online-Artikel kann Links enthalten, die auf nicht mehr vorhandene Seiten verweisen. Wir ändern solche "broken links"
nur in wenigen Ausnahmefällen. Der Online-Artikel soll möglichst unverändert der gedrucken Fassung entsprechen.
|