Rozwiązaniem Twojego żądania jest metoda wprowadzania.
To, co opisałeś, jest znane większości użytkowników języka CJK. Zobaczmy, jak działa metoda wprowadzania danych w obecnych systemach Linux.
System wprowadzania danych
Oto prosta architektura wspólnego systemu wprowadzania danych:

UWAGA: Zrzutowałem ten obraz z protokołu X Input Method Protocol . Niektóre strzałki nie mają znaczenia dla dalszej dyskusji.
Historycznie XIM (protokół X Input Method) był jedynym protokołem. Jest zbyt skomplikowany i brakuje mu niektórych pożądanych funkcji. Dlatego jest w większości porzucony, chociaż kompatybilność jest nadal zapewniana przez popularne zestawy narzędzi, takie jak GTK, Qt.
Nowoczesny system wprowadzania danych składa się z kilku części:
Obsługa bibliotek po stronie klienta
- zwykle implementowany jako moduł ładowany przez zestawy narzędzi (np. dla GTK, patrz
/usr/lib/x86_64-linux-gnu/gtk-3.0/3.0.0/immodules/)
- Serwer metod wprowadzania
- Serwer X.
Jak te części pasują do siebie?
Użytkownik wpisuje klucz. Serwer X odbiera zdarzenie sprzętowe z interfejsu evdev, tworzy XEvent i wysyła do aplikacji pod naciskiem klawiatury. Moduł metody wprowadzania aplikacji (GTK, Qt) przechwytuje zdarzenie i przekazuje informacje do serwera metody wprowadzania. Serwer metod wprowadzania określa, czego może chcieć użytkownik, i przekazuje trochę tekstu z powrotem do modułu IM.
Porozmawiajmy teraz o architekturze serwera czatu.
Serwer czatu zazwyczaj składa się z dwóch części:
- Struktura IM, która obsługuje specyficzne dla platformy zawiłości i zapewnia przyjemny interfejs dla silnika IM i modułów IM zestawu narzędzi. Zapewnia mechanizmy IPC wykorzystywane przez moduł IM, serwer i silnik.
- Różne silniki wiadomości błyskawicznych przekształcają klawisze wpisywane przez użytkownika w pożądany tekst. Silniki IM mogą być bibliotekami współdzielonymi ładowanymi przez serwer IM lub niezależnymi procesami komunikującymi się z serwerem IM.
- Programy konfiguracyjne metody wprowadzania pomocniczego zapewniają przyjazny interfejs użytkownika do dostosowywania zachowań serwera IM i silnika.
Podsumowując, komunikator internetowy przekształca wpisywane słowa w coś innego i opcjonalnie zapewnia prognozy.
Przykład
Używamy ibus-pinyintutaj do wpisywania niektórych chińskich znaków.
Romanizacja 汉语拼音 jest han yu pin yin. Najpierw musisz wpisać wszystkie te litery, aby uzyskać cztery chińskie znaki. Ale po kilku przypadkach wystarczy wpisać cztery początkowe znaki, h y p yaby uzyskać chiński znak.
W tym ibus-pinyinprzypadku han yu pin yinjest skrócony do h y p y.
Bardziej zaawansowane silniki IM wykorzystują techniki uczenia statystycznego, aby zapewnić lepsze przewidywanie. Nic nie powstrzyma Cię przed napisaniem silnika do wprowadzania tekstu w języku angielskim, który zapewni Ci lepsze pisanie.
Jako bonus, wszystkie zestawy narzędzi obsługują metodę wprowadzania danych, z wyjątkiem niektórych zwykłych starych programów X. Jest to więc dość uniwersalne rozwiązanie.
Dzięki Anders FU Kiær. Funkcje / Typing-Booster | Wiki Projektu Fedora powinno być odpowiedzią