Mercurial > emacs
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 |