*** empty log message ***
[m17n/m17n-lib-js.git] / vi-telex.mimx
1 <?xml version='1.0'?>
2 <input-method xmlns="http://www.m17n.org/MIM">
3   <tags>
4     <language>vi</language>
5     <name>telex</name>
6   </tags>
7   <description>
8     <gettext>Vietnames input method using the TELEX key sequence.
9 Typing Backslash ('\') toggles the normal mode and English mode.
10 The following variables are customizable:
11   tone-mark-on-last: control tone mark position in equivocal cases
12   backspace-is-undo: control the action of Backspace key (delete or undo)</gettext>
13   </description>
14   <title>Ắ(TLX)</title>
15   <variable-list>
16     <defvar vname="tone-mark-on-last">
17       <description>
18         <gettext>Flag to control tone mark position in equivocal cases.
19 If this variable is 0 (the default), put tone mark on the first vowel
20 in such equivocal cases as "oa", "oe", "uy".
21 Otherwise, put tone mark on the last vowel.</gettext>
22       </description>
23       <integer>0</integer>
24       <possible-value>
25         <integer>0</integer>
26         <integer>1</integer>
27       </possible-value>
28     </defvar>
29     <defvar vname="backspace-is-undo">
30       <description>
31         <gettext>Flag to control the action of Backspace key (delete or undo).
32 If this variable is 0 (the default), Backspace key deletes the previous
33 character (e.g. "q u a i s BS" =&gt; "quá").
34 If the value is 1, Backspace key undoes the previous key
35 (e.g. "q u a i s BS" =&gt; "quai").</gettext>
36       </description>
37       <integer>0</integer>
38       <possible-value>
39         <integer>0</integer>
40         <integer>1</integer>
41       </possible-value>
42     </defvar>
43   </variable-list>
44   <macro-list>
45     <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="vi-base.mimx" xpointer="xmlns(mim=http://www.m17n.org/MIM)xpointer(//mim:defmacro)">
46       <tags>
47         <language>t</language>
48         <name>nil</name>
49         <extra-id>vi-base</extra-id>
50       </tags>
51       <section>macro</section>
52     </xi:include>
53   </macro-list>
54   <map-list>
55     <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="vi-base.mimx" xpointer="xmlns(mim=http://www.m17n.org/MIM)xpointer(//mim:map)">
56       <tags>
57         <language>t</language>
58         <name>nil</name>
59         <extra-id>vi-base</extra-id>
60       </tags>
61       <section>map</section>
62     </xi:include>
63     <map mname="map-vowel-ext">
64       <rule>
65         <keyseq>
66           <string>aa</string>
67         </keyseq>
68         <insert-candidates>
69           <string>âấầẩẫậ</string>
70         </insert-candidates>
71       </rule>
72       <rule>
73         <keyseq>
74           <string>AA</string>
75         </keyseq>
76         <insert-candidates>
77           <string>ÂẤẦẨẪẬ</string>
78         </insert-candidates>
79       </rule>
80       <rule>
81         <keyseq>
82           <string>Aa</string>
83         </keyseq>
84         <insert-candidates>
85           <string>ÂẤẦẨẪẬ</string>
86         </insert-candidates>
87       </rule>
88       <rule>
89         <keyseq>
90           <string>aw</string>
91         </keyseq>
92         <insert-candidates>
93           <string>ăắằẳẵặ</string>
94         </insert-candidates>
95       </rule>
96       <rule>
97         <keyseq>
98           <string>AW</string>
99         </keyseq>
100         <insert-candidates>
101           <string>ĂẮẰẲẴẶ</string>
102         </insert-candidates>
103       </rule>
104       <rule>
105         <keyseq>
106           <string>Aw</string>
107         </keyseq>
108         <insert-candidates>
109           <string>ĂẮẰẲẴẶ</string>
110         </insert-candidates>
111       </rule>
112       <rule>
113         <keyseq>
114           <string>ee</string>
115         </keyseq>
116         <insert-candidates>
117           <string>êếềểễệ</string>
118         </insert-candidates>
119       </rule>
120       <rule>
121         <keyseq>
122           <string>EE</string>
123         </keyseq>
124         <insert-candidates>
125           <string>ÊẾỀỂỄỆ</string>
126         </insert-candidates>
127       </rule>
128       <rule>
129         <keyseq>
130           <string>Ee</string>
131         </keyseq>
132         <insert-candidates>
133           <string>ÊẾỀỂỄỆ</string>
134         </insert-candidates>
135       </rule>
136       <rule>
137         <keyseq>
138           <string>oo</string>
139         </keyseq>
140         <insert-candidates>
141           <string>ôốồổỗộ</string>
142         </insert-candidates>
143       </rule>
144       <rule>
145         <keyseq>
146           <string>OO</string>
147         </keyseq>
148         <insert-candidates>
149           <string>ÔỐỒỔỖỘ</string>
150         </insert-candidates>
151       </rule>
152       <rule>
153         <keyseq>
154           <string>Oo</string>
155         </keyseq>
156         <insert-candidates>
157           <string>ÔỐỒỔỖỘ</string>
158         </insert-candidates>
159       </rule>
160       <rule>
161         <keyseq>
162           <string>ow</string>
163         </keyseq>
164         <insert-candidates>
165           <string>ơớờởỡợ</string>
166         </insert-candidates>
167       </rule>
168       <rule>
169         <keyseq>
170           <string>OW</string>
171         </keyseq>
172         <insert-candidates>
173           <string>ƠỚỜỞỠỢ</string>
174         </insert-candidates>
175       </rule>
176       <rule>
177         <keyseq>
178           <string>Ow</string>
179         </keyseq>
180         <insert-candidates>
181           <string>ƠỚỜỞỠỢ</string>
182         </insert-candidates>
183       </rule>
184       <rule>
185         <keyseq>
186           <string>uw</string>
187         </keyseq>
188         <insert-candidates>
189           <string>ưứừửữự</string>
190         </insert-candidates>
191       </rule>
192       <rule>
193         <keyseq>
194           <string>UW</string>
195         </keyseq>
196         <insert-candidates>
197           <string>ƯỨỪỬỮỰ</string>
198         </insert-candidates>
199       </rule>
200       <rule>
201         <keyseq>
202           <string>Uw</string>
203         </keyseq>
204         <insert-candidates>
205           <string>ƯỨỪỬỮỰ</string>
206         </insert-candidates>
207       </rule>
208       <rule>
209         <keyseq>
210           <string>w</string>
211         </keyseq>
212         <cond>
213           <list>
214             <eq>
215               <varref vname="V-1"/>
216               <integer>0</integer>
217             </eq>
218             <insert-candidates>
219               <string>ưứừửữự</string>
220             </insert-candidates>
221           </list>
222           <list>
223             <integer>1</integer>
224             <insert>
225               <string>w</string>
226             </insert>
227           </list>
228         </cond>
229       </rule>
230       <rule>
231         <keyseq>
232           <string>W</string>
233         </keyseq>
234         <cond>
235           <list>
236             <eq>
237               <varref vname="V-1"/>
238               <integer>0</integer>
239             </eq>
240             <insert-candidates>
241               <string>ƯỨỪỬỮỰ</string>
242             </insert-candidates>
243           </list>
244           <list>
245             <integer>1</integer>
246             <insert>
247               <string>W</string>
248             </insert>
249           </list>
250         </cond>
251       </rule>
252       <rule>
253         <keyseq>
254           <string>ooo</string>
255         </keyseq>
256         <insert-candidates>
257           <string>oóòỏõọ</string>
258         </insert-candidates>
259         <insert-candidates>
260           <string>oóòỏõọ</string>
261         </insert-candidates>
262         <set vname="V-2">
263           <varref vname="V-1"/>
264         </set>
265         <set vname="V-1">
266           <integer>111</integer>
267         </set>
268       </rule>
269       <rule>
270         <keyseq>
271           <string>OOO</string>
272         </keyseq>
273         <insert-candidates>
274           <string>OÓÒỎÕỌ</string>
275         </insert-candidates>
276         <insert-candidates>
277           <string>OÓÒỎÕỌ</string>
278         </insert-candidates>
279         <set vname="V-2">
280           <varref vname="V-1"/>
281         </set>
282         <set vname="V-1">
283           <integer>79</integer>
284         </set>
285       </rule>
286       <rule>
287         <keyseq>
288           <string>Ooo</string>
289         </keyseq>
290         <insert-candidates>
291           <string>OÓÒỎÕỌ</string>
292         </insert-candidates>
293         <insert-candidates>
294           <string>oóòỏõọ</string>
295         </insert-candidates>
296         <set vname="V-2">
297           <varref vname="V-1"/>
298         </set>
299         <set vname="V-1">
300           <integer>79</integer>
301         </set>
302       </rule>
303     </map>
304     <map mname="map-consonant-ext">
305       <rule>
306         <keyseq>
307           <string>dd</string>
308         </keyseq>
309         <insert>
310           <integer>273</integer>
311         </insert>
312       </rule>
313       <rule>
314         <keyseq>
315           <string>DD</string>
316         </keyseq>
317         <insert>
318           <integer>272</integer>
319         </insert>
320       </rule>
321       <rule>
322         <keyseq>
323           <string>Dd</string>
324         </keyseq>
325         <insert>
326           <integer>272</integer>
327         </insert>
328       </rule>
329     </map>
330     <map mname="map-tone-mark">
331       <rule>
332         <keyseq>
333           <string>z</string>
334         </keyseq>
335         <set vname="SELECT">
336           <integer>0</integer>
337         </set>
338         <insert>
339           <integer>122</integer>
340         </insert>
341       </rule>
342       <rule>
343         <keyseq>
344           <string>Z</string>
345         </keyseq>
346         <set vname="SELECT">
347           <integer>0</integer>
348         </set>
349         <insert>
350           <integer>90</integer>
351         </insert>
352       </rule>
353       <rule>
354         <keyseq>
355           <string>s</string>
356         </keyseq>
357         <set vname="SELECT">
358           <integer>1</integer>
359         </set>
360         <insert>
361           <integer>115</integer>
362         </insert>
363       </rule>
364       <rule>
365         <keyseq>
366           <string>S</string>
367         </keyseq>
368         <set vname="SELECT">
369           <integer>1</integer>
370         </set>
371         <insert>
372           <integer>83</integer>
373         </insert>
374       </rule>
375       <rule>
376         <keyseq>
377           <string>f</string>
378         </keyseq>
379         <set vname="SELECT">
380           <integer>2</integer>
381         </set>
382         <insert>
383           <integer>102</integer>
384         </insert>
385       </rule>
386       <rule>
387         <keyseq>
388           <string>F</string>
389         </keyseq>
390         <set vname="SELECT">
391           <integer>2</integer>
392         </set>
393         <insert>
394           <integer>70</integer>
395         </insert>
396       </rule>
397       <rule>
398         <keyseq>
399           <string>r</string>
400         </keyseq>
401         <set vname="SELECT">
402           <integer>3</integer>
403         </set>
404         <insert>
405           <integer>114</integer>
406         </insert>
407       </rule>
408       <rule>
409         <keyseq>
410           <string>R</string>
411         </keyseq>
412         <set vname="SELECT">
413           <integer>3</integer>
414         </set>
415         <insert>
416           <integer>82</integer>
417         </insert>
418       </rule>
419       <rule>
420         <keyseq>
421           <string>x</string>
422         </keyseq>
423         <set vname="SELECT">
424           <integer>4</integer>
425         </set>
426         <insert>
427           <integer>120</integer>
428         </insert>
429       </rule>
430       <rule>
431         <keyseq>
432           <string>X</string>
433         </keyseq>
434         <set vname="SELECT">
435           <integer>4</integer>
436         </set>
437         <insert>
438           <integer>88</integer>
439         </insert>
440       </rule>
441       <rule>
442         <keyseq>
443           <string>j</string>
444         </keyseq>
445         <set vname="SELECT">
446           <integer>5</integer>
447         </set>
448         <insert>
449           <integer>106</integer>
450         </insert>
451       </rule>
452       <rule>
453         <keyseq>
454           <string>J</string>
455         </keyseq>
456         <set vname="SELECT">
457           <integer>5</integer>
458         </set>
459         <insert>
460           <integer>74</integer>
461         </insert>
462       </rule>
463     </map>
464     <map mname="map-consonant-or-tone-mark">
465       <rule>
466         <keyseq>
467           <string>z</string>
468         </keyseq>
469         <insert>
470           <integer>122</integer>
471         </insert>
472       </rule>
473       <rule>
474         <keyseq>
475           <string>s</string>
476         </keyseq>
477         <insert>
478           <integer>115</integer>
479         </insert>
480       </rule>
481       <rule>
482         <keyseq>
483           <string>f</string>
484         </keyseq>
485         <insert>
486           <integer>102</integer>
487         </insert>
488       </rule>
489       <rule>
490         <keyseq>
491           <string>r</string>
492         </keyseq>
493         <insert>
494           <integer>114</integer>
495         </insert>
496       </rule>
497       <rule>
498         <keyseq>
499           <string>x</string>
500         </keyseq>
501         <insert>
502           <integer>120</integer>
503         </insert>
504       </rule>
505       <rule>
506         <keyseq>
507           <string>j</string>
508         </keyseq>
509         <insert>
510           <integer>106</integer>
511         </insert>
512       </rule>
513       <rule>
514         <keyseq>
515           <string>Z</string>
516         </keyseq>
517         <insert>
518           <integer>90</integer>
519         </insert>
520       </rule>
521       <rule>
522         <keyseq>
523           <string>S</string>
524         </keyseq>
525         <insert>
526           <integer>83</integer>
527         </insert>
528       </rule>
529       <rule>
530         <keyseq>
531           <string>F</string>
532         </keyseq>
533         <insert>
534           <integer>70</integer>
535         </insert>
536       </rule>
537       <rule>
538         <keyseq>
539           <string>R</string>
540         </keyseq>
541         <insert>
542           <integer>82</integer>
543         </insert>
544       </rule>
545       <rule>
546         <keyseq>
547           <string>X</string>
548         </keyseq>
549         <insert>
550           <integer>88</integer>
551         </insert>
552       </rule>
553       <rule>
554         <keyseq>
555           <string>J</string>
556         </keyseq>
557         <insert>
558           <integer>74</integer>
559         </insert>
560       </rule>
561     </map>
562     <map mname="map-temporary-escape">
563       <rule>
564         <keyseq>
565           <string>aaa</string>
566         </keyseq>
567         <insert>
568           <string>aa</string>
569         </insert>
570       </rule>
571       <rule>
572         <keyseq>
573           <string>AAA</string>
574         </keyseq>
575         <insert>
576           <string>AA</string>
577         </insert>
578       </rule>
579       <rule>
580         <keyseq>
581           <string>Aaa</string>
582         </keyseq>
583         <insert>
584           <string>Aa</string>
585         </insert>
586       </rule>
587       <rule>
588         <keyseq>
589           <string>eee</string>
590         </keyseq>
591         <insert>
592           <string>ee</string>
593         </insert>
594       </rule>
595       <rule>
596         <keyseq>
597           <string>EEE</string>
598         </keyseq>
599         <insert>
600           <string>EE</string>
601         </insert>
602       </rule>
603       <rule>
604         <keyseq>
605           <string>Eee</string>
606         </keyseq>
607         <insert>
608           <string>Ee</string>
609         </insert>
610       </rule>
611       <rule>
612         <keyseq>
613           <string>ddd</string>
614         </keyseq>
615         <insert>
616           <string>dd</string>
617         </insert>
618       </rule>
619       <rule>
620         <keyseq>
621           <string>DDD</string>
622         </keyseq>
623         <insert>
624           <string>DD</string>
625         </insert>
626       </rule>
627       <rule>
628         <keyseq>
629           <string>Ddd</string>
630         </keyseq>
631         <insert>
632           <string>Dd</string>
633         </insert>
634       </rule>
635       <rule>
636         <keyseq>
637           <string>aww</string>
638         </keyseq>
639         <insert>
640           <string>aw</string>
641         </insert>
642       </rule>
643       <rule>
644         <keyseq>
645           <string>AWW</string>
646         </keyseq>
647         <insert>
648           <string>AW</string>
649         </insert>
650       </rule>
651       <rule>
652         <keyseq>
653           <string>Aww</string>
654         </keyseq>
655         <insert>
656           <string>Aw</string>
657         </insert>
658       </rule>
659       <rule>
660         <keyseq>
661           <string>uww</string>
662         </keyseq>
663         <insert>
664           <string>uw</string>
665         </insert>
666       </rule>
667       <rule>
668         <keyseq>
669           <string>UWW</string>
670         </keyseq>
671         <insert>
672           <string>UW</string>
673         </insert>
674       </rule>
675       <rule>
676         <keyseq>
677           <string>Uww</string>
678         </keyseq>
679         <insert>
680           <string>Uw</string>
681         </insert>
682       </rule>
683       <rule>
684         <keyseq>
685           <string>oww</string>
686         </keyseq>
687         <insert>
688           <string>ow</string>
689         </insert>
690       </rule>
691       <rule>
692         <keyseq>
693           <string>OWW</string>
694         </keyseq>
695         <insert>
696           <string>OW</string>
697         </insert>
698       </rule>
699       <rule>
700         <keyseq>
701           <string>Oww</string>
702         </keyseq>
703         <insert>
704           <string>Ow</string>
705         </insert>
706       </rule>
707       <rule>
708         <keyseq>
709           <string>ww</string>
710         </keyseq>
711         <insert>
712           <integer>119</integer>
713         </insert>
714       </rule>
715       <rule>
716         <keyseq>
717           <string>WW</string>
718         </keyseq>
719         <insert>
720           <integer>87</integer>
721         </insert>
722       </rule>
723       <rule>
724         <keyseq>
725           <string>Ww</string>
726         </keyseq>
727         <insert>
728           <integer>87</integer>
729         </insert>
730       </rule>
731       <rule>
732         <keyseq>
733           <string>zz</string>
734         </keyseq>
735         <insert>
736           <integer>122</integer>
737         </insert>
738       </rule>
739       <rule>
740         <keyseq>
741           <string>ZZ</string>
742         </keyseq>
743         <insert>
744           <integer>90</integer>
745         </insert>
746       </rule>
747       <rule>
748         <keyseq>
749           <string>Zz</string>
750         </keyseq>
751         <insert>
752           <integer>90</integer>
753         </insert>
754       </rule>
755       <rule>
756         <keyseq>
757           <string>ss</string>
758         </keyseq>
759         <insert>
760           <integer>115</integer>
761         </insert>
762       </rule>
763       <rule>
764         <keyseq>
765           <string>SS</string>
766         </keyseq>
767         <insert>
768           <integer>83</integer>
769         </insert>
770       </rule>
771       <rule>
772         <keyseq>
773           <string>Ss</string>
774         </keyseq>
775         <insert>
776           <integer>83</integer>
777         </insert>
778       </rule>
779       <rule>
780         <keyseq>
781           <string>ff</string>
782         </keyseq>
783         <insert>
784           <integer>102</integer>
785         </insert>
786       </rule>
787       <rule>
788         <keyseq>
789           <string>FF</string>
790         </keyseq>
791         <insert>
792           <integer>70</integer>
793         </insert>
794       </rule>
795       <rule>
796         <keyseq>
797           <string>Ff</string>
798         </keyseq>
799         <insert>
800           <integer>70</integer>
801         </insert>
802       </rule>
803       <rule>
804         <keyseq>
805           <string>rr</string>
806         </keyseq>
807         <insert>
808           <integer>114</integer>
809         </insert>
810       </rule>
811       <rule>
812         <keyseq>
813           <string>RR</string>
814         </keyseq>
815         <insert>
816           <integer>82</integer>
817         </insert>
818       </rule>
819       <rule>
820         <keyseq>
821           <string>Rr</string>
822         </keyseq>
823         <insert>
824           <integer>82</integer>
825         </insert>
826       </rule>
827       <rule>
828         <keyseq>
829           <string>xx</string>
830         </keyseq>
831         <insert>
832           <integer>120</integer>
833         </insert>
834       </rule>
835       <rule>
836         <keyseq>
837           <string>XX</string>
838         </keyseq>
839         <insert>
840           <integer>88</integer>
841         </insert>
842       </rule>
843       <rule>
844         <keyseq>
845           <string>Xx</string>
846         </keyseq>
847         <insert>
848           <integer>88</integer>
849         </insert>
850       </rule>
851       <rule>
852         <keyseq>
853           <string>jj</string>
854         </keyseq>
855         <insert>
856           <integer>106</integer>
857         </insert>
858       </rule>
859       <rule>
860         <keyseq>
861           <string>JJ</string>
862         </keyseq>
863         <insert>
864           <integer>74</integer>
865         </insert>
866       </rule>
867       <rule>
868         <keyseq>
869           <string>Jj</string>
870         </keyseq>
871         <insert>
872           <integer>74</integer>
873         </insert>
874       </rule>
875     </map>
876   </map-list>
877   <state-list>
878     <state sname="state-init">
879       <state-hook>
880         <set vname="C">
881           <char-at>
882             <marker>@-1</marker>
883           </char-at>
884         </set>
885         <set vname="V-1">
886           <integer>0</integer>
887         </set>
888         <set vname="V-2">
889           <integer>0</integer>
890         </set>
891         <set vname="V-3">
892           <integer>0</integer>
893         </set>
894         <set vname="C-AFTER-V">
895           <integer>0</integer>
896         </set>
897         <set vname="SELECT">
898           <integer>0</integer>
899         </set>
900         <set vname="NST">
901           <eq>
902             <surrounding-text-flag/>
903             <integer>-2</integer>
904           </eq>
905         </set>
906       </state-hook>
907       <branch mname="map-consonant">
908         <set vname="C">
909           <char-at>
910             <marker>@-1</marker>
911           </char-at>
912         </set>
913         <cond>
914           <list>
915             <varref vname="NST"/>
916             <shift>
917               <symbol>state-after-c</symbol>
918             </shift>
919           </list>
920         </cond>
921       </branch>
922       <branch mname="map-consonant-ext">
923         <set vname="C">
924           <char-at>
925             <marker>@-1</marker>
926           </char-at>
927         </set>
928         <cond>
929           <list>
930             <varref vname="NST"/>
931             <shift>
932               <symbol>state-after-c</symbol>
933             </shift>
934           </list>
935         </cond>
936       </branch>
937       <branch mname="map-consonant-or-tone-mark">
938         <cond>
939           <list>
940             <logior>
941               <eq>
942                 <char-at>
943                   <marker>@-1</marker>
944                 </char-at>
945                 <integer>102</integer>
946               </eq>
947               <eq>
948                 <char-at>
949                   <marker>@-1</marker>
950                 </char-at>
951                 <integer>106</integer>
952               </eq>
953               <eq>
954                 <char-at>
955                   <marker>@-1</marker>
956                 </char-at>
957                 <integer>122</integer>
958               </eq>
959               <eq>
960                 <char-at>
961                   <marker>@-1</marker>
962                 </char-at>
963                 <integer>70</integer>
964               </eq>
965               <eq>
966                 <char-at>
967                   <marker>@-1</marker>
968                 </char-at>
969                 <integer>74</integer>
970               </eq>
971               <eq>
972                 <char-at>
973                   <marker>@-1</marker>
974                 </char-at>
975                 <integer>90</integer>
976               </eq>
977             </logior>
978             <shift>
979               <symbol>state-temporary-escape</symbol>
980             </shift>
981           </list>
982           <list>
983             <integer>1</integer>
984             <set vname="C">
985               <char-at>
986                 <marker>@-1</marker>
987               </char-at>
988             </set>
989             <cond>
990               <list>
991                 <varref vname="NST"/>
992                 <shift>
993                   <symbol>state-after-c</symbol>
994                 </shift>
995               </list>
996             </cond>
997           </list>
998         </cond>
999       </branch>
1000       <branch mname="map-vowel">
1001         <mark>
1002           <marker>M</marker>
1003         </mark>
1004         <set vname="V-2">
1005           <varref vname="V-1"/>
1006         </set>
1007         <set vname="V-1">
1008           <char-at>
1009             <marker>@-1</marker>
1010           </char-at>
1011         </set>
1012         <shift>
1013           <symbol>state-after-v</symbol>
1014         </shift>
1015       </branch>
1016       <branch mname="map-vowel-ext">
1017         <mark>
1018           <marker>M</marker>
1019         </mark>
1020         <set vname="V-2">
1021           <varref vname="V-1"/>
1022         </set>
1023         <set vname="V-1">
1024           <char-at>
1025             <marker>@-1</marker>
1026           </char-at>
1027         </set>
1028         <shift>
1029           <symbol>state-after-v</symbol>
1030         </shift>
1031       </branch>
1032       <branch mname="map-temporary-escape">
1033         <shift>
1034           <symbol>state-temporary-escape</symbol>
1035         </shift>
1036       </branch>
1037       <branch mname="map-permanent-escape">
1038         <shift>
1039           <symbol>state-escape-in-normal-mode</symbol>
1040         </shift>
1041       </branch>
1042       <branch mname="map-smart-quotes"/>
1043     </state>
1044     <state sname="state-after-c">
1045       <branch mname="map-vowel">
1046         <mark>
1047           <marker>M</marker>
1048         </mark>
1049         <set vname="V-2">
1050           <varref vname="V-1"/>
1051         </set>
1052         <set vname="V-1">
1053           <char-at>
1054             <marker>@-1</marker>
1055           </char-at>
1056         </set>
1057         <shift>
1058           <symbol>state-after-v</symbol>
1059         </shift>
1060       </branch>
1061       <branch mname="map-vowel-ext">
1062         <mark>
1063           <marker>M</marker>
1064         </mark>
1065         <set vname="V-2">
1066           <varref vname="V-1"/>
1067         </set>
1068         <set vname="V-1">
1069           <char-at>
1070             <marker>@-1</marker>
1071           </char-at>
1072         </set>
1073         <shift>
1074           <symbol>state-after-v</symbol>
1075         </shift>
1076       </branch>
1077     </state>
1078     <state sname="state-after-v">
1079       <branch mname="map-ending-1st-consonant">
1080         <funcall fname="macro-handle-mark"/>
1081         <shift>
1082           <symbol>state-after-vc</symbol>
1083         </shift>
1084       </branch>
1085       <branch mname="map-vowel">
1086         <mark>
1087           <marker>M</marker>
1088         </mark>
1089         <set vname="V-3">
1090           <varref vname="V-2"/>
1091         </set>
1092         <set vname="V-2">
1093           <varref vname="V-1"/>
1094         </set>
1095         <set vname="V-1">
1096           <char-at>
1097             <marker>@-1</marker>
1098           </char-at>
1099         </set>
1100         <move>
1101           <marker>T</marker>
1102         </move>
1103         <select>
1104           <integer>0</integer>
1105         </select>
1106         <funcall fname="macro-handle-mark"/>
1107         <move>
1108           <marker>M</marker>
1109         </move>
1110       </branch>
1111       <branch mname="map-vowel-ext">
1112         <mark>
1113           <marker>M</marker>
1114         </mark>
1115         <set vname="V-3">
1116           <varref vname="V-2"/>
1117         </set>
1118         <set vname="V-2">
1119           <varref vname="V-1"/>
1120         </set>
1121         <set vname="V-1">
1122           <char-at>
1123             <marker>@-1</marker>
1124           </char-at>
1125         </set>
1126         <move>
1127           <marker>T</marker>
1128         </move>
1129         <select>
1130           <integer>0</integer>
1131         </select>
1132         <funcall fname="macro-handle-mark"/>
1133         <move>
1134           <marker>M</marker>
1135         </move>
1136       </branch>
1137       <branch mname="map-ending-1st-notviet-consonant">
1138         <shift>
1139           <symbol>state-temporary-escape</symbol>
1140         </shift>
1141       </branch>
1142       <branch mname="map-consonant-or-tone-mark">
1143         <delete>
1144           <marker>@-</marker>
1145         </delete>
1146         <pushback>
1147           <integer>1</integer>
1148         </pushback>
1149         <shift>
1150           <symbol>state-after-t</symbol>
1151         </shift>
1152       </branch>
1153       <branch mname="map-backspace">
1154         <delete>
1155           <marker>@-</marker>
1156         </delete>
1157         <cond>
1158           <list>
1159             <varref vname="V-3"/>
1160             <set vname="V-1">
1161               <varref vname="V-2"/>
1162             </set>
1163             <set vname="V-2">
1164               <varref vname="V-3"/>
1165             </set>
1166             <set vname="V-3">
1167               <integer>0</integer>
1168             </set>
1169             <cond>
1170               <list>
1171                 <gt>
1172                   <varref vname="TPLACE"/>
1173                   <integer>2</integer>
1174                 </gt>
1175                 <set vname="SELECT">
1176                   <integer>0</integer>
1177                 </set>
1178               </list>
1179             </cond>
1180             <funcall fname="macro-handle-mark"/>
1181           </list>
1182           <list>
1183             <varref vname="V-2"/>
1184             <set vname="V-1">
1185               <varref vname="V-2"/>
1186             </set>
1187             <set vname="V-2">
1188               <integer>0</integer>
1189             </set>
1190             <cond>
1191               <list>
1192                 <gt>
1193                   <varref vname="TPLACE"/>
1194                   <integer>1</integer>
1195                 </gt>
1196                 <set vname="SELECT">
1197                   <integer>0</integer>
1198                 </set>
1199               </list>
1200             </cond>
1201             <funcall fname="macro-handle-mark"/>
1202           </list>
1203           <list>
1204             <integer>1</integer>
1205             <shift>
1206               <symbol>state-init</symbol>
1207             </shift>
1208           </list>
1209         </cond>
1210       </branch>
1211     </state>
1212     <state sname="state-after-vc">
1213       <state-hook>
1214         <set vname="C-AFTER-V">
1215           <integer>1</integer>
1216         </set>
1217       </state-hook>
1218       <branch mname="map-ending-2nd-consonant">
1219         <cond>
1220           <list>
1221             <logior>
1222               <eq>
1223                 <char-at>
1224                   <marker>@-2</marker>
1225                 </char-at>
1226                 <integer>110</integer>
1227               </eq>
1228               <eq>
1229                 <char-at>
1230                   <marker>@-2</marker>
1231                 </char-at>
1232                 <integer>99</integer>
1233               </eq>
1234               <eq>
1235                 <char-at>
1236                   <marker>@-2</marker>
1237                 </char-at>
1238                 <integer>78</integer>
1239               </eq>
1240               <eq>
1241                 <char-at>
1242                   <marker>@-2</marker>
1243                 </char-at>
1244                 <integer>67</integer>
1245               </eq>
1246             </logior>
1247             <add vname="C-AFTER-V">
1248               <integer>1</integer>
1249             </add>
1250           </list>
1251           <list>
1252             <integer>1</integer>
1253             <shift>
1254               <symbol>state-temporary-escape</symbol>
1255             </shift>
1256           </list>
1257         </cond>
1258       </branch>
1259       <branch mname="map-ending-1st-notviet-consonant">
1260         <shift>
1261           <symbol>state-temporary-escape</symbol>
1262         </shift>
1263       </branch>
1264       <branch mname="map-consonant-or-tone-mark">
1265         <delete>
1266           <marker>@-</marker>
1267         </delete>
1268         <pushback>
1269           <integer>1</integer>
1270         </pushback>
1271         <shift>
1272           <symbol>state-after-t</symbol>
1273         </shift>
1274       </branch>
1275       <branch mname="map-vowel">
1276         <shift>
1277           <symbol>state-temporary-escape</symbol>
1278         </shift>
1279       </branch>
1280       <branch mname="map-vowel-ext">
1281         <shift>
1282           <symbol>state-temporary-escape</symbol>
1283         </shift>
1284       </branch>
1285       <branch mname="map-backspace">
1286         <delete>
1287           <marker>@-</marker>
1288         </delete>
1289         <sub vname="C-AFTER-V">
1290           <integer>1</integer>
1291         </sub>
1292         <funcall fname="macro-handle-mark"/>
1293         <cond>
1294           <list>
1295             <eq>
1296               <varref vname="C-AFTER-V"/>
1297               <integer>0</integer>
1298             </eq>
1299             <shift>
1300               <symbol>state-after-v</symbol>
1301             </shift>
1302           </list>
1303         </cond>
1304       </branch>
1305     </state>
1306     <state sname="state-after-t">
1307       <state-hook>
1308         <set vname="CURRENT-SELECT">
1309           <integer>-1</integer>
1310         </set>
1311       </state-hook>
1312       <branch mname="map-tone-mark">
1313         <cond>
1314           <list>
1315             <eq>
1316               <varref vname="CURRENT-SELECT"/>
1317               <varref vname="SELECT"/>
1318             </eq>
1319             <move>
1320               <marker>T</marker>
1321             </move>
1322             <select>
1323               <integer>0</integer>
1324             </select>
1325             <move>
1326               <marker>@&gt;</marker>
1327             </move>
1328             <shift>
1329               <symbol>state-temporary-escape</symbol>
1330             </shift>
1331           </list>
1332           <list>
1333             <integer>1</integer>
1334             <delete>
1335               <marker>@-</marker>
1336             </delete>
1337             <funcall fname="macro-handle-mark"/>
1338             <set vname="CURRENT-SELECT">
1339               <varref vname="SELECT"/>
1340             </set>
1341           </list>
1342         </cond>
1343       </branch>
1344       <catch-all-branch>
1345         <cond>
1346           <list>
1347             <varref vname="C-AFTER-V"/>
1348             <shift>
1349               <symbol>state-after-vc</symbol>
1350             </shift>
1351           </list>
1352           <list>
1353             <integer>1</integer>
1354             <shift>
1355               <symbol>state-after-v</symbol>
1356             </shift>
1357           </list>
1358         </cond>
1359       </catch-all-branch>
1360     </state>
1361     <state sname="state-temporary-escape">
1362       <title>en</title>
1363       <state-hook>
1364         <commit/>
1365       </state-hook>
1366       <branch mname="map-alnum">
1367         <commit/>
1368       </branch>
1369     </state>
1370     <state sname="state-escape-in-normal-mode">
1371       <title>EN</title>
1372       <branch mname="map-permanent-escape">
1373         <insert>
1374           <string>\</string>
1375         </insert>
1376         <shift>
1377           <symbol>state-init</symbol>
1378         </shift>
1379       </branch>
1380       <catch-all-branch>
1381         <shift>
1382           <symbol>state-permanent-escape</symbol>
1383         </shift>
1384       </catch-all-branch>
1385     </state>
1386     <state sname="state-permanent-escape">
1387       <title>EN</title>
1388       <state-hook>
1389         <set vname="ESCAPE">
1390           <integer>1</integer>
1391         </set>
1392       </state-hook>
1393       <branch mname="map-permanent-escape">
1394         <shift>
1395           <symbol>state-escape-in-permanent-escape</symbol>
1396         </shift>
1397       </branch>
1398       <catch-all-branch>
1399         <unhandle/>
1400       </catch-all-branch>
1401     </state>
1402     <state sname="state-escape-in-permanent-escape">
1403       <title>Ắ</title>
1404       <branch mname="map-permanent-escape">
1405         <insert>
1406           <string>\</string>
1407         </insert>
1408         <commit/>
1409         <shift>
1410           <symbol>state-permanent-escape</symbol>
1411         </shift>
1412       </branch>
1413     </state>
1414   </state-list>
1415 </input-method>