comparison leim/quail/tibetan.el @ 26881:cd1cb9bf30e1

Rewritten for new composition.
author Kenichi Handa <handa@m17n.org>
date Wed, 15 Dec 1999 00:32:16 +0000
parents 63c9c2cc91b7
children a03c00e0dc04
comparison
equal deleted inserted replaced
26880:98564c5250e4 26881:cd1cb9bf30e1
30 ;; (Only Ext. Wylie input) 30 ;; (Only Ext. Wylie input)
31 31
32 ;;; Code: 32 ;;; Code:
33 33
34 (require 'quail) 34 (require 'quail)
35 35 (require 'tibet-util)
36 ;;; 36
37 ;;; Functions for making some composite punctuations. 37 ;; Now quail-current-key is set to Tibetan-Roman transcription. We
38 ;;; 38 ;; set quail-current-str to the corresponding Tibetan string (composed
39 39 ;; if necessary). Both Wylie and TibKey input methods use this
40 (defun tibetan-quail-bzhi-shad (&rest ignore) 40 ;; function.
41 (quail-delete-region) 41
42 (quail-delete-overlays) 42 (defun quail-tibetan-update-translation (control-flag)
43 (insert (compose-chars ?$(7!>(B '(mr . ml) ?\x20 '(mr . ml) ?$(7!>(B)) 43 (if (numberp control-flag)
44 (throw 'quail-tag nil)) 44 ;; Non-composable-character typed.
45 45 (setq quail-current-str
46 (defun tibetan-quail-nyi-zla (&rest ignore) 46 (buffer-substring (overlay-start quail-overlay)
47 (quail-delete-region) 47 (overlay-end quail-overlay))
48 (quail-delete-overlays) 48 unread-command-events
49 (insert (compose-chars ?$(7#R(B '(mr . ml) ?$(7#S(B)) 49 (string-to-list
50 (throw 'quail-tag nil)) 50 (substring quail-current-key control-flag)))
51 51 ;; Special treatment of "-d..." and "-y...".
52 (defun tibetan-quail-nyi-zla-phur-shad (&rest ignore) 52 (if (string-match "^-[dy]" quail-current-key)
53 (quail-delete-region) 53 (setq quail-current-key (substring quail-current-key 1)))
54 (quail-delete-overlays) 54 (let ((str (tibetan-transcription-to-tibetan quail-current-key)))
55 (insert (compose-chars ?$(7#R(B '(mr . ml) ?$(7#S(B '(bc . tl) ?$(7!I(B)) 55 ;; If quail-current-key is for punctuations, it can't be
56 (throw 'quail-tag nil)) 56 ;; transcribed by tibetan-transcription-to-tibetan, thus STR
57 57 ;; contains ASCII string now. In that case, use the current
58 (defun tibetan-quail-nyi-zla-double (&rest ignore) 58 ;; characters set in quail-current-str.
59 (quail-delete-region) 59 (if (> (aref str 0) 255)
60 (quail-delete-overlays) 60 (setq quail-current-str (tibetan-compose-string str))
61 (insert (compose-chars ?$(7#R(B '(mr . ml) ?$(7#S(B '(mr . ml) ?$(7#S(B)) 61 (or quail-current-str
62 (throw 'quail-tag nil)) 62 (setq quail-current-str quail-current-key)))))
63 63 control-flag)
64 (defun tibetan-quail-nyi-zla-triple (&rest ignore) 64
65 (quail-delete-region) 65 ;;; Wylie transcription based input methods.
66 (quail-delete-overlays) 66
67 (insert (compose-chars ?$(7#R(B '(mr . ml) ?$(7#S(B '(mr . ml) ?$(7#S(B '(mr . ml) ?$(7#S(B)) 67 ;; Special alist for `$(7"A(B'. It must be treated as a subjoined
68 (throw 'quail-tag nil)) 68 ;; consonant if it follows a consonant.
69 69 (defconst tibetan-wylie-quote-alist '(("'" . ?$(7"A(B)))
70 ;;; 70
71 ;;; Setting-ups for Extended Wylie input. 71 ;; Special alist to avoid default stacking.
72 ;;; 72 (defconst tibetan-wylie-non-stacking-alist
73 73 '(("-d" . "$(7"2(B")
74 (defun quail-tibetan-input-wylie (key &rest ignore) 74 ("-y" . "$(7"B(B")))
75 (let (pc) 75
76 (quail-delete-region) 76 ;; Punctuations are not transcribed.
77 (quail-delete-overlays) 77
78 (setq pc (char-before (overlay-start quail-overlay)) 78 (defconst tibetan-wylie-punctuation-alist
79 quail-current-str (tibetan-composition pc key)) 79 '(("." . " ")
80 (if (not (bobp)) 80 (":" . "$(8"`(B")
81 (progn 81 (" " . "$(8!;(B")
82 (delete-char -1) 82 ("/" . "$(8!=(B")
83 (insert (aref quail-current-str 0)) 83 ("//" . "$(7!>(B")
84 (setq quail-current-str (substring quail-current-str 1)))) 84 ("////" . ["$(7!>(B $(7!>(B"])
85 (move-overlay quail-overlay (point) (point)) 85 ("$" . "$(8!?(B")
86 (insert quail-current-str) 86 ("/\"" . "$(8!@(B") ; Not defined in Ext. Wylie.
87 (throw 'quail-tag nil))) 87 ("&" . "$(8!@(B")
88 88 (";" . "$(8!A(B")
89 ("%" . "$(8!D(B")
90 ("!" . "$(7!8(B")
91 ("<" . "$(7!l(B")
92 (">" . "$(7!m(B")
93 ("@" . "$(7"f(B")
94 ("*" . ["$(7!4!5(B"])
95 ("#" . ["$(7!4!5!5(B"])
96 ("^" . "$(7!6(B")
97 ("0" . "$(7!P(B")
98 ("1" . "$(7!Q(B")
99 ("2" . "$(7!R(B")
100 ("3" . "$(7!S(B")
101 ("4" . "$(7!T(B")
102 ("5" . "$(7!U(B")
103 ("6" . "$(7!V(B")
104 ("7" . "$(7!W(B")
105 ("8" . "$(7!X(B")
106 ("9" . "$(7!Y(B")
107 ("-0" . "$(7!c(B")
108 ("-1" . "$(7!Z(B")
109 ("-2" . "$(7![(B")
110 ("-3" . "$(7!\(B")
111 ("-4" . "$(7!](B")
112 ("-5" . "$(7!^(B")
113 ("-6" . "$(7!_(B")
114 ("-7" . "$(7!`(B")
115 ("-8" . "$(7!a(B")
116 ("-9" . "$(7!b(B")
117 ("|" . "$(7!1!2!3!9!:!B!C!E!F!G!H!I!J!K!L!M!N!O!d!f!h!j!k!n!o(B")))
89 118
90 (quail-define-package "tibetan-wylie" "Tibetan" "TIBw" t 119 (quail-define-package "tibetan-wylie" "Tibetan" "TIBw" t
91 "Tibetan character input by Extended Wylie key assignment. 120 "Tibetan character input by Extended Wylie key assignment.
92 121
93 +-------------------------------------+ 122 +-------------------------------------+
94 |2$(7"!`#T(B1$(8!;(B k |2$(7""`#T(B1$(8!;(B kh |2$(7"#`#T(B1$(8!;(B g |2$(7"$`#T(B1$(8!;(B gh |2$(7"%`#T(B1$(8!;(B ng| $(7"S(B i $(8!=(B / 123 |$(7"!$(8!;(B k |$(7""$(8!;(B kh |$(7"#$(8!;(B g |$(7"$$(8!;(B gh |$(7"%$(8!;(B ng| $(7"S(B i $(8!=(B /
95 |2$(7"&`#T(B1$(8!;(B c |2$(7"'`#T(B1$(8!;(B ch |2$(7"(`#T(B1$(8!;(B j | |$(7"*$(8!;(B ny| $(7"U(B u $(7!>(B // 124 |$(7"&$(8!;(B c |$(7"'$(8!;(B ch |$(7"($(8!;(B j | |$(7"*$(8!;(B ny| $(7"U(B u $(7!>(B //
96 |$(7"+$(8!;(B T |$(7",$(8!;(B TH |$(7"-$(8!;(B D |$(7".$(8!;(B DH |$(7"/$(8!;(B N | $(7"[(B e 2$(7!>P(B P$(7!>(B1 //// 125 |$(7"+$(8!;(B T |$(7",$(8!;(B TH |$(7"-$(8!;(B D |$(7".$(8!;(B DH |$(7"/$(8!;(B N | $(7"[(B e $(7!>(B $(7!>(B ////
97 |$(7"0$(8!;(B t |$(7"1$(8!;(B th |$(7"2$(8!;(B d |$(7"3$(8!;(B dh |$(7"4$(8!;(B n | $(7"](B o $(7!A(B ; 126 |$(7"0$(8!;(B t |$(7"1$(8!;(B th |$(7"2$(8!;(B d |$(7"3$(8!;(B dh |$(7"4$(8!;(B n | $(7"](B o $(7!A(B ;
98 |$(7"5$(8!;(B p |$(7"6$(8!;(B ph |$(7"7$(8!;(B b |$(7"8$(8!;(B bh |$(7"9$(8!;(B m | $(7"\(B ai (ee, E) $(8!?(B $ 127 |$(7"5$(8!;(B p |$(7"6$(8!;(B ph |$(7"7$(8!;(B b |$(7"8$(8!;(B bh |$(7"9$(8!;(B m | $(7"\(B ai (ee, E) $(8!?(B $
99 |$(7":$(8!;(B ts|$(7";$(8!;(B tsh|$(7"<$(8!;(B dz |$(7"=$(8!;(B dzh|$(7">$(8!;(B w | $(7"^(B au (oo, O) $(8!@(B & 128 |$(7":$(8!;(B ts|$(7";$(8!;(B tsh|$(7"<$(8!;(B dz |$(7"=$(8!;(B dzh|$(7">$(8!;(B w | $(7"^(B au (oo, O) $(8!@(B &
100 |$(7"?$(8!;(B zh|$(7"@$(8!;(B z |$(7"A$(8!;(B ' | |$(7"B$(8!;(B y | $(7"a(B I 2$(7#RP#SP#S(B1 * 129 |$(7"?$(8!;(B zh|$(7"@$(8!;(B z |$(7"A$(8!;(B ' | |$(7"B$(8!;(B y | $(7"a(B I $(7#R#S#S(B *
101 |$(7"C$(8!;(B r |$(7"D$(8!;(B l |$(7"E$(8!;(B sh |$(7"F$(8!;(B SH |$(7"G$(8!;(B s | $(7"`(B : 2$(7#RP#SP#SP#S(B1 # 130 |$(7"C$(8!;(B r |$(7"D$(8!;(B l |$(7"E$(8!;(B sh |$(7"F$(8!;(B SH |$(7"G$(8!;(B s | $(7"`(B : $(7#R#S#S#S(B #
102 |$(7"H$(8!;(B h |$(7"I$(8!;(B A |$(7"J$(8!;(B kSH| | | $(7"_(B M $(7!l(B $(7!m(B < > 131 |$(7"H$(8!;(B h |$(7"I$(8!;(B A |$(7"J$(8!;(B kSH| | | $(7"_(B M $(7!l(B $(7!m(B < >
103 +-------------------------------------+ $(8!D(B % 132 +-------------------------------------+ $(8!D(B %
104 (The consonant $(7"I$(8!;(B must be typed explicitly.) 133 (The consonant $(7"I$(8!;(B must be typed explicitly.)
105 134
106 NOT SPECIFIED IN EXT. WYLIE: 135 NOT SPECIFIED IN EXT. WYLIE:
107 +--------------------------------------------------------+ 136 +--------------------------------------------------------+
108 |$(7"c(B = ~ |$(7"d(B = ` |$(7"e(B = , |$(7"f(B = @ |$(7!g(B = _o|$(7!e(B = _O|2$(7#RP#S_!I(B1 = ^| 137 |$(7"c(B = ~ |$(7"d(B = ` |$(7"e(B = , |$(7"f(B = @ |$(7!g(B = _o|$(7!e(B = _O|$(7#R#S!I(B = ^|
109 +--------------------------------------------------------+ 138 +--------------------------------------------------------+
110 |$(7"i(B = x |$(7"j(B = X |$(7"g(B = v |$(7"h(B = V |$(7"k(B = q |$(7"l(B = Q | 139 |$(7"i(B = x |$(7"j(B = X |$(7"g(B = v |$(7"h(B = V |$(7"k(B = q |$(7"l(B = Q |
111 +-----------------------------------------------+ 140 +-----------------------------------------------+
112 141
113 SPECIAL KEYS 142 SPECIAL KEYS
118 and to get da-drag in -r-d, -l-d .) 147 and to get da-drag in -r-d, -l-d .)
119 | : Special signs. 148 | : Special signs.
120 149
121 Tsheg is assigned to SPC. Space is assigned to period '.'. 150 Tsheg is assigned to SPC. Space is assigned to period '.'.
122 " 151 "
123 nil nil nil) 152 nil nil nil nil nil nil nil nil
124 153 'quail-tibetan-update-translation)
125 (quail-define-rules 154
126 ("." ?\x20) 155 ;; Here we build up a Quail map for a Tibtan sequence the whole of
127 ("k" quail-tibetan-input-wylie) 156 ;; which can be one composition.
128 ("g" quail-tibetan-input-wylie) 157 ;;
129 ("c" quail-tibetan-input-wylie) 158 ;; A Tibetan syllable is typically structured as follows:
130 ("j" quail-tibetan-input-wylie) 159 ;; [P] C [c+] V [M] [S [s]]
131 ("T" quail-tibetan-input-wylie) 160 ;; ^^^^^^^^^^^^
132 ("D" quail-tibetan-input-wylie) 161 ;; where P:prefix, C:base consonant, c:subjoined consonant,
133 ("N" quail-tibetan-input-wylie) 162 ;; V:vowel, M:vowel modifier, S:suffix, s:post suffix.
134 ("t" quail-tibetan-input-wylie) 163 ;; In this pattern, the part indicated by "^^^" can be one composition.
135 ("d" quail-tibetan-input-wylie) 164
136 ("n" quail-tibetan-input-wylie) 165 (quail-install-map
137 ("p" quail-tibetan-input-wylie) 166 (quail-map-from-table
138 ("b" quail-tibetan-input-wylie) 167 '((base-state (tibetan-consonant-transcription-alist . sq-state)
139 ("m" quail-tibetan-input-wylie) 168 (tibetan-precomposed-transcription-alist . s-state)
140 ("w" quail-tibetan-input-wylie) 169 (tibetan-wylie-non-stacking-alist . sq-state)
141 ("z" quail-tibetan-input-wylie) 170 tibetan-subjoined-transcription-alist
142 ("'" quail-tibetan-input-wylie) 171 tibetan-vowel-transcription-alist
143 ("y" quail-tibetan-input-wylie) 172 tibetan-modifier-transcription-alist
144 ("r" quail-tibetan-input-wylie) 173 tibetan-wylie-punctuation-alist)
145 ("l" quail-tibetan-input-wylie) 174 (sq-state (tibetan-wylie-quote-alist . s-state)
146 ("SH" quail-tibetan-input-wylie) 175 (tibetan-subjoined-transcription-alist . s-state))
147 ("s" quail-tibetan-input-wylie) 176 (s-state (tibetan-subjoined-transcription-alist . s-state)
148 ("h" quail-tibetan-input-wylie) 177 (tibetan-vowel-transcription-alist . m-state))
149 ("H" quail-tibetan-input-wylie) 178 (m-state tibetan-modifier-transcription-alist))))
150 ("A" quail-tibetan-input-wylie)
151 ("+k" quail-tibetan-input-wylie)
152 ("+g" quail-tibetan-input-wylie)
153 ("+c" quail-tibetan-input-wylie)
154 ("+j" quail-tibetan-input-wylie)
155 ("+T" quail-tibetan-input-wylie)
156 ("+D" quail-tibetan-input-wylie)
157 ("+N" quail-tibetan-input-wylie)
158 ("+t" quail-tibetan-input-wylie)
159 ("+d" quail-tibetan-input-wylie)
160 ("+n" quail-tibetan-input-wylie)
161 ("+p" quail-tibetan-input-wylie)
162 ("+b" quail-tibetan-input-wylie)
163 ("+m" quail-tibetan-input-wylie)
164 ("+w" quail-tibetan-input-wylie)
165 ("+z" quail-tibetan-input-wylie)
166 ("+'" quail-tibetan-input-wylie)
167 ("+y" quail-tibetan-input-wylie)
168 ("+r" quail-tibetan-input-wylie)
169 ("+l" quail-tibetan-input-wylie)
170 ("+SH" quail-tibetan-input-wylie)
171 ("+s" quail-tibetan-input-wylie)
172 ("+h" quail-tibetan-input-wylie)
173 ("+H" quail-tibetan-input-wylie)
174 ("+A" quail-tibetan-input-wylie)
175 ("-d" ?$(7"2(B) ; To avoid default stacking
176 ("-y" ?$(7"B(B) ; Idem.
177 ("a" quail-tibetan-input-wylie) ; invisible vowel sign
178 ("i" quail-tibetan-input-wylie)
179 ("u" quail-tibetan-input-wylie)
180 ("e" quail-tibetan-input-wylie)
181 ("o" quail-tibetan-input-wylie)
182 ("I" quail-tibetan-input-wylie)
183 ("E" quail-tibetan-input-wylie)
184 ("O" quail-tibetan-input-wylie)
185 ("M" quail-tibetan-input-wylie)
186 ("~" quail-tibetan-input-wylie)
187 ("`" quail-tibetan-input-wylie)
188 ("," quail-tibetan-input-wylie)
189 ("x" quail-tibetan-input-wylie)
190 ("X" quail-tibetan-input-wylie)
191 ("v" quail-tibetan-input-wylie)
192 ("V" quail-tibetan-input-wylie)
193 ("q" quail-tibetan-input-wylie)
194 ("Q" quail-tibetan-input-wylie)
195 ("_o" quail-tibetan-input-wylie)
196 ("_O" quail-tibetan-input-wylie)
197 ;;; ("_/" quail-tibetan-input-wylie)
198 (":" ?$(8"`(B)
199 (" " ?$(8!;(B)
200 ("/" ?$(8!=(B)
201 ("//" ?$(7!>(B)
202 ("////" tibetan-quail-bzhi-shad)
203 ("$" ?$(8!?(B)
204 ("/\"" ?$(8!@(B) ; Not defined in Ext. Wylie.
205 ("&" ?$(8!@(B)
206 (";" ?$(8!A(B)
207 ("%" ?$(8!D(B)
208 ("!" ?$(7!8(B)
209 ("<" ?$(7!l(B)
210 (">" ?$(7!m(B)
211 ("@" ?$(7"f(B)
212 ("*" tibetan-quail-nyi-zla-double)
213 ("#" tibetan-quail-nyi-zla-triple)
214 ("^" tibetan-quail-nyi-zla-phur-shad)
215 ("0" ?$(7!P(B)
216 ("1" ?$(7!Q(B)
217 ("2" ?$(7!R(B)
218 ("3" ?$(7!S(B)
219 ("4" ?$(7!T(B)
220 ("5" ?$(7!U(B)
221 ("6" ?$(7!V(B)
222 ("7" ?$(7!W(B)
223 ("8" ?$(7!X(B)
224 ("9" ?$(7!Y(B)
225 ("-0" ?$(7!c(B)
226 ("-1" ?$(7!Z(B)
227 ("-2" ?$(7![(B)
228 ("-3" ?$(7!\(B)
229 ("-4" ?$(7!](B)
230 ("-5" ?$(7!^(B)
231 ("-6" ?$(7!_(B)
232 ("-7" ?$(7!`(B)
233 ("-8" ?$(7!a(B)
234 ("-9" ?$(7!b(B)
235 ("|" "$(7!1!2!3!9!:!B!C!E!F!G!H!I!J!K!L!M!N!O!d!f!h!j!k!n!o(B")
236 )
237 179
238 ;;; 180 ;;;
239 ;;; Setting-ups for TibKey input 181 ;;; TibKey key alignment based input method
240 ;;; 182 ;;;
241 183
242 (defconst tibetan-tibkey-to-transcription-alist 184 (defconst tibetan-tibkey-to-transcription-alist
243 '( 185 '(;; consonant
244 ("`" . "`") ; sna ldan 186 ("`" . "`") ; sna ldan
245 ("~" . "~") ; sna ldan + nada 187 ("~" . "~") ; sna ldan + nada
246 ("q" . "k") ; ka 188 ("q" . "k") ; ka
247 ("Q" ."kSH") ; kSHa 189 ("Q" ."kSH") ; kSHa
248 ("w" . "kh") ; kha 190 ("w" . "kh") ; kha
290 ("m" . "sh") ; sha 232 ("m" . "sh") ; sha
291 ("M" . "SH") ; SHa 233 ("M" . "SH") ; SHa
292 ("," . "s") ; sa 234 ("," . "s") ; sa
293 ("." . "h") ; ha 235 ("." . "h") ; ha
294 ("/" . "A") ; Aa 236 ("/" . "A") ; Aa
295 ;;subjoined 237 ;; subjoined
296 ("hq" . "+k") ; ka 238 ("hq" . "+k") ; ka
297 ("hQ" ."+kSH") ; kSHa 239 ("hQ" ."+kSH") ; kSHa
298 ("hw" . "+kh") ; kha 240 ("hw" . "+kh") ; kha
299 ("he" . "+g") ; ga 241 ("he" . "+g") ; ga
300 ("hr" . "+ng") ; nga 242 ("hr" . "+ng") ; nga
327 ("hm" . "+sh") ; sha 269 ("hm" . "+sh") ; sha
328 ("hM" . "+SH") ; SHa 270 ("hM" . "+SH") ; SHa
329 ("h," . "+s") ; sa 271 ("h," . "+s") ; sa
330 ("h." . "+h") ; ha 272 ("h." . "+h") ; ha
331 ("h/" . "+A") ; Aa 273 ("h/" . "+A") ; Aa
274 ;; Special rule for `$(7"B(B' to avoid stacking.
275 ("E" . "-y")
332 )) 276 ))
333 277
334 (defun quail-tibetan-input-tibkey (key &rest ignore) 278 (defconst tibetan-consonant-tibkey-alist nil)
335 (let (trans pc) 279 (defconst tibetan-subjoined-tibkey-alist nil)
336 (setq trans (cdr (assoc key tibetan-tibkey-to-transcription-alist))) 280 (defconst tibetan-vowel-tibkey-alist nil)
337 (quail-delete-region) 281 (defconst tibetan-modifier-tibkey-alist nil)
338 (quail-delete-overlays) 282 (defconst tibetan-non-stacking-tibkey-alist nil)
339 (setq pc (char-before (overlay-start quail-overlay)) 283
340 quail-current-str (tibetan-composition pc trans)) 284 (let ((type-list '("consonant" "subjoined" "vowel" "modifier" "non-stacking"))
341 (if (not (bobp)) 285 (tail tibetan-tibkey-to-transcription-alist)
342 (progn 286 elt)
343 (delete-char -1) 287 (while tail
344 (insert (aref quail-current-str 0)) 288 (setq elt (car tail) tail (cdr tail))
345 (setq quail-current-str (substring quail-current-str 1)))) 289 (let ((types type-list)
346 (move-overlay quail-overlay (point) (point)) 290 type transcription trans-alist tibkey-alist)
347 (insert quail-current-str) 291 (while types
348 (throw 'quail-tag nil))) 292 (setq type (car types) types (cdr types))
349 293 (setq trans-alist
350 294 (if (string= type "non-stacking")
295 'tibetan-wylie-non-stacking-alist
296 (intern (format "tibetan-%s-transcription-alist" type)))
297 transcription
298 (cdr (assoc (cdr elt) (symbol-value trans-alist))))
299 (when transcription
300 (setq tibkey-alist (intern (format "tibetan-%s-tibkey-alist" type)))
301 (set tibkey-alist
302 (cons (cons (car elt) transcription)
303 (symbol-value tibkey-alist)))))
304 (or tibkey-alist
305 (error "No Tibetan transcription for %s" (cdr elt))))))
306
307 (defconst tibetan-punctuation-tibkey-alist
308 '(("1" . "$(7!Q(B")
309 ("!" . ["$(7#R#S#S#S(B"]) ; nyi zla long
310 ("2" . "$(7!R(B")
311 ("@" . "$(7#S(B") ; nyi zla simple
312 ("3" . "$(7!S(B")
313 ;;; ("#" )
314 ("4" . "$(7!T(B")
315 ;;; ("$" )
316 ("5" . "$(7!U(B")
317 ("%" . "$(8!D(B")
318 ("6" . "$(7!V(B")
319 ("^" . "$(7!1(B")
320 ("7" . "$(7!W(B")
321 ("8" . "$(7!X(B")
322 ;;; ("*" ) ; avagraha, not supported yet
323 ("9" . "$(7!Y(B")
324 ("(" . "$(7!l(B")
325 ("0" . "$(7!P(B")
326 (")" . "$(7!m(B")
327 ;;; ("-" ) ; enphatic, not yet supported
328 ;;; ("_" ) ; id.
329 ;;; ("=" ) ; special sign, not yet supported
330 ("+" . "$(8!A(B")
331 ("\\" . "$(8!?(B")
332 ("|" . "$(7!8(B")
333 ("I" . "$(7"f(B") ; avagraha
334 (":" . "$(8"`(B")
335 ;;; (">" ?$(8!;(B) ; to be assigned to SPC
336 (">" . " ")
337 ("?" . "$(8!=(B")
338 ("??" . "$(7!>(B")
339 ("????" . ["$(7!>(B $(7!>(B"])
340 (" " . "$(8!;(B")
341 ))
342
343 ;; Convert TibKey string to Tibetan-Roman transcription string.
344 ;; If there's no proper conversion, return nil.
345 (defun quail-tibkey-to-transcription (tibkey)
346 (let ((len (length tibkey))
347 (i 0)
348 (trans-list nil))
349 (while (< i len)
350 (let ((last len)
351 trans)
352 (while (and (not trans) (> last i))
353 (or (setq trans (cdr (assoc (substring tibkey i last)
354 tibetan-tibkey-to-transcription-alist)))
355 (setq last (1- last))))
356 (if trans
357 (setq trans-list (cons trans trans-list)
358 i last)
359 (setq trans-list nil i len))))
360 (apply 'concat (nreverse trans-list))))
361
362 (defvar quail-tibkey-characters nil)
363
364 (defun quail-tibkey-update-translation (control-flag)
365 (if (integerp control-flag)
366 ;; Non-composable-character typed.
367 (setq quail-current-str
368 (buffer-substring (overlay-start quail-overlay)
369 (overlay-end quail-overlay))
370 unread-command-events
371 (string-to-list
372 (substring quail-current-key control-flag)))
373 (let ((transcription (quail-tibkey-to-transcription quail-current-key)))
374 (if (> (length transcription) 0)
375 (let ((quail-current-key transcription))
376 (setq control-flag
377 (quail-tibetan-update-translation control-flag)))
378 (or quail-current-str
379 (setq quail-current-str quail-current-key)))))
380 control-flag)
351 381
352 (quail-define-package "tibetan-tibkey" "Tibetan" "TIBt" t 382 (quail-define-package "tibetan-tibkey" "Tibetan" "TIBt" t
353 "Tibetan character input by TibKey key assignment. 383 "Tibetan character input by TibKey key assignment.
354 384
355 (This implementation is still incomplete. 385 \(This implementation is still incomplete.
356 Therefore, the following key assignment is a provisional one.) 386 Therefore, the following key assignment is a provisional one.)
357 387
358 [NOT SHIFTED] 388 [NOT SHIFTED]
359 389
360 +-------------------------------------------------------+ 390 +-------------------------------------------------------+
369 The key 'h' is used for consonant stacking. 399 The key 'h' is used for consonant stacking.
370 400
371 [SHIFTED] 401 [SHIFTED]
372 402
373 +----------------------------------------------------------+ 403 +----------------------------------------------------------+
374 |~$(7"c(B|!2$(7#RP#S(B1|@$(7#S(B|# |$ |%$(8!D(B |^$(7!1(B|& |* |($(7!l(B|)$(7!m(B|_ |+$(7!A(B| |$(7!8(B| 404 |~$(7"c(B|!$(7#R#S(B|@$(7#S(B|# |$ |%$(8!D(B |^$(7!1(B|& |* |($(7!l(B|)$(7!m(B|_ |+$(7!A(B| |$(7!8(B|
375 +----------------------------------------------------------+ 405 +----------------------------------------------------------+
376 |Q$(7"J(B|W$(7#T(B|E |R |T$(7"a(B|Y |U |I$(7"f(B|O$(7"+(B|P$(7",(B|{$(7"-(B|}$(7"/(B| 406 |Q$(7"J(B|W$(7#T(B|E |R |T$(7"a(B|Y |U |I$(7"f(B|O$(7"+(B|P$(7",(B|{$(7"-(B|}$(7"/(B|
377 +-----------------------------------------------+ 407 +-----------------------------------------------+
378 |A |S |D |F$(7"_(B|G$(7"S(B|H$(7"e(B|J$(7"[(B|K |L |:$(7"`(B|\"$(7#>(B| 408 |A |S |D |F$(7"_(B|G$(7"S(B|H$(7"e(B|J$(7"[(B|K |L |:$(7"`(B|\"$(7#>(B|
379 +-------------------------------------------+ 409 +-------------------------------------------+
392 type 'E' instead of 'v' (=$(7"B(B). 422 type 'E' instead of 'v' (=$(7"B(B).
393 3. There are many characters that are not supported in the 423 3. There are many characters that are not supported in the
394 current implementation (especially special signs). I hope 424 current implementation (especially special signs). I hope
395 I'll complete in a future revision. 425 I'll complete in a future revision.
396 " 426 "
397 nil t) 427 nil nil nil nil nil nil nil nil
398 428 'quail-tibkey-update-translation)
399 (quail-define-rules 429
400 ("`" quail-tibetan-input-tibkey) ; sna ldan, not supported yet 430 (quail-install-map
401 ("~" quail-tibetan-input-tibkey) ; sna ldan + nada 431 (quail-map-from-table
402 ("1" ?$(7!Q(B) 432 '((base-state (tibetan-consonant-tibkey-alist . s-state)
403 ("!" tibetan-quail-nyi-zla) ; nyi zla long 433 (tibetan-non-stacking-tibkey-alist . s-state)
404 ("2" ?$(7!R(B) 434 tibetan-subjoined-tibkey-alist
405 ("@" ?$(7#S(B) ; nyi zla simple 435 tibetan-vowel-tibkey-alist
406 ("3" ?$(7!S(B) 436 tibetan-modifier-tibkey-alist
407 ;;; ("#" ) 437 tibetan-punctuation-tibkey-alist)
408 ("4" ?$(7!T(B) 438 (s-state (tibetan-subjoined-tibkey-alist . s-state)
409 ;;; ("$" ) 439 (tibetan-vowel-tibkey-alist . m-state))
410 ("5" ?$(7!U(B) 440 (m-state tibetan-modifier-tibkey-alist))))
411 ("%" ?$(8!D(B)
412 ("6" ?$(7!V(B)
413 ("^" ?$(7!1(B)
414 ("7" ?$(7!W(B)
415 ("8" ?$(7!X(B)
416 ;;; ("*" ) ; avagraha, not supported yet
417 ("9" ?$(7!Y(B)
418 ("(" ?$(7!l(B)
419 ("0" ?$(7!P(B)
420 (")" ?$(7!m(B)
421 ;;; ("-" ) ; enphatic, not yet supported
422 ;;; ("_" ) ; id.
423 ;;; ("=" ) ; special sign, not yet supported
424 ("+" ?$(8!A(B)
425 ("\\" ?$(8!?(B)
426 ("|" ?$(7!8(B)
427 ("q" quail-tibetan-input-tibkey) ; ka
428 ("Q" quail-tibetan-input-tibkey) ; kSHa
429 ("w" quail-tibetan-input-tibkey) ; kha
430 ("e" quail-tibetan-input-tibkey) ; ga
431 ("E" ?$(7"B(B)
432 ("r" quail-tibetan-input-tibkey) ; nga
433 ("t" quail-tibetan-input-tibkey) ; ca
434 ("T" quail-tibetan-input-tibkey) ; gi gu log
435 ("y" quail-tibetan-input-tibkey) ; cha
436 ("u" quail-tibetan-input-tibkey) ; ja
437 ("i" quail-tibetan-input-tibkey) ; nya
438 ("I" ?$(7"f(B) ; avagraha
439 ("o" quail-tibetan-input-tibkey) ; ta
440 ("O" quail-tibetan-input-tibkey) ; Ta
441 ("p" quail-tibetan-input-tibkey) ; tha
442 ("P" quail-tibetan-input-tibkey) ; THa
443 ("[" quail-tibetan-input-tibkey) ; da
444 ("{" quail-tibetan-input-tibkey) ; Da
445 ("]" quail-tibetan-input-tibkey) ; na
446 ("}" quail-tibetan-input-tibkey) ; Na
447 ("a" quail-tibetan-input-tibkey) ; pa
448 ("A" quail-tibetan-input-tibkey) ; Vowel sign a
449 ("s" quail-tibetan-input-tibkey) ; pha
450 ("d" quail-tibetan-input-tibkey) ; ba
451 ;;; ("D" ) ; special sign, not supported yet
452 ("f" quail-tibetan-input-tibkey) ; ma
453 ("F" quail-tibetan-input-tibkey) ; anusvara
454 ("g" quail-tibetan-input-tibkey) ; zhabs kyu
455 ("G" quail-tibetan-input-tibkey) ; gi gu
456 ("H" quail-tibetan-input-tibkey) ; viraama
457 ("j" quail-tibetan-input-tibkey) ; naro
458 ("J" quail-tibetan-input-tibkey) ; 'greng bu
459 ("k" quail-tibetan-input-tibkey);;tsa
460 ;;; ("K" ) ; tsadru, not supported yet
461 ("l" quail-tibetan-input-tibkey) ; tsha
462 (";" quail-tibetan-input-tibkey) ; dza
463 (":" ?$(8"`(B)
464 ("'" quail-tibetan-input-tibkey) ; wa
465 ("\"" quail-tibetan-input-tibkey) ; wa zur
466 ("z" quail-tibetan-input-tibkey) ; zha
467 ("x" quail-tibetan-input-tibkey) ; za
468 ("c" quail-tibetan-input-tibkey) ; 'a
469 ("C" quail-tibetan-input-tibkey) ; 'a chung
470 ("v" quail-tibetan-input-tibkey) ; ya
471 ("V" quail-tibetan-input-tibkey) ; ya btags
472 ("b" quail-tibetan-input-tibkey) ; ra
473 ("B" quail-tibetan-input-tibkey) ; ra btags
474 ("n" quail-tibetan-input-tibkey) ; la
475 ("N" quail-tibetan-input-tibkey) ; la btags
476 ("m" quail-tibetan-input-tibkey) ; sha
477 ("M" quail-tibetan-input-tibkey) ; SHa
478 ("," quail-tibetan-input-tibkey) ; sa
479 ("." quail-tibetan-input-tibkey) ; ha
480 ;;; (">" ?$(8!;(B) ; to be assigned to SPC
481 (">" ?\x20)
482 ("/" quail-tibetan-input-tibkey) ; Aa
483 ("?" ?$(8!=(B)
484 ("??" ?$(7!>(B)
485 ("????" tibetan-quail-bzhi-shad)
486 (" " ?$(8!;(B)
487 ;;subjoined
488 ("hq" quail-tibetan-input-tibkey) ; ka
489 ("hQ" quail-tibetan-input-tibkey) ; kSHa
490 ("hw" quail-tibetan-input-tibkey) ; kha
491 ("he" quail-tibetan-input-tibkey) ; ga
492 ("hr" quail-tibetan-input-tibkey) ; nga
493 ("ht" quail-tibetan-input-tibkey) ; ca
494 ("hy" quail-tibetan-input-tibkey) ; cha
495 ("hu" quail-tibetan-input-tibkey) ; ja
496 ("hi" quail-tibetan-input-tibkey) ; nya
497 ("ho" quail-tibetan-input-tibkey) ; ta
498 ("hO" quail-tibetan-input-tibkey) ; Ta
499 ("hp" quail-tibetan-input-tibkey) ; tha
500 ("hP" quail-tibetan-input-tibkey) ; THa
501 ("h[" quail-tibetan-input-tibkey) ; da
502 ("h{" quail-tibetan-input-tibkey) ; Da
503 ("h]" quail-tibetan-input-tibkey) ; na
504 ("h}" quail-tibetan-input-tibkey) ; Na
505 ("ha" quail-tibetan-input-tibkey) ; pa
506 ("hs" quail-tibetan-input-tibkey) ; pha
507 ("hd" quail-tibetan-input-tibkey) ; ba
508 ("hf" quail-tibetan-input-tibkey) ; ma
509 ("hk" quail-tibetan-input-tibkey) ; tsa
510 ("hl" quail-tibetan-input-tibkey) ; tsha
511 ("h;" quail-tibetan-input-tibkey) ; dza
512 ("h'" quail-tibetan-input-tibkey) ; wa
513 ("hz" quail-tibetan-input-tibkey) ; zha
514 ("hx" quail-tibetan-input-tibkey) ; za
515 ("hc" quail-tibetan-input-tibkey) ; 'a
516 ("hv" quail-tibetan-input-tibkey) ; ya
517 ("hb" quail-tibetan-input-tibkey) ; ra
518 ("hn" quail-tibetan-input-tibkey) ; la
519 ("hm" quail-tibetan-input-tibkey) ; sha
520 ("hM" quail-tibetan-input-tibkey) ; SHa
521 ("h," quail-tibetan-input-tibkey) ; sa
522 ("h." quail-tibetan-input-tibkey) ; ha
523 ("h/" quail-tibetan-input-tibkey) ; Aa
524 )
525
526 ;;; quail/tibetan.el ends here.
527
528
529