Рішення вашого запиту - метод введення.
Те, що ви описали, є чимось знайомим більшості користувачів мови CJK. Давайте розглянемо, як працює метод введення в сучасних системах Linux.
Система методу введення
Ось проста архітектура для загальної системи методу введення:
Примітка: Я знімок цього зображення від The X Input Method Protocol . Деякі стрілки не мають значення для подальшого обговорення.
Історично XIM (протокол методу X Input) був єдиним протоколом. Він надмірно складний і не має деяких бажаних особливостей. Таким чином, це в основному покинуто, хоча сумісність все ще забезпечується популярними наборами інструментів, такими як GTK, Qt.
Сучасна система методу введення містить кілька частин:
Підтримка клієнтської бібліотеки
- зазвичай реалізується як модуль, завантажений наборами інструментів (наприклад, для GTK, див.
/usr/lib/x86_64-linux-gnu/gtk-3.0/3.0.0/immodules/
)
- Сервер методу введення
- X сервер
Як ці частини поєднуються між собою?
Користувач вводить ключ. Сервер X отримує апаратну подію від інтерфейсу evdev, створює XEvent і відправляє в додаток під фокусом клавіатури. Модуль методу введення інструментарію додатків (GTK, Qt) перехоплює подію та передає інформацію на сервер методу введення. Сервер методу введення визначає, що може захотіти користувач, і передає деякий текст назад в модуль чату.
Тепер поговоримо про архітектуру сервера чату.
Сервер чату, як правило, складається з двох частин:
- Структура чату, яка обробляє конкретні тонкощі платформи та забезпечує приємний інтерфейс для модулів чату та інструментарію чатів IM. Він забезпечує механізми IPC, які використовуються модулем чату, сервером та двигуном.
- Різні двигуни чату фактично працюють над перетворенням введених користувачем клавіш у потрібний текст. Двигунами чату можуть бути спільні бібліотеки, завантажені сервером чату, або незалежні процеси, що спілкуються з сервером чату.
- Програми конфігурації допоміжного способу введення надають дружній користувальницький інтерфейс для налаштування поведінки сервера чатів та двигуна.
Загалом, те, що ІМ робить, це перетворити те, що ви вводите, на щось інше і необов'язково передбачити прогнози.
Приклад
Ми використовуємо ibus-pinyin
тут для введення деяких китайських символів.
Романізація 汉语拼音 є han yu pin yin
. Спочатку потрібно набрати всі ці літери, щоб отримати чотири китайські символи. Але через кілька разів вам просто потрібно набрати чотири початкові символи, h y p y
щоб отримати китайський символ.
У ibus-pinyin
випадку, han yu pin yin
це скорочено до h y p y
.
Більш просунуті двигуни чату використовують статистичні методи навчання для кращого прогнозування. Ніщо не може зупинити вас від написання англійського двигуна методу введення, щоб забезпечити збільшення тексту.
Як бонус, всі набори інструментів мають підтримку методу введення, крім деяких звичайних старих програм X. Тож це цілком універсальне рішення.
Завдяки Anders FU Kiær. Особливості / Typing-Booster | Fedora Project Wiki має бути відповіддю