Theppitak's blog

My personal blog.

18 กรกฎาคม 2549

scim-thai alpha

จากที่ เขียนถึง SCIM เมื่ออาทิตย์ที่แล้ว ก็ตั้งเป้าไว้ว่าจะทำ SCIM Thai module ละ พอเสร็จจากประชุมทีมแปล ก็เลยสลับมาทำ SCIM โดยแวะไปแช็ตที่ IRC ของ SCIM นิดหน่อย บอกกล่าวเขาและขอคำแนะนำ

ได้คำชี้แนะว่าควรไปดูที่ m17n, scim-tables และ KMFL ก่อน ซึ่งก็ไม่ผิดจากที่คาดเท่าไรนัก อย่าง m17n ก็คุ้นหน้าคุ้นตา แต่พบว่าการสนับสนุนภาษาไทยในนั้นยังขาดการเช็กลำดับ รวมทั้ง scim-tables ด้วย ส่วน kmfl ยังหาภาษาไทยไม่เจอ

ในบรรดา IME ที่เขาชี้ให้ไปดู ดูเหมือน m17n จะมีแนวโน้มสนับสนุนภาษาไทยแบบเต็มๆ ได้ ส่วนตัวอื่นๆ ดูเหมือนไม่ได้ออกแบบไว้รองรับกลไกที่ภาษาไทยต้องการ แต่กระนั้นก็ตาม ก็ยังรู้สึกว่า เราต้องการอะไรที่มากกว่าที่ m17n มีให้ ประกอบกับเรามี libthai ที่มีโค้ดพร้อมอยู่แล้ว การเขียน IME ขึ้นมาโดยเรียกใช้รูทีนใน libthai น่าจะไม่กินเวลามาก รวมทั้งสามารถดูแลโค้ดให้ทำงานสอดคล้องกับ IM อื่นๆ ที่เคยทำไว้ (คือ gtk-im-libthai) น่าจะสะดวกกว่าในระยะยาว ก็เลยยังคงยืนยันว่าจะเขียน SCIM Thai module โดยเฉพาะอยู่ ซึ่งเขาก็แนะให้ไปดูตัวอย่างโค้ดใน IME ต่างๆ รวมทั้งภาษาสิงหล ซึ่งต้อง retrieve context เหมือนเราด้วย

ซึ่งก็ปรากฏว่าใช้เวลาไม่นานจริงๆ ในการสร้าง scim-thai ที่สามารถป้อนข้อความโดยตรวจ-แก้ลำดับการพิมพ์ได้ ทั้งนี้ ก็อาศัยทั้ง libthai และ gtk-im-libthai ที่มีอยู่แล้วนั่นเอง

SCIM ดูจะพยายามเป็นอิสระจาก XKB เท่าที่จะทำได้ เพราะการใช้ XKB มันค่อนข้างตายตัวเกินไป ไม่เหมาะกับการเลือกสลับภาษาเข้าๆ ออกๆ ขณะทำงานแบบที่ SCIM พยายามจะทำ ดังนั้น โค้ดทั้งหลายจึงพยายามอ้างอิง US keymap เป็นหลัก แล้วแปลง US keysym ไปเป็น keysym และอักขระของภาษาท้องถิ่นเอา

ปัญหาเลยตกอยู่ที่ว่า แล้วสำหรับระบบที่ตั้ง XKB map ไทยไว้ด้วยล่ะ? จะทำยังไง? ไม่ตีกันแย่เหรอ? วันที่สองที่ทำ (หลังจากสร้าง project และทำระบบ build ระบบแปลในวันแรก) ก็เลยเป็นการสร้าง keymap สำหรับแปลง US keysym เป็น keysym ไทยในผังแป้นพิมพ์ 3 แบบ (เกษมณี, มอก., ปัตตะโชติ) โดยพยายามให้ครอบคลุมกรณีที่ใช้ XKB map ไทยด้วย ซึ่งเรื่องการครอบคลุมกรณีที่ตั้ง XKB ไทย ก็ยังไม่ครบเท่าไร มีบางกรณียังหลุดรอด เพราะ SCIM มันอยู่ในชั้นที่เหนือ XKB ขึ้นมาแล้ว เลยลงไปยุ่งกับชั้น XKB ได้ไม่มาก เรียกได้ว่า SCIM ออกแบบมาให้ใช้กับการตั้ง keymap เป็น US โดยเฉพาะ ถ้าคุณตั้ง XKB ไทยพร้อมกับใช้ SCIM ด้วย ก็ไม่รับประกันการใช้งานละครับ

วันที่สาม คือวันนี้ ก็เพิ่มโค้ดส่วนตรวจสอบ-แก้ลำดับด้วย libthai ก็พอทำงานได้ระดับหนึ่งละ สนใจทดสอบเชิญดาวน์โหลด ซอร์สโค้ด (GPL-2) ไปคอมไพล์ได้ แต่นี่ยังไม่ release นะครับ ยังต้องตกแต่งอีกพอประมาณ

3 ความเห็น:

  • 18 กรกฎาคม 2549 17:16 , Blogger bact' แถลง…

    อืม แบบนี้จะดีเหรอครับ อิงกับ US keymap เนี่ย
    ผมไม่รู้เรื่องในรายละเอียดหรอกนะครับ
    แต่ฟังดูแล้ว มันดูไม่ค่อย อืม ยังไงดี แปลก ๆ น่ะครับ

     
  • 18 กรกฎาคม 2549 17:46 , Blogger Thep แถลง…

    อืม.. ผมอาจอธิบายไม่ดี.. อิงกับ US keymap เหมือนเป็น keymap ภาษากลางน่ะครับ ถ้า physical layout เป็น keyboard ญี่ปุ่นหรือเยอรมัน ก็จะแปลงปุ่มให้กลายเป็นผังแบบ US (ผลเหมือนเอาสติกเกอร์ผัง US ทาบทับปุ่มต่างๆ) จากนั้น จะแปลงปุ่มจากผัง US เป็นปุ่มอะไรค่อยว่ากันไป (คือทาบสติกเกอร์ที่อิงกับผัง US ทับ US อีกชั้น)

    แต่ที่ว่า ภาษาไทยต้องอิง US ก็เพราะมันไม่มี physical layout ที่เป็นของไทยน่ะครับ ที่ใช้ๆ กันในบ้านเราก็ยังเป็นผัง US อยู่ดี (ตามนิยามที่คนในทีม SCIM บอกผมมา)

     
  • 18 กรกฎาคม 2549 21:00 , Blogger NOI แถลง…

    เย้ คุณเทพ สู้ๆ นะครับ :D

     

แสดงความเห็น (มีการกลั่นกรองสำหรับ blog ที่เก่ากว่า 14 วัน)

<< กลับหน้าแรก

hacker emblem