Die Lösung für Ihre Anfrage ist die Eingabemethode.
Was Sie beschrieben haben, ist den meisten CJK-Sprachbenutzern vertraut. Lassen Sie uns überprüfen, wie die Eingabemethode in aktuellen Linux-Systemen funktioniert.
Das Eingabemethodensystem
Hier ist eine einfache Architektur für ein gängiges Eingabemethodensystem:
HINWEIS: Ich habe dieses Bild aus dem X Input Method Protocol aufgenommen . Einige der Pfeile sind für die folgende Diskussion irrelevant.
In der Vergangenheit war XIM (das Protokoll der X-Eingabemethode) das einzige Protokoll. Es ist zu komplex und es fehlen einige gewünschte Funktionen. Daher wird es größtenteils aufgegeben, obwohl die Kompatibilität immer noch von beliebten Toolkits wie GTK, Qt bereitgestellt wird.
Ein modernes Eingabemethodensystem besteht aus mehreren Teilen:
Client-seitige Bibliotheksunterstützung
- Wird normalerweise als Modul implementiert, das von Toolkits geladen wird (z. B. für GTK, siehe
/usr/lib/x86_64-linux-gnu/gtk-3.0/3.0.0/immodules/
).
- Eingabemethodenserver
- X Server
Wie passen diese Teile zusammen?
Ein Benutzer gibt einen Schlüssel ein. Der X-Server empfängt das Hardware-Ereignis von der evdev-Schnittstelle, erstellt ein XEvent und sendet es unter Tastaturfokus an die Anwendung. Das Eingabemethodenmodul des Application Toolkit (GTK, Qt) fängt das Ereignis ab und übergibt die Informationen an den Eingabemethodenserver. Der Eingabemethodenserver stellt fest, was der Benutzer möchte, und gibt Text an das IM-Modul zurück.
Lassen Sie uns nun über die Architektur des IM-Servers sprechen.
Ein IM-Server besteht normalerweise aus zwei Teilen:
- Ein IM-Framework, das plattformspezifische Komplikationen behandelt und eine schöne Schnittstelle zu IM-Modulen und IM-Modulen des Toolkits bietet. Es bietet die IPC-Mechanismen, die vom IM-Modul, Server und der Engine verwendet werden.
- Verschiedene IM-Engines erledigen die eigentliche Arbeit, um vom Benutzer eingegebene Schlüssel in den gewünschten Text umzuwandeln. IM-Engines können gemeinsam genutzte Bibliotheken sein, die vom IM-Server geladen werden, oder unabhängige Prozesse, die mit dem IM-Server kommunizieren.
- Konfigurationsprogramme für zusätzliche Eingabemethoden bieten eine benutzerfreundliche Oberfläche zum Anpassen des IM-Servers und des Engine-Verhaltens.
Alles in allem besteht ein IM darin, Ihre Eingabe in etwas anderes umzuwandeln und optional Vorhersagen zu treffen.
Ein Beispiel
Wir verwenden ibus-pinyin
hier einige chinesische Schriftzeichen.
Die Romanisierung von 汉语拼音 ist han yu pin yin
. Zuerst müssen Sie alle diese Buchstaben eingeben, um die vier chinesischen Schriftzeichen zu erhalten. Nach einigen Malen müssen Sie nur noch die vier Anfangszeichen eingeben h y p y
, um das chinesische Zeichen zu erhalten.
In dem ibus-pinyin
Fall han yu pin yin
wird auf gekürzt h y p y
.
Fortgeschrittenere IM-Engines verwenden statistische Lerntechniken, um eine bessere Vorhersage zu ermöglichen. Nichts kann Sie davon abhalten, eine englische Eingabemethode zu schreiben, um einen Tippschub zu erzielen.
Als Bonus unterstützen alle Toolkits Eingabemethoden mit Ausnahme einiger einfacher alter X-Programme. Das ist also eine ziemlich universelle Lösung.
Vielen Dank an Anders FU Kiær. Features / Typing-Booster | Fedora Project Wiki sollte die Antwort sein