ทางออกสำหรับคำขอของคุณคือวิธีการป้อนข้อมูล
สิ่งที่คุณอธิบายคือสิ่งที่ผู้ใช้ภาษา CJK ส่วนใหญ่คุ้นเคย เรามาดูกันว่าวิธีการป้อนข้อมูลทำงานอย่างไรในระบบ Linux ปัจจุบัน
ระบบวิธีการป้อนข้อมูล
นี่เป็นสถาปัตยกรรมอย่างง่ายสำหรับระบบวิธีการป้อนข้อมูลทั่วไป:
หมายเหตุ: ผม snapshot ภาพนี้จากเอ็กซ์วิธีการป้อนข้อมูลพิธีสาร ลูกศรบางอันไม่เกี่ยวข้องกับการติดตาม
ในอดีตนั้น XIM (โปรโตคอล X Input Method) เป็นเพียงโปรโตคอลเดียว มันซับซ้อนเกินไปและขาดคุณสมบัติที่ต้องการบางอย่าง ดังนั้นส่วนใหญ่จะถูกละทิ้งแม้ว่าความเข้ากันได้จะยังคงให้บริการโดยชุดเครื่องมือยอดนิยมเช่น GTK, Qt
ระบบวิธีการป้อนข้อมูลที่ทันสมัยประกอบด้วยหลายส่วน:
การสนับสนุนไลบรารีฝั่งไคลเอ็นต์
- โดยทั่วไปจะนำไปใช้เป็นโมดูลที่โหลดโดยชุดเครื่องมือ (เช่นสำหรับ GTK ดู
/usr/lib/x86_64-linux-gnu/gtk-3.0/3.0.0/immodules/
)
- เซิร์ฟเวอร์วิธีการป้อนข้อมูล
- เซิร์ฟเวอร์ X
ชิ้นส่วนเหล่านี้เข้ากันได้อย่างไร
ผู้ใช้พิมพ์รหัส เซิร์ฟเวอร์ X ได้รับเหตุการณ์ฮาร์ดแวร์จากส่วนต่อประสาน evdev ประกอบด้วย XEvent และส่งไปยังแอปพลิเคชันภายใต้โฟกัสของแป้นพิมพ์ โมดูลแอ็พพลิเคชัน toolkit (GTK, Qt) โมดูลอินพุตวิธีดักเหตุการณ์และส่งผ่านข้อมูลไปยังเซิร์ฟเวอร์เมธอดอินพุต เซิร์ฟเวอร์วิธีการป้อนข้อมูลจะแสดงสิ่งที่ผู้ใช้อาจต้องการและส่งข้อความกลับไปที่โมดูล IM
ทีนี้มาพูดถึงสถาปัตยกรรมของเซิร์ฟเวอร์ IM กัน
โดยทั่วไปเซิร์ฟเวอร์ IM ประกอบด้วยสองส่วนดังนี้
- เฟรมเวิร์ก IM ซึ่งจัดการความซับซ้อนเฉพาะแพลตฟอร์มและให้อินเทอร์เฟซที่ดีกับ IM engine และชุดเครื่องมือ IM IM จัดเตรียมกลไก IPC ที่ใช้โดยโมดูล IM เซิร์ฟเวอร์และเอ็นจิน
- เอ็นจิ้น IM ต่าง ๆ ทำงานจริงในการแปลงคีย์ที่ผู้ใช้พิมพ์เป็นข้อความที่ต้องการ เอ็นจิน IM สามารถแชร์ไลบรารีที่โหลดโดยเซิร์ฟเวอร์ IM หรือกระบวนการอิสระที่สื่อสารกับเซิร์ฟเวอร์ IM
- โปรแกรมกำหนดค่าวิธีการป้อนข้อมูลเสริมให้ส่วนติดต่อผู้ใช้ที่เป็นมิตรสำหรับการปรับแต่งเซิร์ฟเวอร์ IM และลักษณะการทำงานของเครื่องยนต์
โดยสรุปแล้วสิ่งที่ IM ทำคือแปลงสิ่งที่คุณพิมพ์ให้เป็นสิ่งที่แตกต่างและให้การคาดการณ์ทางเลือก
ตัวอย่าง
เราใช้ibus-pinyin
ที่นี่เพื่อพิมพ์ตัวอักษรจีนบางตัว
สุริยวรมันของ汉语拼音han yu pin yin
คือ ในตอนแรกคุณต้องพิมพ์ตัวอักษรทั้งหมดเหล่านี้เพื่อรับตัวอักษรจีนสี่ตัว แต่หลังจากนั้นไม่กี่ครั้งคุณเพียงแค่พิมพ์ตัวอักษรเริ่มต้นสี่ตัวh y p y
เพื่อรับตัวอักษรจีน
ในibus-pinyin
กรณีที่มีการลงไปhan yu pin yin
เอ็นจิ้น IM ขั้นสูงเพิ่มเติมใช้เทคนิคการเรียนรู้ทางสถิติเพื่อให้การคาดการณ์ดีขึ้น ไม่มีอะไรสามารถหยุดคุณจากการเขียนกลไกวิธีการป้อนข้อมูลภาษาอังกฤษเพื่อเพิ่มการพิมพ์h y p y
เป็นชุดโบนัสชุดเครื่องมือทั้งหมดมีการสนับสนุนวิธีการป้อนข้อมูลยกเว้นบางโปรแกรม X เก่าธรรมดา ดังนั้นนี่จึงเป็นคำตอบที่ค่อนข้างเป็นสากล
ขอบคุณ Anders FU Kiær คุณสมบัติ / Typing-Booster | Fedora Project Wikiควรเป็นคำตอบ