ส่วนนี้จะพูดถึงการกำหนดค่าเกี่ยวกับ 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 เช่น
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
ในการเรียกใช้แบบตัวอักษรและ ACM ให้ใช้คำสั่ง consolechars -f <font> -m <ACM> เช่นถ้าต้องการเรียกใช้แบบตัวอักษรจากไฟล์ tis-phaisarn.f16.psf.gz และACM จากไฟล์ tis620.acm.gz ก็จะใช้คำสั่ง consolechars -f tis-phaisarn.f16 -m tis620
คำสั่งนี้จะเรียกใช้งาน แบบตัวอักษรจากไฟล์ tis-phaisarn.f16.psf.gz และ ACM จากไฟล์ tis620.acm.gz ในคราวเดียว ซึ่งไฟล์ font จะอยู่ในห้อง $LCTROOT/consolefonts และ ACM จะอยู่ใน $LCTROOT/consoletrans ซึ่งเป็นห้องที่โปรแกรมกำหนดไว้ (ซึ่งขึ้นอยู่กับแต่ละ distribution ดังที่กล่าวมาแล้ว สำหร£ับรายละเอียดอื่น ๆ ของ consolechars ดูที่ consolechars man pages และเวบไซต์ที่กล่าวมาแล้วครับ)
ในการใช้รูปแบบข้อมูลสำหรับภาษาไทย (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 /]#
Linux Console จะใช้ keymaps ในการเทียบและแปลง รหัสที่ได้รับจาก แป้นพิมพ์ (Keyboard Scan Code) เปลี่ยนเป็นหมายเลขรหัสคำสั่งของแป้นพิมพ์สำหรับ Linux Kernel สำหรับ โปรแกรมที่ทำการจัดการเกี่ยวกับ Keymaps ก็คือ loadkeys ซึ่งเป็นส่วนหนึ่งของแพคเกจ Linux Console Tools
สำหรับไฟล์ keymaps นั้นปกติจะใช้นามสกุล .kmap ซึ่งภายในจะประกอบด้วย รหัสของ ปุ่มกดจากแป้นพิมพ์ (Keycode) และ รหัสของปุ่มกดเสริม (Key Modifiers) ต่าง ๆ และ สัญลักษณ์ ที้ใช้หมายเลขแทนคำสั่งของแป้นพิมพ์สำหรับ Kernel เรียกว่า keysyms ซึ่งเมื่อมีการเรียก keymaps มาใช้งาน loadkeys ก็จะทำการแปลงไฟล์และสัญลักษณ์เป็นรหัสและข้อมูลเพื่อส่งให้กับ kernel
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
VIM สามารถใช้งาน ภาษาไทยได้ทันที โดยใช้ encoding เดียวกับ ISO-8859 ในโหมด 8bit สำหรับ ในโหมด Unicode ต้องทำการกำหนด encoding ก่อนโดยใช้คำสั่ง (ใน VIM) :set encoding=utf-8 สำหรับ gvim หรือ VIM ที่ทำงานบน X-Windows (GUI) ให้ใช้คำสั่ง :set guifont=-misc-fixed-medium-r-normal--15-140-75-75-c-90-iso10646-1 เพื่อเรียกใช้ แบบตัวอักษรสำหรับ Unicode แต่สำหรับ Unicode ก็ยังไม่มี Keymaps ที่จะสนับสนุน Unicode ทำให้ยังไม่สามารถใช้งานได้
โดยปกติแล้ว Emacs จะเปลี่ยน Language Environment ตาม Locale ที่ตั้งไว้ ในตัวแปรระบบ LANG=... แต่ก็สามารถเปลี่ยน เปลี่ยน Language Environment เป็น Thai ในการแกไ้ขเอกสาร ภาษาไทย โดยเลือกจาก Menu หรือใช้ คำสัง M-x (alt-x) ส่วนการพิมพ์ ภาษาไทยในโหมด 8bit ทำได้ทันทีเช่นกัน แต่สำหรับ Unicode ก็ยังไม่มี Keymaps ที่จะสนับสนุน Unicode ทำให้ยังไม่สามารถใช้งานได้
ปัจจบัน Unicode เข้ามามีบทบาทมากขึ้น การใช้งาน Unicode สำหรับ Mail จึงเกิดขึ้นตามไปด้วย ทำให้การส่ง e-mail ในรูปแบบต่าง ๆ หันมาใช้ Unicode โดยส่งในรูปแบบของ UTF-8 หรือ UCS ซึ่ง ใ้ช้รหัสแบบ 8 บิต ซึ่งสามารถเขียนจดหมาย หลาย ๆ ภาษาส่งไป ในจดหมายได้ แต่อย่างไรก็ตาม การใช้งาน Unicode บน Console ทำได้ยาก การใช้งานภาษาไทยบน console จึงต้องใช้ รหัสตัวอักษร 8 bit หรือใช้ 7bit แทน สำหรับ PINE สามารถใช้ TIS-620 ซึ่งเป็น 8bit หรืออยู่ในรูป แบบ “Quoted Printable” แืทนก็ได้
การกำหนดค่า Character Set ใน Pine ให้ใส่บรรทัด ต่อไปนี้ในไฟล์ ~/.pinerc
character-set=TIS-620หรือ กำหนดใน เมนูของ Setup โปรแกรม PINE ก็ได้
ในการเรียกใช้งานคำสั่งของ Linux Console Tools จะพบว่า
สำหรับ บาง 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 $