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-pinyin
tutaj 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 y
aby uzyskać chiński znak.
W tym ibus-pinyin
przypadku han yu pin yin
jest 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ą