4. การใช้งานภาษาไทยบน Linux Console

ส่วนนี้จะพูดถึงการกำหนดค่าเกี่ยวกับ Linux Console เช่น การตั้งแบบตัวอักษร (FONT), ACM, SFM, แป้นพิมพ์ และอื่น ๆ รวมถึงการกำหนดค่าให้ใช้งานภาษาไทยบน โปรแกรมบางตัวที่ทำงานบน Console ด้วย

Linux Console Tools เป็น แพคเกจซึ่งประกอบด้วยโปรแกรมสำหรับ จัดการและกำหนดค่าเกี่ยวกับ Linux Console ทั้ง จอภาพ และ แป้นพิมพ์ ซึ่งการกำหนดค่าต่าง ๆ ต้องผ่าน โปรแกรมของ Linux Console Tools

สิ่งที่จำเป้นต้องรู้จักอักตัวคือ Linux Console Data ซึ่งเป็นส่วนหนึ่งของ Linux Console Tools ซึ่งจะเป็นไฟล์ข้อมูลต่าง ๆ สำหรับใช้งานกับ Linux Console Tools ซึ่งไฟล์เหล่านี้จะอยู่ใน ห้อง Linux Console Tools Data Root ซึ่งจะแทนด้วย $LCTROOT ในหัวข้อต่อ ๆ ไปของ เอกสารนี้ ซึ่งจะแตกต่างกันไปตามแต่ละ distribution เช่น

  • RedHat : /lib/kbd/
  • Mandrake : /usr/lib/kbd/
  • Slackware : /usr/share/
  • Debian : /usr/share/
  • อื่น ๆ : ต้องลองค้นหา ซึ่งอาจจะเหมือนกับ distribution ตัวใดตัวหนึ่งข้างบน ปกติแล้วควรจะมี ห้อง consolefonts consoletrans และ keymaps อยู่ภายใน

Thai Linux Console Data ซึ่งเป็นแพคเกจ ที่มีไฟล์ต่าง ที่จำเป็นสำหรับใช้งานภาษาไทย อยู่แล้วสามารถ ดาวโหลดได้จาก Thai Support fot Linux Console การใช้งาน Thai Linux Console Data โดยทั่วไป ให้ ดาวโหลด แำพคเก console-data-thai (console-data-thai--xxxxx.tar.gz และ แตกลงในห้อง $LCTROOT (โดยใช้คำสั่ง tar -xzvf console-data-xxxxx.tar.gz $LCTROOT ) และยังมี package ของ Linux Console Tools ซึ่งได้รับการแพตซ์ให้ใช้งาน keysyms ในรหัสอักษร TIS-620 ได้ ซึ่งรายละเอียดเพิ่มเติม สามารถดูได้ที่ เวบไซต์ด้านบนครับ

ถ้าไม่มี แพคเกจของ Console Data สำหรับ Linux Distribution ที้ใช้อยู่ ก็สามารถเลือก ดาวโหลดไฟล์ต่าง ๆ ที่จำเป็นมาใช้ได้เช่นกัน ซึ่งรายละเอียด จะกล่าวต่อไป

สำหรับผู้ที่ใช้ Linux Distribution ที้ใช้ RPM (RedHat Package Manager) เช่น RedHat, Mandrake คุณสามารถดาวโหลด แพคเกจ RPM ของ Console Tools สำหรับ distribution นั้น ๆ (ถ้ามี) และติดตั้งแบบ upgrade โดย rpm -U console-tools-xxxxx.i386.rpm ได้จากเวบไซต์ ด้านบน ซึ่งแพคเกจนี้จะมาพร้อมกับ Linux Console Tools ที่แพทซ์ Thai keysym แล้ว รวมทั้ง Thai Console Data ด้วย

คำแนะนำ

ควรอ่านให้จบก่อนลงมือทำ เพื่อความเข้าใจและป้องกันปัญหาที่อาจ จะเกิดขึ้นได้ คำแนะนำที่เป็นประโยชน์มักจะอยู่หลัง ๆ ครับ :-)

สำหรับ Linux Console บนจอภาำพ (Screen Console หรือ Virtual Console) สามารถที่เปลี่ยน แบบตัวอักษรบนหน้าจอได้ สำหรับ VGA Text หรือ SVGA/VGA Framebuffer Console แต่อย่างไรก็ตามการแสดงผลยังไม่สมบูรณ์ เนื่องจาก Linux Kernel นั้นไม่สนุบสนุนระบบเขียนข้อความที่ซับซ้อนแต่ย่างใด (ซึ่งภาษา ไทยก็เป็นภาษาที่มีความซับซ้อนในการเขียน) การแสดงผลตัวอักษร จึงจะเขียนในบรรทัดเีดียวกัน ไม่ว่าจะเป็น พยันชนะ วรรณยุกต์ สระ เช่น วิ่งทุกที่ จะเขียนเป็น ว ิ ่ งท ุกท ี ่ ครับ

สำหรับ แพคเกจ Thai Linux Console Data จะมี แบบตัวอักษรที่เขียนขึ้นเฉพาะ สำหรับใช้งานภาษาไทย และรองรับ TIS-620 ทั้งหมด รหัสตัวอักษรของ แบบตัวอักษรนี้ว่า TIS-620-X ซึ่งมีการ เพิ่มตัวอักษรสำหรับวาดกรอบลงไปด้วย และได้ทำการใส่ตารางสำหรับเทียบ กับ Unicode หรือเรียกว่า Screen Font Map (SFM) ไว้แล้ว

เพื่อให้การแสดงผลในระบบ 8bit หรือ ASCII ถูกต้องด้วย ต้องมีการใช้ ตารางเทียบ อักษรสำหรับแอพพลิเคชั่น หรือเรียกว่า Application Charset Map (ACM) เพื่อใช้ใน การแปลงอักษรแบบ 8bit เป็น Unicode และแสดงผลกับ แบบตัวอักษรที่ใช้ตาราง Unicode ได้ถูกต้องด้วย ซึ่ง แบบตัวอักษรและไฟล์ ACM จะมาพร้อมกับ แพคเกจ Thai Linux console data แล้วเช่นกัน

ถ้าไม่ได้ติดตั้ง แพคเกจ Thai Console Data ก็สามารถดาวโหลดไฟล์ได้จากเวบไซต์ ที่กล่าวมาแล้ว สำหรับไฟล์แบบตัวอักษรให้นำไปไว้ใน ไดเรกทอรี่ $LCTROOT/consolechars และนำไฟล์ ACM ไปไว้ใน ไดเรกทอรี่ $LCTROOT/consoletrans

ในการใช้รูปแบบข้อมูลสำหรับภาษาไทย (Thai Locale) ในการแสดงผล ต้องทำการประกาศตัวแปรระบบ LANG เป็น "th_TH" โดยใช้คำสั่ง export LANG="th_TH" เพื่อกำหนดให้ใช้ภาษาไทย

โปรแกรมต่าง ๆ ที่ โปรแกรมที่เป็นสากล (Internationalization, i18n) และ สามารถใช้รูปแบบข้อมูลที่เหมาะสมกับท้องถิ่น (Localization,l10n) จะแสดงผลเป็นภาษาไทย และใช้รูปแบบข้อมูลที่ควรจะเป็นในภาษาไทย ตามที่กำหนดไว้ (รวมทั้งโปรแกรมบน X-Windows) ซึ่งในที่นี้ ต้องใช้แบบตัวอักษรภาษาไทย รวมทั้ง ACM ด้วย ใน Console เพื่อให้แสดงผลได้ถูกต้อง (หลังจากกำหนดแล้วสามารถทดลองได้ โดยใช้คำสั่ง date เพื่อดูวันที่แล้วเวลา) การกำหนด นี้ อาจใช้ในการ บอกโปรแกรมต่าง ๆ ให้ใช้รูปแบบ แป้นพิมพ์เป็นภาษาไทย สำหรับบางโปรแกรมด้วย

[sf_alpha@benja /]# date
อา. 27 พ.ย. 2544
[sf_alpha@benja /]#
     

keymaps จะมีอยู่ หลายแบบ ปกติแล้ว Linux ทั้ว ๆ ไปจะใช้ได้เฉพาะ keymaps ที่ใช้ keysyms ของรหัสอักษร ISO-8859-1 สำหรับ keysyms ของรหัสอักษรแบบ TIS-620 จะใช้ได้กับ Linux ที่ติดตั้ง Linux Console Tools ที่ได้รับการ แพตซ์ ให้ใช้งาน keysyms สำหรับ TIS-620 ได้แล้วเท่านั้น ซึ่งสามารถ ดาวโหลดได้จากเวบไซต์ด้านบนเช่นกัน แต่อย่างไรก็ตาม keymaps นี้ยังไม่สามารถใช้งาน ในโหมด Unicode ได้ keymaps เหล่านี้จะใช้ปุ่ม AltGr หรือ Right-Alt ในการเปลี่ยนภาษา และอาจเป็นปุ่มอื่น ขึ้นอยู่กับรายละเอียดของแต่ละ ไฟล์ keymaps ด้วย

ถ้าได้ติดตั้ง Thai Linux Console Data Package ที่กล่าวมาในหัวข้อก่อนหน้านนี้แล้ว ก็จะมีไฟล์ keymaps สำหรับ แป้นพิมพ์ ตามมาตรฐาน TIS-820 2538 (มอก. 820 2538) อยู่แล้ว คือ tis820-38.kmap.gz (ซึ่งใช้ รหัสอักษร ISO-8859-1) ซึ่งถ้าไม่ได้ติดตั้งก็ ดาวโหลด มาได้เช่นกัน แล้วนำไปไว้ในห้อง $LCTROOT/keymaps/i386/qwerty เราสามารถเรียนใช้‰งาน keymaps โดยใช้คำสั่ง loadkeys <Keymapfile> เช่นถ้าต้องการเรียกใช้ keymaps จากไฟล์ tis820-38.kmap.gz ให้ใช้คำสั่ง loadkeys tis820-38

คำ³สั¹ˆงนี้จะเรียกใช้งาน keymaps จากไฟล์ tis-iso.kmap.gz ซึ่งไฟล์ keymaps จะอยู่ในห้อง $LCTROOT/keymaps/i386/qwerty/ ซึ่งเป็นห้องที่โปรแกรม กำหนดไว้ (ซึ่งขึ้นอยู่กับแต่ละ distribution ดังที่กล่าวมาแล้ว)

ยังไม่มีข้อมูลครับ

สำหรับการใช้งาน Unicode คือการปรั?บระบบให้การแสดงผล และแป้นพิมพ์ ทั้งหมด อยู่ในสถานะ Unicode ซึ่งโดยปกติแล้ว โปรแกรมต่าง ๆ บน Console จะไม่ได้ออก แบบมาสำหรับ Unicode จริงๆ แ่ต่จะใช้ ระบบ XLate แทน ซึ่งเป็นการส่งตัวอักษร Unicode ไปทานหน้าจอโดยใช้ตัวอักษร ระบบ ASCII ธรรมดา สำหรับในแป้นพิมพ์ นั้น การใช้งาน Unicode ยังใช้กับภาษาไทยไม่ได้ แต่ใช้ได้กับตัวอักษร Latin-1 (ISO-8859-1) เท่านั้น

การเข้าสู้โหมด Unicode จะใช้คำสั่ง unicode_start <screenfontfile> สำหรับการกับสู่โหมดปกติ (ASCII/XLate) ใช้คำสั่ง unicode_stop

ข้อสังเกตุ :

ในการเรียกใช้งานคำสั่งของ Linux Console Tools จะพบว่า

  • เราไม่ต้องใส่ พาธสำหรับห้องถ้าอยู่ในห้องที่กำหนดไว้โดยโปรแกรม
  • เราไม่ต้องใส่ .gz และ นามสกุลปกติของไฟล์ (เช่น .psf .acm .kmap)

สำหรับ บาง distribution ที้ใช SysVinit อาจจะมี สคริปต์สำหรับจัดการเรื่องภาษา ซึ่งจะมี และมีไฟล์ /etc/sysconfig/i18n (เช่น RedHat, Mandrake) ซึ่งสามารถแก้ไขไฟล์ /etc/sysconfig/i18n และเปลี่ยนค่า ต่าง ๆ เพื่อให้ระบบแสดงผลเป็นภาษาไทย และเรียกใช้งานแบบอักษรภาษาไทยด้วย ดังตัวอย่าง

LANG="th_TH"                # Thai Locale
SYSFONTACM="tis620"         # System ACM
SYSFONT="tis-phaisarn.f16"  # System Font (Console)
...
...
     

และสามารถแก้ไขไฟล์ /etc/sysconfig/keyboard เพื่อกำหนด keymaps ของแป้นพิมพ์ที่จะใช้ได้เช่นกัน ดังตัวอย่าง

KEYTABLE="th-tis-38win.latin1"  # Thai TIS-820 2538
                                # (Latin1 Keysyms) Windows Keyboard
     
ถ้าใช้ console-tools ที่แพตช์ Thai keysyms แล้ว อาจจะใช้ th-tis-38win.tis620 ก็ได้ และในบาง distribution สามารถใช้คำสั่ง kbdconfig กำำหนดไดเช่นกัน

หลังจากแก้ไขแล้ว เมื่อ เริ่มระบบใหม่ (Boot) ก็จะมีการเรียกใช้งาน แบตัอักษร และ ACM สำหรับแสดงผล และตั้งให้แสดงผมข้อมูลเป็นภาษาไทย และ เรียก keymaps มาใช้งาน แต่อย่างไรก็ตาม ACM จะไม่ทำงานในโหมด multiuser (หลังจาก getty แล้ว ACM จะไม่ทำาน แต่อาจจเพิ่ม คำสั่งในการ เรียกใช้ ACM หรือ แบบตัวอักษร ในไฟล์ script ขณะ login เช่น .bash_profile สำหรับ บาง distribution สามารถใช้คำสั่ง setsysfont ในการ เรียกใช้ แบบตัวอักษรและ ACM ที่ตั้งไว้ได้)

$Id: Thai-HOWTO-4.html,v 1.4 2002-03-05 17:12:49 sf_alpha Exp $