70
|
1 ;; Quail packages for inputting Thai characters.
|
|
2 ;; Copyright (C) 1992 Free Software Foundation, Inc.
|
|
3 ;; This file is part of Mule (MULtilingual Enhancement of GNU Emacs).
|
|
4
|
|
5 ;; Mule is free software distributed in the form of patches to GNU Emacs.
|
|
6 ;; You can redistribute it and/or modify
|
|
7 ;; it under the terms of the GNU General Public License as published by
|
|
8 ;; the Free Software Foundation; either version 1, or (at your option)
|
|
9 ;; any later version.
|
|
10
|
|
11 ;; Mule is distributed in the hope that it will be useful,
|
|
12 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
13 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
14 ;; GNU General Public License for more details.
|
|
15
|
|
16 ;; You should have received a copy of the GNU General Public License
|
|
17 ;; along with GNU Emacs; see the file COPYING. If not, write to
|
|
18 ;; the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
|
|
19
|
|
20 ;;; 93.2.15 modified for Mule Ver.0.9.7.1 by K.Handa <handa@etl.go.jp>
|
|
21 ;;; Completely re-written.
|
|
22 ;;; 93.8.5 modified for Mule Ver.1.1 by K.Handa <handa@etl.go.jp>
|
|
23 ;;; Bug in handling '0,TQi1(B' fixed.
|
|
24
|
|
25 (require 'quail)
|
|
26 (require 'thai)
|
|
27
|
|
28 (quail-define-package "thai" "Thai" t "TSCII encoding
|
|
29 ,TE(B# /,Tq(B _,Tr(B ,T@s(B ,T6t(B ,TXY(B ,TV0Qi1(B ,T$u(B ,T5v(B ,T(w(B ,T"x(B ,T*y(B ,T_o(B ,T#%(B
|
|
30 ,Tfp(B ,Td(B\" ,TS.(B ,T>1(B ,TP8(B ,TQm(B ,TUj(B ,TC3(B ,T9O(B ,TB-(B ,T:0(B ,TE(B,
|
|
31 ,T?D(B ,TK&(B ,T!/(B ,T4b(B ,T`,(B ,Tig(B ,Thk(B ,TRI(B ,TJH(B ,TG+(B ,T'F(B
|
|
32 ,T<(B( ,T;(B) ,Ta)(B ,TMN(B ,TTZ(B ,TWl(B 0,T7n1(B ,TA2(B ,TcL(B ,T=(B?
|
|
33
|
|
34 The difference from the ordinal Thai keyboard:
|
|
35 ',T_(B' and ',To(B' are assigned to '\\' and '|' respectively,
|
|
36 ',T#(B' and ',T%(B' are assigned to '`' and '~' respectively,
|
|
37 Don't know where to assign characters ',Tz(B' and ',T{(B'." nil t t)
|
|
38
|
|
39 (eval-when-compile
|
|
40
|
|
41 (defconst quail-thai-C-map (list 'keymap (vector 'quail-thai-exact-char)))
|
|
42 (defconst quail-thai-CV-map (list 'keymap (vector 'quail-thai-compose)))
|
|
43 (defconst quail-thai-T-map (list 'keymap (vector 'quail-thai-compose)))
|
|
44
|
|
45 )
|
|
46
|
|
47 (defun quail-fetch-thai-map (ch)
|
|
48 (aref (lookup-key (quail-map) "\0") ch))
|
|
49
|
|
50 (defun quail-thai-compose ()
|
|
51 (interactive)
|
|
52 (compose-string
|
|
53 (mapconcat 'quail-fetch-thai-map quail-current-key "")))
|
|
54
|
|
55 (defun quail-thai-exact-char ()
|
|
56 (interactive)
|
|
57 (quail-fetch-thai-map quail-last-char))
|
|
58
|
|
59 (eval-when-compile
|
|
60
|
|
61 (defun quail-defrule-thai (ch str)
|
|
62 (let ((vector-map (lookup-key (quail-map) "\0")))
|
|
63 (if (null vector-map)
|
|
64 (progn
|
|
65 (setq vector-map (make-vector 127 0))
|
|
66 (define-key (quail-map) "\0" vector-map)))
|
|
67 (aset vector-map ch str))
|
|
68 (let* ((chstr (char-to-string ch))
|
|
69 (ch-thai (string-to-char str))
|
|
70 (prop (cdr (assq ch-thai *thai-characters*)))) ;93.8.5 by K.Handa
|
|
71 (cond ((eq prop 'consonant)
|
|
72 (quail-defrule chstr 'quail-thai-C-prefix))
|
|
73 ((or (eq prop 'vowel-upper) (eq prop 'vowel-lower))
|
|
74 (quail-defrule chstr str)
|
|
75 (define-key quail-thai-C-map chstr 'quail-thai-CV-prefix))
|
|
76 ((eq prop 'tone)
|
|
77 (quail-defrule chstr str)
|
|
78 (define-key quail-thai-C-map chstr 'quail-thai-T-prefix)
|
|
79 (define-key quail-thai-CV-map chstr 'quail-thai-T-prefix))
|
|
80 ((eq prop 'vowel-upper-tone)
|
|
81 (quail-defrule chstr str)
|
|
82 (define-key quail-thai-C-map chstr 'quail-thai-T-prefix))
|
|
83 (t
|
|
84 (quail-defrule chstr str))))
|
|
85 nil)
|
|
86
|
|
87 (put 'quail-defrule-thai 'byte-hunk-handler 'eval)
|
|
88
|
|
89 (defun quail-setup-constant (sym val))
|
|
90 (defun quail-setup-constant-handler (form)
|
|
91 (list 'defconst
|
|
92 (eval (nth 1 form))
|
|
93 (list 'quote (symbol-value (eval (nth 1 form))))))
|
|
94 (put 'quail-setup-constant 'byte-hunk-handler 'quail-setup-constant-handler)
|
|
95
|
|
96 )
|
|
97
|
|
98 (quail-defrule-thai ?1 ",TE(B")
|
|
99 (quail-defrule-thai ?! "#")
|
|
100 (quail-defrule-thai ?2 "/")
|
|
101 (quail-defrule-thai ?@ ",Tq(B")
|
|
102 (quail-defrule-thai ?3 "_")
|
|
103 (quail-defrule-thai ?# ",Tr(B")
|
|
104 (quail-defrule-thai ?4 ",T@(B")
|
|
105 (quail-defrule-thai ?$ ",Ts(B")
|
|
106 (quail-defrule-thai ?5 ",T6(B")
|
|
107 (quail-defrule-thai ?% ",Tt(B")
|
|
108 (quail-defrule-thai ?6 ",TX(B")
|
|
109 (quail-defrule-thai ?^ ",TY(B")
|
|
110 (quail-defrule-thai ?7 ",TV(B")
|
|
111 (quail-defrule-thai ?& "0,TQi1(B")
|
|
112 (quail-defrule-thai ?8 ",T$(B")
|
|
113 (quail-defrule-thai ?* ",Tu(B")
|
|
114 (quail-defrule-thai ?9 ",T5(B")
|
|
115 (quail-defrule-thai ?\( ",Tv(B")
|
|
116 (quail-defrule-thai ?0 ",T((B")
|
|
117 (quail-defrule-thai ?\) ",Tw(B")
|
|
118 (quail-defrule-thai ?- ",T"(B")
|
|
119 (quail-defrule-thai ?_ ",Tx(B")
|
|
120 (quail-defrule-thai ?= ",T*(B")
|
|
121 (quail-defrule-thai ?+ ",Ty(B")
|
|
122 (quail-defrule-thai ?\\ ",T_(B")
|
|
123 (quail-defrule-thai ?| ",To(B")
|
|
124 (quail-defrule-thai ?` ",T#(B")
|
|
125 (quail-defrule-thai ?~ ",T%(B")
|
|
126
|
|
127 (quail-defrule-thai ?q ",Tf(B")
|
|
128 (quail-defrule-thai ?Q ",Tp(B")
|
|
129 (quail-defrule-thai ?w ",Td(B")
|
|
130 (quail-defrule-thai ?W "\"")
|
|
131 (quail-defrule-thai ?e ",TS(B")
|
|
132 (quail-defrule-thai ?E ",T.(B")
|
|
133 (quail-defrule-thai ?r ",T>(B")
|
|
134 (quail-defrule-thai ?R ",T1(B")
|
|
135 (quail-defrule-thai ?t ",TP(B")
|
|
136 (quail-defrule-thai ?T ",T8(B")
|
|
137 (quail-defrule-thai ?y ",TQ(B")
|
|
138 (quail-defrule-thai ?Y ",Tm(B")
|
|
139 (quail-defrule-thai ?u ",TU(B")
|
|
140 (quail-defrule-thai ?U ",Tj(B")
|
|
141 (quail-defrule-thai ?i ",TC(B")
|
|
142 (quail-defrule-thai ?I ",T3(B")
|
|
143 (quail-defrule-thai ?o ",T9(B")
|
|
144 (quail-defrule-thai ?O ",TO(B")
|
|
145 (quail-defrule-thai ?p ",TB(B")
|
|
146 (quail-defrule-thai ?P ",T-(B")
|
|
147 (quail-defrule-thai ?[ ",T:(B")
|
|
148 (quail-defrule-thai ?{ ",T0(B")
|
|
149 (quail-defrule-thai ?] ",TE(B")
|
|
150 (quail-defrule-thai ?} ",")
|
|
151
|
|
152 (quail-defrule-thai ?a ",T?(B")
|
|
153 (quail-defrule-thai ?A ",TD(B")
|
|
154 (quail-defrule-thai ?s ",TK(B")
|
|
155 (quail-defrule-thai ?S ",T&(B")
|
|
156 (quail-defrule-thai ?d ",T!(B")
|
|
157 (quail-defrule-thai ?D ",T/(B")
|
|
158 (quail-defrule-thai ?f ",T4(B")
|
|
159 (quail-defrule-thai ?F ",Tb(B")
|
|
160 (quail-defrule-thai ?g ",T`(B")
|
|
161 (quail-defrule-thai ?G ",T,(B")
|
|
162 (quail-defrule-thai ?h ",Ti(B")
|
|
163 (quail-defrule-thai ?H ",Tg(B")
|
|
164 (quail-defrule-thai ?j ",Th(B")
|
|
165 (quail-defrule-thai ?J ",Tk(B")
|
|
166 (quail-defrule-thai ?k ",TR(B")
|
|
167 (quail-defrule-thai ?K ",TI(B")
|
|
168 (quail-defrule-thai ?l ",TJ(B")
|
|
169 (quail-defrule-thai ?L ",TH(B")
|
|
170 (quail-defrule-thai ?\; ",TG(B")
|
|
171 (quail-defrule-thai ?: ",T+(B")
|
|
172 (quail-defrule-thai ?' ",T'(B")
|
|
173 (quail-defrule-thai ?\" ".")
|
|
174
|
|
175 (quail-defrule-thai ?z ",T<(B")
|
|
176 (quail-defrule-thai ?Z "(")
|
|
177 (quail-defrule-thai ?x ",T;(B")
|
|
178 (quail-defrule-thai ?X ")")
|
|
179 (quail-defrule-thai ?c ",Ta(B")
|
|
180 (quail-defrule-thai ?C ",T)(B")
|
|
181 (quail-defrule-thai ?v ",TM(B")
|
|
182 (quail-defrule-thai ?V ",TN(B")
|
|
183 (quail-defrule-thai ?b ",TT(B")
|
|
184 (quail-defrule-thai ?B ",TZ(B")
|
|
185 (quail-defrule-thai ?n ",TW(B")
|
|
186 (quail-defrule-thai ?N ",Tl(B")
|
|
187 (quail-defrule-thai ?m ",T7(B")
|
|
188 (quail-defrule-thai ?M ",Tn(B")
|
|
189 (quail-defrule-thai ?, ",TA(B")
|
|
190 (quail-defrule-thai ?< ",T2(B")
|
|
191 (quail-defrule-thai ?. ",Tc(B")
|
|
192 (quail-defrule-thai ?> ",TL(B")
|
|
193 (quail-defrule-thai ?/ ",T=(B")
|
|
194 (quail-defrule-thai ?\" ",TF(B")
|
|
195
|
|
196 (quail-setup-current-package)
|
|
197
|
|
198 (quail-setup-constant 'quail-thai-C-map quail-thai-C-map)
|
|
199 (quail-setup-constant 'quail-thai-CV-map quail-thai-CV-map)
|
|
200 (quail-setup-constant 'quail-thai-T-map quail-thai-T-map)
|
|
201
|
|
202 (fset 'quail-thai-C-prefix quail-thai-C-map)
|
|
203 (fset 'quail-thai-CV-prefix quail-thai-CV-map)
|
|
204 (fset 'quail-thai-T-prefix quail-thai-T-map)
|