Commit | Line | Data |
---|---|---|
047eced5 | 1 | ;;; tibetan.el --- Quail package for inputting Tibetan characters -*-coding: iso-2022-7bit;-*- |
2cd1b939 | 2 | |
95df8112 | 3 | ;; Copyright (C) 1997, 2001-2011 Free Software Foundation, Inc. |
03ba6797 | 4 | ;; Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, |
5df4f04c | 5 | ;; 2006, 2007, 2008, 2009, 2010, 2011 |
698218a2 KH |
6 | ;; National Institute of Advanced Industrial Science and Technology (AIST) |
7 | ;; Registration Number H14PRO021 | |
2cd1b939 KH |
8 | |
9 | ;; Keywords: multilingual, input method, Tibetan | |
10 | ||
11 | ;; This file is part of GNU Emacs. | |
12 | ||
3d544458 | 13 | ;; GNU Emacs is free software: you can redistribute it and/or modify |
2cd1b939 | 14 | ;; it under the terms of the GNU General Public License as published by |
3d544458 GM |
15 | ;; the Free Software Foundation, either version 3 of the License, or |
16 | ;; (at your option) any later version. | |
2cd1b939 KH |
17 | |
18 | ;; GNU Emacs is distributed in the hope that it will be useful, | |
19 | ;; but WITHOUT ANY WARRANTY; without even the implied warranty of | |
20 | ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
21 | ;; GNU General Public License for more details. | |
22 | ||
23 | ;; You should have received a copy of the GNU General Public License | |
3d544458 | 24 | ;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. |
2cd1b939 KH |
25 | |
26 | ;; Author: Toru TOMABECHI, <Toru.Tomabechi@orient.unil.ch> | |
27 | ||
28 | ;; Created: Feb. 17. 1997 | |
29 | ||
30 | ;; History: | |
e4920bc9 | 31 | ;; 1997.03.13 Support for inputting special signs and punctuation added. |
2cd1b939 KH |
32 | ;; (Only Ext. Wylie input) |
33 | ||
be567141 PJ |
34 | ;;; Commentary: |
35 | ||
2cd1b939 KH |
36 | ;;; Code: |
37 | ||
38 | (require 'quail) | |
653b6bad KH |
39 | (require 'tibet-util) |
40 | ||
41 | ;; Now quail-current-key is set to Tibetan-Roman transcription. We | |
42 | ;; set quail-current-str to the corresponding Tibetan string (composed | |
43 | ;; if necessary). Both Wylie and TibKey input methods use this | |
44 | ;; function. | |
45 | ||
46 | (defun quail-tibetan-update-translation (control-flag) | |
47 | (if (numberp control-flag) | |
48 | ;; Non-composable-character typed. | |
49 | (setq quail-current-str | |
50 | (buffer-substring (overlay-start quail-overlay) | |
51 | (overlay-end quail-overlay)) | |
52 | unread-command-events | |
53 | (string-to-list | |
54 | (substring quail-current-key control-flag))) | |
55 | ;; Special treatment of "-d..." and "-y...". | |
56 | (if (string-match "^-[dy]" quail-current-key) | |
57 | (setq quail-current-key (substring quail-current-key 1))) | |
58 | (let ((str (tibetan-transcription-to-tibetan quail-current-key))) | |
e4920bc9 | 59 | ;; If quail-current-key is for punctuation, it can't be |
653b6bad KH |
60 | ;; transcribed by tibetan-transcription-to-tibetan, thus STR |
61 | ;; contains ASCII string now. In that case, use the current | |
62 | ;; characters set in quail-current-str. | |
63 | (if (> (aref str 0) 255) | |
64 | (setq quail-current-str (tibetan-compose-string str)) | |
65 | (or quail-current-str | |
66 | (setq quail-current-str quail-current-key))))) | |
67 | control-flag) | |
68 | ||
69 | ;;; Wylie transcription based input methods. | |
70 | ||
71 | ;; Special alist for `\e$(7"A\e(B'. It must be treated as a subjoined | |
72 | ;; consonant if it follows a consonant. | |
cc7d79ad KH |
73 | ;; * Removed by Tomabechi 2000/06/10 * |
74 | ;; 'a chung must be explicitly typed as a vowel ("fa") | |
75 | ;; \e$(7"A\e(B is now treated as normal base consonants | |
76 | ;; (defconst tibetan-wylie-quote-alist '(("'" . ?\e$(7"A\e(B))) | |
653b6bad KH |
77 | |
78 | ;; Special alist to avoid default stacking. | |
79 | (defconst tibetan-wylie-non-stacking-alist | |
80 | '(("-d" . "\e$(7"2\e(B") | |
81 | ("-y" . "\e$(7"B\e(B"))) | |
82 | ||
e4920bc9 | 83 | ;; Punctuation characters are not transcribed. |
653b6bad KH |
84 | |
85 | (defconst tibetan-wylie-punctuation-alist | |
86 | '(("." . " ") | |
cc7d79ad KH |
87 | (":" . "\e$(7"`\e(B") |
88 | (" " . "\e$(7!;\e(B") | |
89 | ("/" . "\e$(7!=\e(B") | |
653b6bad KH |
90 | ("//" . "\e$(7!>\e(B") |
91 | ("////" . ["\e$(7!>\e(B \e$(7!>\e(B"]) | |
cc7d79ad KH |
92 | ("$" . "\e$(7!?\e(B") |
93 | ("/\"" . "\e$(7!@\e(B") ; Not defined in Ext. Wylie. | |
94 | ("&" . "\e$(7!@\e(B") | |
95 | (";" . "\e$(7!A\e(B") | |
96 | ("%" . "\e$(7!D\e(B") | |
653b6bad KH |
97 | ("!" . "\e$(7!8\e(B") |
98 | ("<" . "\e$(7!l\e(B") | |
99 | (">" . "\e$(7!m\e(B") | |
100 | ("@" . "\e$(7"f\e(B") | |
101 | ("*" . ["\e$(7!4!5\e(B"]) | |
102 | ("#" . ["\e$(7!4!5!5\e(B"]) | |
103 | ("^" . "\e$(7!6\e(B") | |
104 | ("0" . "\e$(7!P\e(B") | |
105 | ("1" . "\e$(7!Q\e(B") | |
106 | ("2" . "\e$(7!R\e(B") | |
107 | ("3" . "\e$(7!S\e(B") | |
108 | ("4" . "\e$(7!T\e(B") | |
109 | ("5" . "\e$(7!U\e(B") | |
110 | ("6" . "\e$(7!V\e(B") | |
111 | ("7" . "\e$(7!W\e(B") | |
112 | ("8" . "\e$(7!X\e(B") | |
113 | ("9" . "\e$(7!Y\e(B") | |
114 | ("-0" . "\e$(7!c\e(B") | |
115 | ("-1" . "\e$(7!Z\e(B") | |
116 | ("-2" . "\e$(7![\e(B") | |
117 | ("-3" . "\e$(7!\\e(B") | |
118 | ("-4" . "\e$(7!]\e(B") | |
119 | ("-5" . "\e$(7!^\e(B") | |
120 | ("-6" . "\e$(7!_\e(B") | |
121 | ("-7" . "\e$(7!`\e(B") | |
122 | ("-8" . "\e$(7!a\e(B") | |
123 | ("-9" . "\e$(7!b\e(B") | |
cc7d79ad | 124 | ("|" . "\e$(7!0!1!2!3!7!9!:!B!C!E!F!G!H!I!J!K!L!M!N!O!d!f!h!j!k!n!o#O#P#Q#R#S#T#U#V#W#X#Y#Z#[#\#]#`\e(B"))) |
2cd1b939 KH |
125 | |
126 | (quail-define-package "tibetan-wylie" "Tibetan" "TIBw" t | |
127 | "Tibetan character input by Extended Wylie key assignment. | |
128 | ||
129 | +-------------------------------------+ | |
cc7d79ad KH |
130 | |\e$(7"!!;\e(B k |\e$(7""!;\e(B kh |\e$(7"#!;\e(B g |\e$(7"$!;\e(B gh |\e$(7"%!;\e(B ng| \e$(7"S\e(B i \e$(7!=\e(B / |
131 | |\e$(7"&!;\e(B c |\e$(7"'!;\e(B ch |\e$(7"(!;\e(B j | |\e$(7"*!;\e(B ny| \e$(7"U\e(B u \e$(7!>\e(B // | |
132 | |\e$(7"+!;\e(B T |\e$(7",!;\e(B TH |\e$(7"-!;\e(B D |\e$(7".!;\e(B DH |\e$(7"/!;\e(B N | \e$(7"[\e(B e \e$(7!>\e(B \e$(7!>\e(B //// | |
133 | |\e$(7"0!;\e(B t |\e$(7"1!;\e(B th |\e$(7"2!;\e(B d |\e$(7"3!;\e(B dh |\e$(7"4!;\e(B n | \e$(7"]\e(B o \e$(7!A\e(B ; | |
134 | |\e$(7"5!;\e(B p |\e$(7"6!;\e(B ph |\e$(7"7!;\e(B b |\e$(7"8!;\e(B bh |\e$(7"9!;\e(B m | \e$(7"\\e(B ai (ee, E) \e$(7!?\e(B $ | |
135 | |\e$(7":!;\e(B ts|\e$(7";!;\e(B tsh|\e$(7"<!;\e(B dz |\e$(7"=!;\e(B dzh|\e$(7">!;\e(B w | \e$(7"^\e(B au (oo, O) \e$(7!@\e(B & | |
136 | |\e$(7"?!;\e(B zh|\e$(7"@!;\e(B z |\e$(7"A!;\e(B ' | |\e$(7"B!;\e(B y | \e$(7"a\e(B I \e$(7!4!5\e(B * | |
137 | |\e$(7"C!;\e(B r |\e$(7"D!;\e(B l |\e$(7"E!;\e(B sh |\e$(7"F!;\e(B SH |\e$(7"G!;\e(B s | \e$(7"`\e(B : \e$(7!4!5!5\e(B # | |
138 | |\e$(7"H!;\e(B h |\e$(7"I!;\e(B A |\e$(7"J!;\e(B kSH| | | \e$(7"_\e(B M \e$(7!l\e(B \e$(7!m\e(B < > | |
139 | +-------------------------------------+ \e$(7!D\e(B % | |
140 | (The consonant \e$(7"I!;\e(B must be typed explicitly.) | |
2cd1b939 KH |
141 | |
142 | NOT SPECIFIED IN EXT. WYLIE: | |
143 | +--------------------------------------------------------+ | |
cc7d79ad | 144 | |\e$(7"c\e(B = ~ |\e$(7"d\e(B = ` |\e$(7"e\e(B = , |\e$(7"f\e(B = @ |\e$(7!g\e(B = _o|\e$(7!e\e(B = _O|\e$(7!6\e(B = ^| |
2cd1b939 KH |
145 | +--------------------------------------------------------+ |
146 | |\e$(7"i\e(B = x |\e$(7"j\e(B = X |\e$(7"g\e(B = v |\e$(7"h\e(B = V |\e$(7"k\e(B = q |\e$(7"l\e(B = Q | | |
147 | +-----------------------------------------------+ | |
148 | ||
149 | SPECIAL KEYS | |
150 | + : Consonant Stacking | |
151 | \(Consonant stacking for ordinary Tibetan is done automatically) | |
152 | - : No Consonant Stacking | |
153 | \(To suppress automatic stacking for \"g-y\", | |
154 | and to get da-drag in -r-d, -l-d .) | |
155 | | : Special signs. | |
156 | ||
157 | Tsheg is assigned to SPC. Space is assigned to period '.'. | |
158 | " | |
653b6bad KH |
159 | nil nil nil nil nil nil nil nil |
160 | 'quail-tibetan-update-translation) | |
161 | ||
162 | ;; Here we build up a Quail map for a Tibtan sequence the whole of | |
163 | ;; which can be one composition. | |
164 | ;; | |
165 | ;; A Tibetan syllable is typically structured as follows: | |
166 | ;; [P] C [c+] V [M] [S [s]] | |
167 | ;; ^^^^^^^^^^^^ | |
168 | ;; where P:prefix, C:base consonant, c:subjoined consonant, | |
169 | ;; V:vowel, M:vowel modifier, S:suffix, s:post suffix. | |
170 | ;; In this pattern, the part indicated by "^^^" can be one composition. | |
171 | ||
cc7d79ad KH |
172 | ;;; modified by Tomabechi 1999/12/10 |
173 | ;;; modified by Tomabechi 2000/06/08 | |
174 | ;;; Allows infinite addition of vowels/modifiers | |
175 | ;;; as specified in Unicode v.3 | |
653b6bad KH |
176 | (quail-install-map |
177 | (quail-map-from-table | |
cc7d79ad KH |
178 | '((base-state (tibetan-consonant-transcription-alist . svm-state) |
179 | (tibetan-precomposed-transcription-alist . svm-state) | |
180 | (tibetan-wylie-non-stacking-alist . svm-state) | |
653b6bad KH |
181 | tibetan-subjoined-transcription-alist |
182 | tibetan-vowel-transcription-alist | |
183 | tibetan-modifier-transcription-alist | |
184 | tibetan-wylie-punctuation-alist) | |
cc7d79ad KH |
185 | (svm-state ;;(tibetan-wylie-quote-alist . vm-state) |
186 | (tibetan-vowel-transcription-alist . vm-state) | |
187 | (tibetan-subjoined-transcription-alist . svm-state) | |
188 | (tibetan-modifier-transcription-alist . m-state)) | |
189 | (vm-state (tibetan-vowel-transcription-alist . vm-state) | |
190 | (tibetan-modifier-transcription-alist . m-state)) | |
191 | (m-state (tibetan-modifier-transcription-alist . m-state))))) | |
2cd1b939 KH |
192 | |
193 | ;;; | |
653b6bad | 194 | ;;; TibKey key alignment based input method |
2cd1b939 KH |
195 | ;;; |
196 | ||
197 | (defconst tibetan-tibkey-to-transcription-alist | |
653b6bad | 198 | '(;; consonant |
2cd1b939 KH |
199 | ("`" . "`") ; sna ldan |
200 | ("~" . "~") ; sna ldan + nada | |
201 | ("q" . "k") ; ka | |
202 | ("Q" ."kSH") ; kSHa | |
203 | ("w" . "kh") ; kha | |
204 | ("e" . "g") ; ga | |
205 | ("r" . "ng") ; nga | |
206 | ("t" . "c") ; ca | |
207 | ("T" . "I") ; gi gu log | |
208 | ("y" . "ch") ; cha | |
209 | ("u" . "j") ; ja | |
210 | ("i" . "ny") ; nya | |
211 | ("o" . "t") ; ta | |
212 | ("O" . "T") ; Ta | |
213 | ("p" . "th") ; tha | |
214 | ("P" . "TH") ; THa | |
177c0ea7 | 215 | ("[" . "d") ; da |
2cd1b939 KH |
216 | ("{" . "D") ; Da |
217 | ("]" . "n") ; na | |
218 | ("}" . "N") ; Na | |
219 | ("a" . "p") ; pa | |
220 | ("A" . "a") ; Vowel a (not used in original TibKey) | |
221 | ("s" . "ph") ; pha | |
222 | ("d" . "b") ; ba | |
223 | ("f" . "m") ; ma | |
224 | ("F" . "M") ; anusvara | |
225 | ("g" . "u") ; zhabs kyu | |
226 | ("G" . "i") ; gi gu | |
227 | ("H" . ",") ; viraama | |
228 | ("j" . "o") ; naro | |
229 | ("J" . "e") ; 'greng bu | |
230 | ("k" . "ts") ; tsa | |
231 | ("l" . "tsh") ; tsha | |
232 | (";" . "dz") ; dza | |
233 | ("'" . "w") ; wa | |
234 | ("\"" . "+w") ; wa zur | |
235 | ("z" . "zh") ; zha | |
236 | ("x" . "z") ; za | |
237 | ("c" . "'") ; 'a | |
238 | ("C" . "+'") ; 'a chung | |
239 | ("v" . "y") ; ya | |
240 | ("V" . "+y") ; ya btags | |
241 | ("b" . "r") ; ra | |
242 | ("B" . "+r") ; ra btags | |
243 | ("n" . "l") ; la | |
244 | ("N" . "+l") ; la btags | |
245 | ("m" . "sh") ; sha | |
246 | ("M" . "SH") ; SHa | |
247 | ("," . "s") ; sa | |
248 | ("." . "h") ; ha | |
249 | ("/" . "A") ; Aa | |
653b6bad | 250 | ;; subjoined |
2cd1b939 KH |
251 | ("hq" . "+k") ; ka |
252 | ("hQ" ."+kSH") ; kSHa | |
253 | ("hw" . "+kh") ; kha | |
254 | ("he" . "+g") ; ga | |
255 | ("hr" . "+ng") ; nga | |
256 | ("ht" . "+c") ; ca | |
257 | ("hy" . "+ch") ; cha | |
258 | ("hu" . "+j") ; ja | |
259 | ("hi" . "+ny") ; nya | |
260 | ("ho" . "+t") ; ta | |
261 | ("hO" . "+T") ; Ta | |
262 | ("hp" . "+th") ; tha | |
263 | ("hP" . "+TH") ; THa | |
177c0ea7 | 264 | ("h[" . "+d") ; da |
2cd1b939 KH |
265 | ("h{" . "+D") ; Da |
266 | ("h]" . "+n") ; na | |
267 | ("h}" . "+N") ; Na | |
177c0ea7 | 268 | ("ha" . "+p") ; pa |
2cd1b939 KH |
269 | ("hs" . "+ph") ; pha |
270 | ("hd" . "+b") ; ba | |
271 | ("hf" . "+m") ; ma | |
272 | ("hk" . "+ts") ; tsa | |
273 | ("hl" . "+tsh") ; tsha | |
274 | ("h;" . "+dz") ; dza | |
275 | ("h'" . "+w") ; wa | |
276 | ("hz" . "+zh") ; zha | |
277 | ("hx" . "+z") ; za | |
278 | ("hc" . "+'") ; 'a | |
279 | ("hv" . "+y") ; ya | |
280 | ("hb" . "+r") ; ra | |
281 | ("hn" . "+l") ; la | |
282 | ("hm" . "+sh") ; sha | |
283 | ("hM" . "+SH") ; SHa | |
284 | ("h," . "+s") ; sa | |
285 | ("h." . "+h") ; ha | |
286 | ("h/" . "+A") ; Aa | |
653b6bad KH |
287 | ;; Special rule for `\e$(7"B\e(B' to avoid stacking. |
288 | ("E" . "-y") | |
2cd1b939 KH |
289 | )) |
290 | ||
653b6bad KH |
291 | (defconst tibetan-consonant-tibkey-alist nil) |
292 | (defconst tibetan-subjoined-tibkey-alist nil) | |
293 | (defconst tibetan-vowel-tibkey-alist nil) | |
294 | (defconst tibetan-modifier-tibkey-alist nil) | |
295 | (defconst tibetan-non-stacking-tibkey-alist nil) | |
296 | ||
297 | (let ((type-list '("consonant" "subjoined" "vowel" "modifier" "non-stacking")) | |
298 | (tail tibetan-tibkey-to-transcription-alist) | |
299 | elt) | |
300 | (while tail | |
301 | (setq elt (car tail) tail (cdr tail)) | |
302 | (let ((types type-list) | |
303 | type transcription trans-alist tibkey-alist) | |
304 | (while types | |
305 | (setq type (car types) types (cdr types)) | |
306 | (setq trans-alist | |
307 | (if (string= type "non-stacking") | |
308 | 'tibetan-wylie-non-stacking-alist | |
309 | (intern (format "tibetan-%s-transcription-alist" type))) | |
310 | transcription | |
311 | (cdr (assoc (cdr elt) (symbol-value trans-alist)))) | |
312 | (when transcription | |
313 | (setq tibkey-alist (intern (format "tibetan-%s-tibkey-alist" type))) | |
314 | (set tibkey-alist | |
315 | (cons (cons (car elt) transcription) | |
316 | (symbol-value tibkey-alist))))) | |
317 | (or tibkey-alist | |
318 | (error "No Tibetan transcription for %s" (cdr elt)))))) | |
319 | ||
320 | (defconst tibetan-punctuation-tibkey-alist | |
321 | '(("1" . "\e$(7!Q\e(B") | |
cc7d79ad | 322 | ("!" . "\e$(7!4\e(B") ; nyi zla long |
653b6bad | 323 | ("2" . "\e$(7!R\e(B") |
cc7d79ad | 324 | ("@" . "\e$(7!5\e(B") ; nyi zla simple |
653b6bad KH |
325 | ("3" . "\e$(7!S\e(B") |
326 | ;;; ("#" ) | |
327 | ("4" . "\e$(7!T\e(B") | |
328 | ;;; ("$" ) | |
329 | ("5" . "\e$(7!U\e(B") | |
cc7d79ad | 330 | ("%" . "\e$(7!D\e(B") |
653b6bad KH |
331 | ("6" . "\e$(7!V\e(B") |
332 | ("^" . "\e$(7!1\e(B") | |
333 | ("7" . "\e$(7!W\e(B") | |
334 | ("8" . "\e$(7!X\e(B") | |
335 | ;;; ("*" ) ; avagraha, not supported yet | |
336 | ("9" . "\e$(7!Y\e(B") | |
337 | ("(" . "\e$(7!l\e(B") | |
338 | ("0" . "\e$(7!P\e(B") | |
339 | (")" . "\e$(7!m\e(B") | |
4c36be58 | 340 | ;;; ("-" ) ; emphatic, not yet supported |
653b6bad KH |
341 | ;;; ("_" ) ; id. |
342 | ;;; ("=" ) ; special sign, not yet supported | |
cc7d79ad KH |
343 | ("+" . "\e$(7!A\e(B") |
344 | ("\\" . "\e$(7!?\e(B") | |
653b6bad KH |
345 | ("|" . "\e$(7!8\e(B") |
346 | ("I" . "\e$(7"f\e(B") ; avagraha | |
cc7d79ad KH |
347 | (":" . "\e$(7"`\e(B") |
348 | ;;; (">" ?\e$(7!;\e(B) ; to be assigned to SPC | |
653b6bad | 349 | (">" . " ") |
cc7d79ad | 350 | ("?" . "\e$(7!=\e(B") |
653b6bad KH |
351 | ("??" . "\e$(7!>\e(B") |
352 | ("????" . ["\e$(7!>\e(B \e$(7!>\e(B"]) | |
cc7d79ad | 353 | (" " . "\e$(7!;\e(B") |
653b6bad | 354 | )) |
2cd1b939 | 355 | |
653b6bad KH |
356 | ;; Convert TibKey string to Tibetan-Roman transcription string. |
357 | ;; If there's no proper conversion, return nil. | |
358 | (defun quail-tibkey-to-transcription (tibkey) | |
359 | (let ((len (length tibkey)) | |
360 | (i 0) | |
361 | (trans-list nil)) | |
362 | (while (< i len) | |
363 | (let ((last len) | |
364 | trans) | |
365 | (while (and (not trans) (> last i)) | |
366 | (or (setq trans (cdr (assoc (substring tibkey i last) | |
367 | tibetan-tibkey-to-transcription-alist))) | |
368 | (setq last (1- last)))) | |
369 | (if trans | |
370 | (setq trans-list (cons trans trans-list) | |
371 | i last) | |
372 | (setq trans-list nil i len)))) | |
373 | (apply 'concat (nreverse trans-list)))) | |
374 | ||
375 | (defvar quail-tibkey-characters nil) | |
376 | ||
377 | (defun quail-tibkey-update-translation (control-flag) | |
378 | (if (integerp control-flag) | |
379 | ;; Non-composable-character typed. | |
380 | (setq quail-current-str | |
381 | (buffer-substring (overlay-start quail-overlay) | |
382 | (overlay-end quail-overlay)) | |
383 | unread-command-events | |
384 | (string-to-list | |
385 | (substring quail-current-key control-flag))) | |
386 | (let ((transcription (quail-tibkey-to-transcription quail-current-key))) | |
387 | (if (> (length transcription) 0) | |
388 | (let ((quail-current-key transcription)) | |
389 | (setq control-flag | |
390 | (quail-tibetan-update-translation control-flag))) | |
391 | (or quail-current-str | |
392 | (setq quail-current-str quail-current-key))))) | |
393 | control-flag) | |
2cd1b939 KH |
394 | |
395 | (quail-define-package "tibetan-tibkey" "Tibetan" "TIBt" t | |
396 | "Tibetan character input by TibKey key assignment. | |
397 | ||
653b6bad | 398 | \(This implementation is still incomplete. |
2cd1b939 KH |
399 | Therefore, the following key assignment is a provisional one.) |
400 | ||
401 | [NOT SHIFTED] | |
402 | ||
403 | +-------------------------------------------------------+ | |
404 | |`\e$(7"d\e(B|1\e$(7!Q\e(B|2\e$(7!R\e(B|3\e$(7!S\e(B|4\e$(7!T\e(B|5\e$(7!U\e(B|6\e$(7!V\e(B|7\e$(7!W\e(B|8\e$(7!X\e(B|9\e$(7!Y\e(B|0\e$(7!P\e(B|- |= |\\\e$(7!8\e(B| | |
405 | +-------------------------------------------------------+ | |
406 | |q\e$(7"!\e(B|w\e$(7""\e(B|e\e$(7"#\e(B|r\e$(7"%\e(B|t\e$(7"&\e(B|y\e$(7"'\e(B|u\e$(7"(\e(B|i\e$(7"*\e(B|o\e$(7"0\e(B|p\e$(7"1\e(B|[\e$(7"2\e(B|]\e$(7"4\e(B| | |
407 | +-----------------------------------------------+ | |
408 | |a\e$(7"5\e(B| s\e$(7"6\e(B| d\e$(7"7\e(B|f\e$(7"9\e(B|g\e$(7"U\e(B|h |j\e$(7"]\e(B|k\e$(7":\e(B|l\e$(7";\e(B|;\e$(7"<\e(B|'\e$(7">\e(B| | |
409 | +---------------------------------------------+ | |
410 | |z\e$(7"?\e(B|x\e$(7"@\e(B|c\e$(7"A\e(B|v\e$(7"B\e(B|b\e$(7"C\e(B|n\e$(7"D\e(B|m\e$(7"E\e(B|,\e$(7"G\e(B|.\e$(7"H\e(B|/\e$(7"I\e(B| | |
411 | +---------------------------------------+ | |
412 | The key 'h' is used for consonant stacking. | |
413 | ||
414 | [SHIFTED] | |
415 | ||
416 | +----------------------------------------------------------+ | |
cc7d79ad | 417 | |~\e$(7"c\e(B|!\e$(7!4\e(B|@\e$(7!5\e(B|# |$ |%\e$(7!D\e(B |^\e$(7!1\e(B|& |* |(\e$(7!l\e(B|)\e$(7!m\e(B|_ |+\e$(7!A\e(B| |\e$(7!8\e(B| |
2cd1b939 | 418 | +----------------------------------------------------------+ |
cc7d79ad | 419 | |Q\e$(7"J\e(B|W |E |R |T\e$(7"a\e(B|Y |U |I\e$(7"f\e(B|O\e$(7"+\e(B|P\e$(7",\e(B|{\e$(7"-\e(B|}\e$(7"/\e(B| |
2cd1b939 KH |
420 | +-----------------------------------------------+ |
421 | |A |S |D |F\e$(7"_\e(B|G\e$(7"S\e(B|H\e$(7"e\e(B|J\e$(7"[\e(B|K |L |:\e$(7"`\e(B|\"\e$(7#>\e(B| | |
422 | +-------------------------------------------+ | |
cc7d79ad | 423 | |Z |X |C\e$(7"R\e(B|V\e$(7#B\e(B|B\e$(7#C\e(B|N\e$(7#D\e(B|M\e$(7"F\e(B|< |> |?\e$(7!=\e(B | |
177c0ea7 | 424 | +---------------------------------------+ |
2cd1b939 KH |
425 | |
426 | DIFFERENCE FROM THE ORIGINAL TIBKEY: | |
427 | ||
428 | 1. Vowel 'a' should be typed explicitly by the key 'A'. | |
429 | This is really inconvenient. But to make the coding | |
c7015153 | 430 | scheme clear, it is desirable to have an explicit |
2cd1b939 KH |
431 | vowel sign for 'a'. |
432 | 2. Tsheg is assigned to SPC key. You can input a space | |
433 | by typing '>'. | |
434 | 4. To avoid the default stacking \e$(7$B\e(B and to obtain \e$(7"#"B\e(B, | |
435 | type 'E' instead of 'v' (=\e$(7"B\e(B). | |
436 | 3. There are many characters that are not supported in the | |
437 | current implementation (especially special signs). I hope | |
438 | I'll complete in a future revision. | |
439 | " | |
653b6bad KH |
440 | nil nil nil nil nil nil nil nil |
441 | 'quail-tibkey-update-translation) | |
442 | ||
443 | (quail-install-map | |
444 | (quail-map-from-table | |
445 | '((base-state (tibetan-consonant-tibkey-alist . s-state) | |
446 | (tibetan-non-stacking-tibkey-alist . s-state) | |
447 | tibetan-subjoined-tibkey-alist | |
448 | tibetan-vowel-tibkey-alist | |
449 | tibetan-modifier-tibkey-alist | |
450 | tibetan-punctuation-tibkey-alist) | |
451 | (s-state (tibetan-subjoined-tibkey-alist . s-state) | |
452 | (tibetan-vowel-tibkey-alist . m-state)) | |
453 | (m-state tibetan-modifier-tibkey-alist)))) | |
be567141 PJ |
454 | |
455 | ;;; tibetan.el ends here |