home *** CD-ROM | disk | FTP | other *** search
Text File | 1998-08-20 | 42.3 KB | 1,321 lines | [TEXT/hscd] |
- The Linux Thai HOWTO
- Poonlap Veeratanabutr, poon-v@fedu.uec.ac.jp
- v0.4, 4 August 1998
-
- This document describes how to use Thai language with Linux. This will
- cover setting Thai fonts, Thai keyboard and some Thai applications.
- ______________________________________________________________________
-
- Table of Contents
-
-
- 1. Introduction
-
- 2. Thai Input and Output
-
- 2.1 Linux console
- 2.1.1 Thai fonts
- 2.1.2 Keyboard layout
- 2.2 X Window system
- 2.2.1 Thai fonts
- 2.2.1.1 Installing Thai fonts
- 2.2.2 Thai keyboard layout There are two ways to map Thai keyboard on X window, using X Keyboard Extension (XKB) and using
- 2.2.2.1 XKB and Thai keyboard layout.
- 2.2.2.2 Thai keyboard layout with xmodmap
-
- 3. Applications with Thai language
-
- 3.1 Some X applications and Thai language
- 3.1.1 txterm
- 3.1.2 Emacs, Mule
- 3.1.3 vi
- 3.1.4 pine
- 3.1.5 Netscape
- 3.1.6 Ss, Simple thai word Separator
- 3.1.7 Xzthai, X keyboard configurator + simple editor
- 3.2 Printing Thai document
- 3.2.1 Latex and Thai language
- 3.2.2 Latex's configuration for Thai language
- 3.2.3 Use Thai
- 3.2.4 Editing
- 3.3 X Application Resources
- 3.4 Thai Extension for Linux (TE)
-
- 4. References and FTP sites
-
- 4.1 Other documents of relevance
- 4.2 Thai related stuffs
- 4.3 FTP and Web sites
-
- 5. Acknowledgments and Copyright
-
-
-
- ______________________________________________________________________
-
- 1. Introduction
-
- It's about one year that I didn't update this document. There were a
- lot of movement in Thai computing and using Linux in Thailand. For
- example, Linux boxes are used as server in many schools in Thailand
- <http://www.school.net.th>.
-
- The purpose of this document is to show how to set your Linux to use
- Thai language. I use Linux RedHat 5.0 as I wrote this document, so
- directories which I mention in this document may be different from
- other distribution.
- First I would like to talk about Thai standard character set. Thai
- standard character set is TIS-620. There are also other Thai standard
- character sets such as ISO-IR-166, CP874, etc. Please see
- http://www.inet.co.th/cyberclub/trin/thairef/
- <http://www.inet.co.th/cyberclub/trin/thairef/> for further
- information about Thai standard character set. TIS-620 is 8-bit
- character set. It has the same range as ISO-8859-1, so we can use
- apllications that support ISO-8859-1 character set also. Although we
- can use Thai language with apllications that support ISO-8859-1
- character set, but it does not mean those applications support Thai
- language.
-
- Thai characters are different from English characters. There is a
- variation of position, normal position, character can be on other
- character, character can be under other character. There is no space
- between words. These are some problems in developing Thai supported
- application.
-
- You can find the lastest version of Thai-HOWTO document from
- http://www.fedu.uec.ac.jp/ZzzThai/Linux
- <http://www.fedu.uec.ac.jp/ZzzThai/Linux>. Your comment is welcome.
-
-
-
- 2. Thai Input and Output
-
- 2.1. Linux console
-
- Thai characters do not display properly in Linux console. If you
- mainly use X window, you may pass this section.
-
- 2.1.1. Thai fonts
-
- You can obtain Linux Thai console fonts which created by Mr. Phaisarn
- Techajaruwong from ZzzThai ftp site
- <ftp://ftp.fedu.uec.ac.jp/pub/thai/UEC/ZzzThai/Sofware/Linux/fonts/console>
-
- For example, there is a font name "phaisarn.psf". Put it in
- /usr/lib/kbd/consolefonts/ directory. Then, you can load the new font
- from Linux console by command
-
-
- %setfont phaisarn.psf
-
-
-
-
-
- 2.1.2. Keyboard layout
-
- You can set keyboard behavior as you like by using loadkeys command.
- Usually, you use loadkeys to load the file located in
- /usr/lib/kbd/keytables. You can create a US/Thai keyboard-map file and
- save it in this directory. Here is a sample.
-
-
-
-
-
-
-
-
-
-
-
-
- keycode 0 =
- keycode 1 = Escape Escape
- alt keycode 1 = Meta_Escape
- keycode 2 = +one exclam +0x0e5 plus
- alt keycode 2 = Meta_one
- alt shift keycode 2 = Meta_exclam
- keycode 3 = +two at +slash 0x0f1
- control keycode 3 = nul
- control shift keycode 3 = nul
- alt keycode 3 = Meta_two
- alt shift keycode 3 = Meta_at
- keycode 4 = +three numbersign +underscore 0x0f2
- control keycode 4 = Escape
- alt keycode 4 = Meta_three
- alt shift keycode 4 = Meta_numbersign
- keycode 5 = +four dollar +0x0c0 0x0f3
- control keycode 5 = Control_backslash
- alt keycode 5 = Meta_four
- alt shift keycode 5 = Meta_dollar
- keycode 6 = +five percent +0x0b6 0x0f4
- control keycode 6 = Control_bracketright
- alt keycode 6 = Meta_five
- alt shift keycode 6 = Meta_percent
- keycode 7 = +six asciicircum +0x0d8 0x0d9
- control keycode 7 = Control_asciicircum
- alt keycode 7 = Meta_six
- alt shift keycode 7 = Meta_asciicircum
- keycode 8 = +seven ampersand +0x0d6 0x0df
- control keycode 8 = Control_underscore
- alt keycode 8 = Meta_seven
- keycode 9 = +eight asterisk +0x0a4 0x0f5
- control keycode 9 = Delete
- alt keycode 9 = Meta_eight
- keycode 10 = +nine parenleft +0x0b5 0x0d6
- alt keycode 10 = Meta_nine
- keycode 11 = +zero parenright +0x0a8 0x0f7
- alt keycode 11 = Meta_zero
- keycode 12 = +minus underscore +0x0a2 0x0f8
- control keycode 12 = Control_underscore
- control shift keycode 12 = Control_underscore
- alt keycode 12 = Meta_minus
- keycode 13 = +equal plus +0x0aa 0x0f9
- alt keycode 13 = Meta_equal
- keycode 14 = Delete Delete Delete Delete
- alt keycode 14 = Meta_Delete
- keycode 15 = Tab Tab Tab Tab
- alt keycode 15 = Meta_Tab
- keycode 16 = +q Q +0x0e6 0x0f0
- keycode 17 = +w W +0x0e4 quotedbl
- keycode 18 = +e E +0x0d3 0x0ae
- keycode 19 = +r R +0x0be 0x0b1
- keycode 20 = +t T +0x0d0 0x0b8
- keycode 21 = +y Y +0x0d1 0x0ed
- keycode 22 = +u U +0x0d5 0x0ea
- keycode 23 = +i I +0x0c3 0x0b3
- keycode 24 = +o O +0x0b9 0x0cf
- keycode 25 = +p P +0x0c2 0x0ad
- keycode 26 = +bracketleft braceleft +0x0ba 0x0b0
- control keycode 26 = Escape
- alt keycode 26 = Meta_bracketleft
- alt shift keycode 26 = Meta_braceleft
- keycode 27 = +bracketright braceright +0x0c5 comma
- control keycode 27 = Control_bracketright
- alt keycode 27 = Meta_bracketright
- alt shift keycode 27 = Meta_braceright
- keycode 28 = Return Return Return Return
- alt keycode 28 = 0x080d
- keycode 29 = Control Control Control Control
- keycode 30 = +a A +0x0bf 0x0c4
- keycode 31 = +s S +0x0cb 0x0a6
- keycode 32 = +d D +0x0a1 0x0af
- keycode 33 = +f F +0x0b4 0x0e2
- keycode 34 = +g G +0x0e0 0x0ac
- keycode 35 = +h H +0x0e9 0x0e7
- keycode 36 = +j J +0x0e8 0x0eb
- keycode 37 = +k K +0x0d2 0x0c9
- keycode 38 = +l L +0x0ca 0x0c8
- keycode 39 = +semicolon colon +0x0c7 0x0ab
- alt keycode 39 = Meta_semicolon
- keycode 40 = +apostrophe quotedbl +0x0a7 period
- control keycode 40 = Control_g
- alt keycode 40 = Meta_apostrophe
- keycode 41 = +grave asciitilde +minus percent
- control keycode 41 = nul
- alt keycode 41 = Meta_grave
- keycode 42 = Shift Shift Shift Shift
- keycode 43 = +backslash bar +0x0a3 0x0a5
- control keycode 43 = Control_backslash
- alt keycode 43 = Meta_backslash
- alt shift keycode 43 = Meta_bar
- keycode 44 = +z Z +0x0bc parenleft
- keycode 45 = +x X +0x0bb parenright
- keycode 46 = +c C +0x0e1 0x0a9
- keycode 47 = +v V +0x0cd 0x0ce
- keycode 48 = +b B +0x0d4 0x0da
- keycode 49 = +n N +0x0d7 0x0ec
- keycode 50 = +m M +0x0b7 question
- keycode 51 = +comma less +0x0c1 0x0b2
- alt keycode 51 = Meta_comma
- alt shift keycode 51 = Meta_less
- keycode 52 = +period greater +0x0e3 0x0cc
- alt keycode 52 = Meta_period
- alt shift keycode 52 = Meta_greater
- keycode 53 = +slash question +0x0bd 0x0c6
- control keycode 53 = Delete
- alt keycode 53 = Meta_slash
- keycode 54 = Shift Shift Shift Shift
- keycode 55 = KP_Multiply
- keycode 56 = Alt Alt Alt Alt
- keycode 57 = space space space space
- control keycode 57 = nul
- alt keycode 57 = Meta_space
- keycode 58 = Caps_Lock Caps_Lock Caps_Lock Caps_Lock
- keycode 59 = F1 F11 Console_13
- control keycode 59 = F1
- alt keycode 59 = Console_1
- control alt keycode 59 = Console_1
- keycode 60 = F2 F12 Console_14
- control keycode 60 = F2
- alt keycode 60 = Console_2
- control alt keycode 60 = Console_2
- keycode 61 = F3 F13 Console_15
- control keycode 61 = F3
- alt keycode 61 = Console_3
- control alt keycode 61 = Console_3
- keycode 62 = F4 F14 Console_16
- control keycode 62 = F4
- alt keycode 62 = Console_4
- control alt keycode 62 = Console_4
- keycode 63 = F5 F15 Console_17
- control keycode 63 = F5
- alt keycode 63 = Console_5
- control alt keycode 63 = Console_5
- keycode 64 = F6 F16 Console_18
- control keycode 64 = F6
- alt keycode 64 = Console_6
- control alt keycode 64 = Console_6
- keycode 65 = F7 F17 Console_19
- control keycode 65 = F7
- alt keycode 65 = Console_7
- control alt keycode 65 = Console_7
- keycode 66 = F8 F18 Console_20
- control keycode 66 = F8
- alt keycode 66 = Console_8
- control alt keycode 66 = Console_8
- keycode 67 = F9 F19 Console_21
- control keycode 67 = F9
- alt keycode 67 = Console_9
- control alt keycode 67 = Console_9
- keycode 68 = F10 F20 Console_22
- control keycode 68 = F10
- alt keycode 68 = Console_10
- control alt keycode 68 = Console_10
- keycode 69 = Num_Lock
- keycode 70 = Scroll_Lock Show_Memory Show_Registers
- control keycode 70 = Show_State
- alt keycode 70 = Scroll_Lock
- keycode 71 = KP_7
- alt keycode 71 = Ascii_7
- keycode 72 = KP_8
- alt keycode 72 = Ascii_8
- keycode 73 = KP_9
- alt keycode 73 = Ascii_9
- keycode 74 = KP_Subtract
- keycode 75 = KP_4
- alt keycode 75 = Ascii_4
- keycode 76 = KP_5
- alt keycode 76 = Ascii_5
- keycode 77 = KP_6
- alt keycode 77 = Ascii_6
- keycode 78 = KP_Add
- keycode 79 = KP_1
- alt keycode 79 = Ascii_1
- keycode 80 = KP_2
- alt keycode 80 = Ascii_2
- keycode 81 = KP_3
- alt keycode 81 = Ascii_3
- keycode 82 = KP_0
- alt keycode 82 = Ascii_0
- keycode 83 = KP_Period
- altgr control keycode 83 = Boot
- control alt keycode 83 = Boot
- keycode 84 = Last_Console
- keycode 85 =
- keycode 86 = less greater bar
- alt keycode 86 = Meta_less
- keycode 87 = F11 F11 Console_23
- control keycode 87 = F11
- alt keycode 87 = Console_11
- control alt keycode 87 = Console_11
- keycode 88 = F12 F12 Console_24
- control keycode 88 = F12
- alt keycode 88 = Console_12
- control alt keycode 88 = Console_12
- keycode 89 =
- keycode 90 =
- keycode 91 =
- keycode 92 =
- keycode 93 =
- keycode 94 =
- keycode 95 =
- keycode 96 = KP_Enter
- keycode 97 = Control
- keycode 98 = KP_Divide
- keycode 99 = Control_backslash
- control keycode 99 = Control_backslash
- alt keycode 99 = Control_backslash
- keycode 100 = AltGr_Lock
- keycode 101 = Break
- keycode 102 = Find
- keycode 103 = Up
- keycode 104 = Prior
- shift keycode 104 = Scroll_Backward
- keycode 105 = Left
- alt keycode 105 = Decr_Console
- keycode 106 = Right
- alt keycode 106 = Incr_Console
- keycode 107 = Select
- keycode 108 = Down
- keycode 109 = Next
- shift keycode 109 = Scroll_Forward
- keycode 110 = Insert
- keycode 111 = Remove
- altgr control keycode 111 = Boot
- control alt keycode 111 = Boot
- keycode 112 =
- keycode 113 =
- keycode 114 =
- keycode 115 =
- keycode 116 =
- keycode 117 =
- keycode 118 =
- keycode 119 =
- keycode 120 =
- keycode 121 =
- keycode 122 =
- keycode 123 =
- keycode 124 =
- keycode 125 =
- keycode 126 =
- keycode 127 =
- string F1 = "\033[[A"
- string F2 = "\033[[B"
- string F3 = "\033[[C"
- string F4 = "\033[[D"
- string F5 = "\033[[E"
- string F6 = "\033[17~"
- string F7 = "\033[18~"
- string F8 = "\033[19~"
- string F9 = "\033[20~"
- string F10 = "\033[21~"
- string F11 = "\033[23~"
- string F12 = "\033[24~"
- string F13 = "\033[25~"
- string F14 = "\033[26~"
- string F15 = "\033[28~"
- string F16 = "\033[29~"
- string F17 = "\033[31~"
- string F18 = "\033[32~"
- string F19 = "\033[33~"
- string F20 = "\033[34~"
- string Find = "\033[1~"
- string Insert = "\033[2~"
- string Remove = "\033[3~"
- string Select = "\033[4~"
- string Prior = "\033[5~"
- string Next = "\033[6~"
- string F21 = ""
- string F22 = ""
- string F23 = ""
- string F24 = ""
- string F25 = ""
- string F26 = ""
-
-
-
-
- Suppose you save this file as thai.map. From Linux console, use
- command loadkeys to load thai.map.
-
-
- %loadkeys thai.map
-
-
-
-
- You can switch to Thai keyboard by pressing the right Alt key. If you
- want to switch the keyboard back, press the right Alt key again.
-
-
-
- 2.2. X Window system
-
- 2.2.1. Thai fonts
-
- You can obtain Thai fonts in bdf format or pcf format from internet.
- You can also use scalable fonts such as Type1 or TrueType fonts. But I
- will not describe about these.
-
-
-
- 2.2.1.1. Installing Thai fonts
-
- You must log in as root. Let's put Thai fonts in
- /usr/X11R6/lib/X11/fonts/misc/, this is a default font path. Change
- directory to /usr/X11R6/lib/X11/fonts/misc/ and run command
-
-
- %mkfontdir
- %xset fp rehash
-
-
-
-
- If you put Thai fonts in different directory, you must use xset to add
- the new font path. Please see man-page for further information. You
- can check the new fonts by running command xlsfonts and see whether
- there are Thai fonts or not. If you can not see any Thai fonts from
- this command, you may need to restart X window.
-
-
-
- 2.2.2. There are two ways to map Thai keyboard on X window, using X
- Keyboard Extension (XKB) and using xmodmap . Please select how you map
- Thai keyboard. I recommend using XKB. Thai keyboard layout
-
-
-
-
-
- 2.2.2.1. XKB and Thai keyboard layout.
-
- Beginning with XFree86 3.1.2D, you can use the new X11R6.1 XKEYBOARD
- extension to manage the keyboard layout. This is very helpful.
-
- During X server configuration with xf86config you will be asked about
- XKB, if you want to to set Thai keyboard layout for your system, say
- yes. There are a list of pre-configured keymaps. Choose Standard
- 101-key, Thai encoding.
-
- XF86Setup is the graphical X server configuration utility for XFree86
- X server. It is easier than traditional xf86config. You can select a
- keyboard layout easily with this tool.
-
- Ther are many choices of keyboard switch key to select. The default is
- LeftAlt+RightShift switch to Thai and LeftAlt+LeftShift switch to US.
- You can type Thai characters in any applications which support
- ISO-8859-1 character set, but don't forget to use Thai fonts with
- those applications too.
-
- I found that pre-configured keymaps that came with XFree86-3.2 is not
- correct. You may not be able to type THO THUNG which located at " 5
- key " . To fix this problem, you should add the line
-
-
- key <AE05> { [], [ paragraph, ocircumflex ] };
-
-
-
-
- in the file /usr/X11R6/lib/X11/xkb/symbols/th as the example.
-
-
- .................
- key <AE03> { [], [ minus, ograve ] };
- key <AE04> { [], [ Agrave, oacute ] };
- key <AE05> { [], [ paragraph, ocircumflex ] };
- key <AE06> { [], [ Ooblique, Ugrave ] };
- key <AE07> { [], [ Odiaeresis, ssharp ] };
- .................
-
-
-
-
- You can not type SORUSI also. Please change the line from
-
-
- key <AC08> { [], [ Ograve, eacute ] };
-
-
-
-
- to
-
-
- key <AC08> { [], [ Ograve, Eacute ] };
-
-
-
-
- Note that eacute is equal to MAITHO and Eacute is equal to SORUSI.
-
- There are also XKB extension utilities such as setxkbmap, xkbcomp,
- etc. Please see man-page for more information. I recommend to use
- xkbvled. The leds will be on when you are using Thai keyboard so you
- can know your keyboard's status.
- The following is part of XF86Config file about keyboard section. If
- you want to configure the keyboard by hand, change the content of
- /usr/X11R6/lib/X11/XF86Config as an example below. This configuration
- uses the default toggle key.
-
-
- Section "Keyboard"
- Protocol "Standard"
- AutoRepeat 500 5
- LeftAlt Meta
- RightAlt Meta
- ScrollLock Compose
- RightCtl Control
- # XkbDisable
- XkbKeycodes "xfree86"
- XkbTypes "default"
- XkbCompat "default"
- XkbSymbols "us(pc101)"
- XkbGeometry "pc"
- XkbRules "xfree86"
- XkbModel "pc101"
- XkbLayout "th"
- EndSection
-
-
-
-
- If you use XKB extension, Thai keyboard mapping with xmodmap may not
- work. See XF86Config man-page for mor information.
-
-
- 2.2.2.2. Thai keyboard layout with xmodmap
-
- You can use the utility xmodmap to map Thai keyboard. Normally
- xmodmap is used to load a keyboard configured file. For most Linux
- distributions, when you start X window with startx, X server will find
- .Xmodmap in /usr/X11R6/lib/X11/xinit/ first. If .Xmodmap does not
- exist, X server will find .Xmodmap in your home directory. Please see
- the content of /usr/X11R6/lib/X11/xinit/xinitrc.
-
- The following is the sample of .Xmodmap for Thai Kedmanee keyboard
- layout.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- !
- ! Linux/XFree86 Thai Kedmanee layout (based on US keyboard)
- ! Use ScrollLock to switch to Thai keyboard.
- ! This file will work with XFree86 only.
- !
-
- keycode 0x09 = Escape
- keycode 0x43 = F1
- keycode 0x44 = F2
- keycode 0x45 = F3
- keycode 0x46 = F4
- keycode 0x47 = F5
- keycode 0x48 = F6
- keycode 0x49 = F7
- keycode 0x4A = F8
- keycode 0x4B = F9
- keycode 0x4C = F10
- keycode 0x5F = F11
- keycode 0x60 = F12
- keycode 0x6F = Print
- keycode 0x4E = Mode_switch XF86ModeLock
- keycode 0x6E = Pause
- keycode 0x31 = grave asciitilde minus percent
- keycode 0x0A = 1 exclam 0x0e5 plus
- keycode 0x0B = 2 at slash 0x0f1
- keycode 0x0C = 3 numbersign underscore 0x0f2
- keycode 0x0D = 4 dollar 0x0c0 0x0f3
- keycode 0x0E = 5 percent 0x0b6 0x0f4
- keycode 0x0F = 6 asciicircum 0x0d8 0x0d9
- keycode 0x10 = 7 ampersand 0x0d6 0x0df
- keycode 0x11 = 8 asterisk 0x0a4 0x0f5
- keycode 0x12 = 9 parenleft 0x0b5 0x0f6
- keycode 0x13 = 0 parenright 0x0a8 0x0f7
- keycode 0x14 = minus underscore 0x0a2 0x0f8
- keycode 0x15 = equal plus 0x0aa 0x0f9
- keycode 0x33 = backslash bar 0x0a3 0x0a5
- keycode 0x16 = BackSpace
- keycode 0x6A = Insert
- keycode 0x61 = Home
- keycode 0x63 = Prior
- keycode 0x4D = Num_Lock
- keycode 0x70 = KP_Divide
- keycode 0x3F = KP_Multiply
- keycode 0x52 = KP_Subtract
- keycode 0x17 = Tab
- keycode 0x18 = q Q 0x0e6 0x0f0
- keycode 0x19 = w W 0x0e4 quotedbl
- keycode 0x1A = e E 0x0d3 0x0ae
- keycode 0x1B = r R 0x0be 0x0b1
- keycode 0x1C = t T 0x0d0 0x0b8
- keycode 0x1D = y Y 0x0d1 0x0ed
- keycode 0x1E = u U 0x0d5 0x0ea
- keycode 0x1F = i I 0x0c3 0x0b3
- keycode 0x20 = o O 0x0b9 0x0cf
- keycode 0x21 = p P 0x0c2 0x0ad
- keycode 0x22 = bracketleft braceleft 0x0ba 0x0b0
- keycode 0x23 = bracketright braceright 0x0c5 comma
- keycode 0x24 = Return
- keycode 0x6B = Delete
- keycode 0x67 = End
- keycode 0x69 = Next
- keycode 0x4F = KP_7
- keycode 0x50 = KP_8
- keycode 0x51 = KP_9
- keycode 0x56 = KP_Add
- keycode 0x42 = Caps_Lock
- keycode 0x26 = a A 0x0bf 0x0c4
- keycode 0x27 = s S 0x0cb 0c0a6
- keycode 0x28 = d D 0x0a1 0x0af
- keycode 0x29 = f F 0x0b4 0x0e2
- keycode 0x2A = g G 0x0e0 0x0ac
- keycode 0x2B = h H 0x0e9 0x0e7
- keycode 0x2C = j J 0x0e8 0x0eb
- keycode 0x2D = k K 0x0d2 0x0c9
- keycode 0x2E = l L 0x0ca 0x0c8
- keycode 0x2F = semicolon colon 0x0c7 0x0ab
- keycode 0x30 = apostrophe quotedbl 0x0a7 period
- keycode 0x53 = KP_4
- keycode 0x54 = KP_5
- keycode 0x55 = KP_6
- keycode 0x32 = Shift_L
- keycode 0x34 = z Z 0x0bc parenleft
- keycode 0x35 = x X 0x0bb parenright
- keycode 0x36 = c C 0x0e1 0x0a9
- keycode 0x37 = v V 0x0cd 0x0ce
- keycode 0x38 = b B 0x0d4 0x0da
- keycode 0x39 = n N 0x0d7 0x0ec
- keycode 0x3A = m M 0x0b7 question
- keycode 0x3B = comma less 0x0c1 0x0b2
- keycode 0x3C = period greater 0x0e3 0x0cc
- keycode 0x3D = slash question 0x0bd 0x0c6
- keycode 0x3E = Shift_R
- keycode 0x62 = Up
- keycode 0x57 = KP_1
- keycode 0x58 = KP_2
- keycode 0x59 = KP_3
- keycode 0x6C = KP_Enter
- keycode 0x25 = Control_L
- keycode 0x40 = Alt_L Meta_L
- keycode 0x41 = space
- keycode 0x71 = Alt_R Meta_R
- keycode 0x6D = Control_R
- keycode 0x64 = Left
- keycode 0x68 = Down
- keycode 0x66 = Right
- keycode 0x5A = KP_0
- keycode 0x5B = KP_Decimal
-
- clear Shift
- clear Lock
- clear Control
- clear Mod1
- clear Mod2
- clear Mod3
- clear Mod4
- clear Mod5
-
- add Shift = Shift_L Shift_R
- add Lock = Caps_Lock
- add Control = Control_L Control_R
- add Mod1 = Alt_L Alt_R
- add Mod2 = Mode_switch
-
-
-
-
- Just put .Xmodmap in your home directory will be OK. When you start X
- window, X server will load this file.
-
- You can also load .Xmodmap from command line.
-
-
- %xmodmap ~/.Xmodmap
-
-
-
-
-
- In above .Xmodmap file, US/Thai switch key is assigned to keycode 0x4E
- (78), Scroll Lock key, with the statement
-
-
- ______________________________________________________________________
- keycode 0x4E = Mode_switch XF86ModeLock
- ______________________________________________________________________
-
-
-
-
- XF86ModeLock is the special keysym for XFree86 X server. If you don't
- add this keysym, you have to hold the scroll lock key while you are
- typing Thai characters. Note that if you use commercial X server, some
- keycodes are different. You may have to map keyboard by yourself. See
- man-pages of X and xev for further information.
-
-
- Note: If you are using XFree86 version 3.1.2D or later, you need to
- add the line XkbDisable in keyboard section of XF86Config file. You
- may config the keyboard section like the following sample.
-
-
- Section "Keyboard"
- Protocol "Standard"
- AutoRepeat 500 5
- LeftAlt Meta
- RightAlt ModeShift
- ScrollLock ModeLock
- RightCtl Compose
- XkbDisable
- EndSection
-
-
-
-
-
-
-
-
- 3. Applications with Thai language
-
- This is the tricky part. Most applications support ISO-8859-1
- character set. For example, emacs can display ISO-8859-1 character. If
- we set emacs to display ISO-8859-1 and use Thai font, you can edit
- Thai document with emacs. But this is not a good policy. You should
- avoid using this trick as possible. What we need is Thai locale or
- Thai supported applications to manage these things.
-
-
- To make X window application displays Thai font, you should run the
- application with -fn option. For example,
-
-
- %xedit -fn thai8x16
-
-
-
-
- Note that thai8x16 is just a one of Thai font names. You can see all
- available fonts by command xlfonts. If you don't want to fill -fn
- option every time you run application. You should set Thai font in
- your ~/.Xdefaults or ~/.Xresources like this
-
-
- XTerm*font: thai8x16
-
-
-
-
-
-
- 3.1. Some X applications and Thai language
-
-
-
- 3.1.1. txterm
-
- txterm is Thai version of xterm. There are several programs running
- under xterm such as shell, pine, vi, less, etc. We can type Thai
- characters without any problems with txterm. Txterm also provides its
- own Thai input method by pressing " F1 " key. Txterm will use fonts
- thai9x13 as default Thai font. You can change this by add -fn option.
-
- You can get txterm from Thaigate <http://thaigate.nacsis.ac.jp> or
- ZzzThai
- <ftp://ftp.fedu.uec.ac.jp/pub/thai/UEC/ZzzThai/Software/Linux>.
-
-
-
- bash shell :
- Normally, shell accepts only ASCII character set. To type Thai
- characters in shell command line, you should set environment
- LC_CTYPE to iso_8859_1.
-
- I don't set LC_CTYPE environment variable to iso_8859_1 because
- this environment variable will effect other applications too.
- With bash shell, you can specify which environment variable to
- be passed to the application. For example, I can make a fake
- Thai X terminal with this syntax.
-
-
- LC_CTYPE=iso_8859_1 xterm -fn thai8x16
-
-
-
-
- This xterm display Thai characters well, but not good for typing
- Thai characters. I strongly recommend you to use txterm.
-
-
- ls :
- If you name a filename in Thai. Issue the command as
-
-
- ls -N
-
-
-
-
-
- You may set alias in ~/.bashrc or ~/.cshrc, so you can type ls
- without option. If you don't use ls with -N option, you may see
- Thai filename as ?????.
-
-
- 3.1.2. Emacs, Mule
-
- Mule stands for " Multilingual Enhancement to GNU Emacs " . It has the
- same functions as emacs and supports many languages. Mule provides its
- own input method, so you don't need any configuration for typing Thai.
- You needs only Thai fonts for mule which you can get from, ZzzThai
- <ftp://ftp.fedu.uec.ac.jp/pub/thai/UEC/ZzzThai/Software/Linux/fonts/>
- or Etl site <ftp://etlport.etl.go.jp/pub/mule/fonts/ETL/>. These Thai
- fonts are fixed width fonts.
-
- You need some configuration for mule. Puts the following lines in your
- .emacs.
-
-
- ;;
- ;; Thai System, add in .emacs
- ;;
- (set-file-coding-system-for-read '*tis620*)
- (set-default-file-coding-system '*tis620*)
- (set-display-coding-system '*tis620*)
- (set-keyboard-coding-system '*tis620*)
- (setq-deafault quail-current-package (assoc "thai" quail-package-alist))
-
-
-
-
- Add the following lines in .Xdefaults.
-
-
- !
- ! Emacs, Mule - Font menu
- !
- Emacs*FontSetList: thai14, thai16, thai24
- Emacs*FontSet-thai14:\
- -etl-fixed-medium-r-normal--14-140-72-72-m-70-tis620.2529-1
- Emacs*FontSet-thai16:\
- -etl-fixed-medium-r-normal--16-160-72-72-m-80-tis620.2529-1
- Emacs*FontSet-thai24:\
- -etl-fixed-medium-r-normal--24-500-72-72-m-120-tis620.2529-1
-
-
-
-
- When you hold shift key and press left mouse's button, you can select
- Thai fonts to display in mule window. To type Thai characters, press
- " Ctrl + ] " . To type English, press " Ctrl + ] " again.
-
- You can get mule from ElectroTechnical Laboratory(ETL)
- <ftp://etlport.etl.go.jp/pub/mule/>
-
-
- 3.1.3. vi
-
- Vi should be run on txterm.
-
-
- 3.1.4. pine
-
- In the past, we could not send 8-bit characters through E-mail. Now,
- although mail transfer agent can handle 8-bit characters but some old
- mail transfer agent can not. We can send Thai e-mail by using e-mail
- application that supports MIME (Multipurpose Internet Mail Extensions)
- E-mail applications that support MIME are pine, elm, Netscape mail,
- etc.
-
-
- Put the following definition in your ~/.pinerc file:
-
-
- character-set=ISO-8859-1
-
-
-
-
- This can also be set via the Setup option in pine window. You can find
- it under Config. You can read Thai news from pine, too.
-
- Pine should be run in txterm.
-
-
- 3.1.5. Netscape
-
- If you have Thai fonts in your system. Just set Thai font from
- preference. Thai fonts will appear in User defined area. See
- http://www.fedu.uec.ac.jp/ZzzThai/unix
- <http://www.fedu.uec.ac.jp/ZzzThai/unix> for setting Thai language on
- Netscape.
-
- Some movement about Thai Mozilla project at
- http://members.xoom.com/inThai/mozthai.html
- <http://members.xoom.com/inThai/mozthai.html>.
-
-
- 3.1.6. Ss, Simple thai word Separator
-
- ss is a dictionary based Thai word separation program similar to
- cttex. It can be used to insert a configurable string between Thai
- words. It can also show words that cannot be found in the dictionary.
- More words can be added to the dictionary. Developed by Mr.Teera
- Kittichareonpot.
-
- We can use this program to insert < WBR > tag between Thai words in
- html file. Browser will display Thai homepage better than normal html
- document.
-
-
- 3.1.7. Xzthai, X keyboard configurator + simple editor
-
- Xzthai, this is the Tcl/Tk application for mapping Thai keyboard on
- any keyboard with graphical user interface. Also provides simple
- editor and keyboard layout figure. It actually uses xmodmap program in
- background to map Thai keyboard. This may be useful for commercial X
- server and X server on UNIX.
-
-
- 3.2. Printing Thai document
-
- Thai2ps is used to convert plain text file to postscript file.You can
- use ghostscript(gs) to print your Thai document. For better quality
- document, you have to use (La)TeX.
-
-
- 3.2.1. Latex and Thai language
-
- Dr. Manop Wongsaisuwan first tried to use Thai language with latex. He
- wrote some perl script as filter for latex source code that contains
- Thai language. Then pass the result to latex. Mr. Vuthichai
- Ampornaramvech used this concept and wrote a program in C language,
- cttex, to handle this. It runs faster and makes Thai word segmentation
- based on dictionary. Cttex also fixes the position of Thai characters
- in word, so SARA and WANNAYUK will be placed in the beautiful
- position.
- You can find Thai latex filter from
- http://thaigate.nacsis.ac.jp/files/ttex.html
- <http://thaigate.nacsis.ac.jp/files/ttex.html>.
-
-
- 3.2.2. Latex's configuration for Thai language
-
- You must have latex installed in your computer. First, download Thai
- postscript (Type1) fonts, tfm fonts and Thai style file. These fonts
- are needed by Latex. This is the list of files you should download.
-
-
- tfm fonts:
- dbtt.tfm dbttb.tfm dbttbi.tfm dbtti.tfm
- postscript fonts:
- dbtt.pfa dbttb.pfa dbttbi.pfa dbtti.pfa
- style files:
- thai.sty sakka.sty
- Thai Latex filter:
- cttex
- Sample Latex file:
- ttex.ttex test.ttex
-
-
-
-
-
- There is latex's directory at /usr/lib/texmf/texmf/ (RedHat 5.0). I
- will call /usr/lib/texmf/texmf/ as " $texroot " . We will concentrate
- at $texroot/texmf/ directory. In $texroot/texmf/ directory, there are
- many files about tex's configuration. You have to edit files in dvips,
- fonts, tex subdirectories.
-
- Add the following lines to $texroot/texmf/dvips/misc/psfonts.map
-
-
- dbtt DBThaiText <dbtt.pfa
- dbttb DBThaiTextBold <dbttb.pfa
- dbttbi DBThaiTextBoldItalic <dbttbi.pfa
- dbtti DBThaiTextItalic <dbtti.pfa
-
-
-
-
-
- Make a new directories and copy files to the appropriate directories.
-
-
- %mkdir /usr/lib/texmf/texmf/fonts/tfm/public/thai
- %mkdir /usr/lib/texmf/texmf/fonts/type1/public/thai
- %mkdir /usr/lib/texmf/texmf/tex/generic/thai
- %cp *.tfm /usr/lib/texmf/texmf/fonts/tfm/public/thai
- %cp *.pfa /usr/lib/texmf/texmf/fonts/type1/public/thai
- %cp *.sty /usr/lib/texmf/texmf/tex/generic/thai
-
-
-
-
-
- Run texhash or MakeTeXls-R(in some system) to update Tex database.
-
-
- %/usr/bin/texhash
- texhash: updating /usr/lib/texmf/texmf/ls-R ...
- texhash: Done.
-
- 3.2.3. Use Thai LaTeX filter
-
- We can use cttex as filter like this,
-
-
- %cttex < ttex.ttex > ttex.tex
- C-TTeX $Revivsion: 1.15 $
- Usage : cttex [cutcode] < infile > outfile
- Usage : cutcode=0 forces operation in HTML mode.
- Build-in dictionary size: 9945 words
- 343
- Done
- %latex ttex.tex
- ...
- %xdvi ttex.dvi
-
-
-
-
- You can convert dvi file to postscript file by,
-
-
- %dvips -o ttex.ps ttex.dvi
-
-
-
-
- Finally, you can print ttex.ps by using gs or lpr. You must configure
- printer before printing. See man-pages of printcap, gs, lpr for more
- information.
-
-
- 3.2.4. Editing LaTex source file
-
- For new latex user, lyx is helpful. But I recommend to use mule to
- edit Thai latex source file because mule supports Thai language and it
- is a powerful editor. You may take a look a Thai Latex tutorial
- <http://www.fedu.uec.ac.jp/ZzzThai/Linux/ttex>.
-
-
-
- 3.3. X Application Resources
-
- Because Xt based applications allow user to configure the applications
- by resources. We can make the menu or label to be Thai language.
-
- For example, if you want xman to display Thai labels. You may add
- these lines in your .Xdefaults
-
-
- ......
- !! Xman section
- Xman*Font: thai8x16
- Xman*helpButton.Label: ™Ë«¬
- Xman*quitButton.Label: ÕÕ°
- Xman*manpageButton.Label: §ŸË¡◊Õ°“√„™È
- ......
-
-
-
-
- You can use the same idea to set window manager to be more Thai
- environment too.
-
-
-
- 3.4. Thai Extension for Linux (TE)
-
- Thai Extension for Linux is a installation package comes with
- applicaions and Thai fonts. You don't have to configure Linux system
- and applications by yourself. Let TE do configuration task for you.
- After installation, you can use Thai language suddenly. Get TE from
- ftp://fedu.uec.ac.jp/pub/thai/UEC/ZzzThai/Software/Linux/
- <ftp://fedu.uec.ac.jp/pub/thai/UEC/ZzzThai/Software/Linux/>
-
-
-
- 4. References and FTP sites
-
-
- 4.1. Other documents of relevance
-
- The HOWTOs ought to be available from all mirrors of sunsite.unc.edu.
-
- The Linux Danish/International HOWTO by Niels Kristian Bech Jensen
-
- The Linux Cyrillic HOWTO by Alexander L. Belikoff
-
- The Keystroke mini-HOWTO by Zenon Fortuna.
-
- The Locales mini-HOWTO by Peeter Joot. (This one is mainly for
- developers.)
-
- The ISO-8859-1 FAQ and Programming for Internationalization FAQ (plus
- much more) by Michael Gschwind is available from his homepage
- <http://www.vlsivie.tuwien.ac.at/mike/i18n.html>.
-
-
- 4.2. Thai related stuffs
-
- " NACSIS R& D Thai Project Page " ,http://thaigate.nacsis.ac.jp
- <http://thaigate.nacsis.ac.jp>
-
- ∑ Information about Thai computing.
-
- ∑ Discussion groups in Thai language, such as thai-l (Thai Mailing
- list), Thai news, etc.
-
- ∑ Thai references and Thai softwares.
-
- ∑ Thai Latex filter.
-
- " ZzzThai Project " , http://www.fedu.uec.ac.jp
- <http://www.fedu.uec.ac.jp/ZzzThai/>
-
- ∑ Most softwares and Thai fonts introduced here can download from
- ZzzThai.
-
- ∑ Describe how to use Thai with 3 main computer platforms, UNIX like,
- Windows and Mac.
-
- ∑ Linux information at http://www.fedu.uec.ac.jp/ZzzThai/Linux
- <http://www.fedu.uec.ac.jp/ZzzThai/Linux>, TE, Thai LaTeX tutorial,
- etc.
-
- ∑ By The group of students at The University of Electro-
- Communications, Tokyo.
-
- " Vuthichai's Page " , http://www.ctrl.titech.ac.jp:80/~vuthi/
- <http://www.ctrl.titech.ac.jp:80/~vuthi/>
-
-
- ∑ Information about Thai computing by Mr. Vuthichai Ampornaramveth.
-
- " An annotated reference to the Thai implementations " ,
- http://www.inet.co.th/cyberclub/trin/thairef/
- <http://www.inet.co.th/cyberclub/trin/thairef/>
-
- ∑ Information about Thai character standard.
-
- ∑ By Mr.Trin Tantsetthi.
-
- " X window and Thai language " , http://members.xoom.com.cwg.x11th/
- <http://members.xoom.com/cwg/x11th/>
-
- ∑ By Mr.Rawat S.Pirom
-
- " SchoolNet Internet Sever " , http://www.school.net.th/linux-sis/
- <http://www.school.net.th/linux-sis/>
-
- ∑ Using Linux in School, Thailand.
-
- ∑ By NECTEC <http://www.nectec.or.th> (National Electronics and
- Computer Technology Center).
-
- " Thai Open Source Development " , http://members.xoom.com/inThai
- <http://members.xoom.com/inThai>
-
- ∑ Mozilla Thai enabling.
-
- ∑ Open source Thai softwares and Libraries.
-
- ∑ By Mr.Samphan Raruenrom
-
- " Linux Thai Project " , http://www.geocities.com/SiliconValley/8302
- <http://www.geocities.com/SiliconValley/8302>
-
- ∑ Information about Linux in Thai language.
-
- ∑ By Kaiwal Development Team.
-
- " ThaiLinux unofficial Webboard " ,
- http://lulu.mptc.eng.cmu.ac.th/HyperNews/get/ThaiLinux.html
- <http://lulu.mptc.eng.cmu.ac.th/HyperNews/get/ThaiLinux.html>
-
- ∑ Questions and answers about Linux in Thai language.
-
- ∑ By Mr.Pruet Boonma
-
- " Thai Linux installation project " ,
- http://www.geocities.com/Tokyo/Bay/4521/
- <http://www.geocities.com/Tokyo/Bay/4521/>
-
- ∑ Installation guide in Thai language
-
-
- 4.3. FTP and Web sites
-
-
- Most softwares and Thai fonts which introdued in this howto.
-
- ∑ ftp://ftp.fedu.uec.ac.jp/pub/thai/UEC/ZzzThai/Software/Linux
- <ftp://ftp.fedu.uec.ac.jp/pub/thai/UEC/ZzzThai/Software/Linux>
-
- ∑ http://thaigate.nacsis.ac.jp/files/index.html
- <http://thaigate.nacsis.ac.jp/files/index.html>
-
-
- ∑ http://www.nectec.or.th/pub/software/i18n/thai
- <http://www.nectec.or.th/pub/software/i18n/thai>
-
- Mule
-
- ∑ ftp://etlport.etl.go.jp/pub/mule <ftp://etlport.etl.go.jp/pub/mule>
-
- Ss
-
- ∑ http://members.xoom.com/theera/ss/
- <http://members.xoom.com/theera/ss/>
-
- SunSite <ftp://sunsite.unc.edu/pub/linux/> and mirrors. doc/howto has
- the above mentioned HOWTOs. utils/nls and subdirectories contain files
- related to National Language Support. Developers should take a look
- at locale-tutorial-0.8.txt.gz, locale-pack-0.8.tar.gz and cat-
- pack.tar.gz.
-
- The GNU archives <ftp://prep.ai.mit.edu/pub/gnu/> has the recode
- package for character table conversion, the ABOUT-NLS file and the
- gettext package for locale support of some GNU applications and (of
- course) the latest versions of GNU emacs.
-
-
-
-
-
- 5. Acknowledgments and Copyright
-
- Some parts of this HOWTO comes from The Linux Danish/International
- HOWTO by Thomas Petersen, petersen@post1.tele.dk (the original author)
- and Niels Kristian Bech Jensen, nkbj@image.dk.
-
- Thank you to Phaisarn Techajaruwong for building Thai fonts and
- valuable discussion.
-
- Thank you to Thai students at The University of Electro-Communications
- and Mr. Vuthichai Ampornaramveth for every help.
-
- This HOWTO is copyrighted by Poonlap Veeratanabutr, poon-
- v@fedu.uec.ac.jp. It is distributed as other Linux HOWTOs under the
- terms described below.
-
- Linux HOWTO documents may be reproduced and distributed in whole or in
- part, in any medium physical or electronic, as long as this copyright
- notice is retained on all copies. Commercial redistribution is allowed
- and encouraged; however, the authors would like to be notified of any
- such distributions.
-
- All translations, derivative works, or aggregate works incorporating
- any Linux HOWTO documents must be covered under this copyright notice.
- That is, you may not produce a derivative work from a HOWTO and impose
- additional restrictions on its distribution. Exceptions to these rules
- may be granted under certain conditions; please contact the Linux
- HOWTO coordinator at the address given below.
-
- If you have questions, please contact Tim Bynum, the Linux HOWTO
- coordinator, at linux-howto@sunsite.unc.edu via email.
-
-
-
-
-
-
-
-
-