Solusi untuk permintaan Anda adalah Metode Input.
Apa yang telah Anda gambarkan adalah sesuatu yang akrab bagi sebagian besar pengguna bahasa CJK. Mari kita tinjau bagaimana metode input bekerja di sistem Linux saat ini.
Sistem Metode Input
Berikut arsitektur sederhana untuk sistem metode input umum:
CATATAN: Saya snapshot gambar ini dari The X Input Method Protocol . Beberapa panah tidak relevan untuk mengikuti diskusi.
Secara historis, XIM (protokol Metode Input X) adalah satu-satunya protokol. Ini terlalu rumit dan tidak memiliki beberapa fitur yang diinginkan. Jadi sebagian besar ditinggalkan, meskipun kompatibilitas masih disediakan oleh toolkit populer seperti GTK, Qt.
Sistem metode input modern berisi beberapa bagian:
Dukungan perpustakaan sisi klien
- biasanya diimplementasikan sebagai modul yang dimuat oleh toolkit (misalnya untuk GTK, lihat
/usr/lib/x86_64-linux-gnu/gtk-3.0/3.0.0/immodules/
)
- Server metode input
- Server X
Bagaimana bagian-bagian ini cocok bersama?
Seorang pengguna mengetikkan kunci. Server X menerima acara perangkat keras dari antarmuka evdev, menyusun XEvent dan mengirim ke aplikasi di bawah fokus keyboard. Modul metode input toolkit (GTK, Qt) mencegat acara dan meneruskan info ke server metode input. Server metode input memperkirakan apa yang diinginkan pengguna dan mengirimkan beberapa teks kembali ke modul IM.
Sekarang, mari kita bicara tentang arsitektur server IM.
Server IM biasanya terdiri dari dua bagian:
- Kerangka kerja IM yang menangani seluk-beluk platform spesifik dan menyediakan antarmuka yang bagus untuk modul IM engine dan toolkit IM. Ini memberikan mekanisme IPC yang digunakan oleh modul IM, server dan mesin.
- Berbagai mesin IM melakukan pekerjaan aktual untuk mengubah kunci yang diketik pengguna menjadi teks yang diinginkan. Mesin IM dapat dibagi menjadi perpustakaan yang dimuat oleh server IM atau proses independen yang berkomunikasi dengan server IM.
- Program konfigurasi metode input bantu menyediakan antarmuka pengguna yang ramah untuk menyesuaikan server IM dan perilaku engine.
Secara keseluruhan, apa yang dilakukan IM adalah mengubah apa yang Anda ketik menjadi sesuatu yang berbeda dan secara opsional memberikan prediksi.
Sebuah contoh
Kami menggunakan di ibus-pinyin
sini untuk mengetik beberapa karakter Cina.
Romanisasi 汉语拼音 adalah han yu pin yin
. Pada awalnya, Anda perlu mengetik semua huruf ini untuk mendapatkan empat karakter bahasa Mandarin. Tetapi setelah beberapa kali, Anda hanya perlu mengetikkan empat karakter awal h y p y
untuk mendapatkan karakter Cina.
Dalam hal ibus-pinyin
ini, han yu pin yin
disingkat menjadi h y p y
.
Mesin IM yang lebih maju menggunakan teknik pembelajaran statistik untuk memberikan prediksi yang lebih baik. Tidak ada yang dapat menghentikan Anda dari menulis mesin metode input Bahasa Inggris untuk memberikan dorongan pengetikan.
Sebagai bonus, semua toolkit memiliki dukungan metode input kecuali beberapa program X biasa. Jadi ini adalah solusi yang cukup universal.
Terima kasih kepada Anders FU Kiær. Fitur / Pengetik-Pengetik | Proyek Fedora Wiki harus menjadi jawabannya