--- /dev/null
+<?xml version='1.0'?>
+<input-method xmlns="http://www.m17n.org/MIM">
+ <tags>
+ <language>vi</language>
+ <name>tcvn</name>
+ </tags>
+ <description>
+ <gettext>Vietnames input method using the TCVN6064 sequence.
+Typing Backslash ('\') toggles the normal mode and English mode.
+The following variables are customizable:
+ tone-mark-on-last: control tone mark position in equivocal cases
+ backspace-is-undo: control the action of Backspace key (delete or undo)</gettext>
+ </description>
+ <title>Ắ(TCVN)</title>
+ <variable-list>
+ <defvar vname="tone-mark-on-last">
+ <description>
+ <gettext>Flag to control tone mark position in equivocal cases.
+If this variable is 0 (the default), put tone mark on the first vowel
+in such equivocal cases as "oa", "oe", "uy".
+Otherwise, put tone mark on the last vowel.</gettext>
+ </description>
+ <integer>0</integer>
+ <possible-value>
+ <integer>0</integer>
+ <integer>1</integer>
+ </possible-value>
+ </defvar>
+ <defvar vname="backspace-is-undo">
+ <description>
+ <gettext>Flag to control the action of Backspace key (delete or undo).
+If this variable is 0 (the default), Backspace key deletes the previous
+character (e.g. "q u a i s BS" => "quá").
+If the value is 1, Backspace key undoes the previous key
+(e.g. "q u a i s BS" => "quai").</gettext>
+ </description>
+ <integer>0</integer>
+ <possible-value>
+ <integer>0</integer>
+ <integer>1</integer>
+ </possible-value>
+ </defvar>
+ </variable-list>
+ <macro-list>
+ <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)">
+ <tags>
+ <language>t</language>
+ <name>nil</name>
+ <extra-id>vi-base</extra-id>
+ </tags>
+ <section>macro</section>
+ </xi:include>
+ </macro-list>
+ <map-list>
+ <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)">
+ <tags>
+ <language>t</language>
+ <name>nil</name>
+ <extra-id>vi-base</extra-id>
+ </tags>
+ <section>map</section>
+ </xi:include>
+ <map mname="map-vowel-ext">
+ <rule>
+ <keyseq>
+ <string>2</string>
+ </keyseq>
+ <insert-candidates>
+ <string>âấầẩẫậ</string>
+ </insert-candidates>
+ </rule>
+ <rule>
+ <keyseq>
+ <string>@</string>
+ </keyseq>
+ <insert-candidates>
+ <string>ÂẤẦẨẪẬ</string>
+ </insert-candidates>
+ </rule>
+ <rule>
+ <keyseq>
+ <string>1</string>
+ </keyseq>
+ <insert-candidates>
+ <string>ăắằẳẵặ</string>
+ </insert-candidates>
+ </rule>
+ <rule>
+ <keyseq>
+ <string>!</string>
+ </keyseq>
+ <insert-candidates>
+ <string>ĂẮẰẲẴẶ</string>
+ </insert-candidates>
+ </rule>
+ <rule>
+ <keyseq>
+ <string>3</string>
+ </keyseq>
+ <insert-candidates>
+ <string>êếềểễệ</string>
+ </insert-candidates>
+ </rule>
+ <rule>
+ <keyseq>
+ <string>#</string>
+ </keyseq>
+ <insert-candidates>
+ <string>ÊẾỀỂỄỆ</string>
+ </insert-candidates>
+ </rule>
+ <rule>
+ <keyseq>
+ <string>4</string>
+ </keyseq>
+ <insert-candidates>
+ <string>ôốồổỗộ</string>
+ </insert-candidates>
+ </rule>
+ <rule>
+ <keyseq>
+ <string>$</string>
+ </keyseq>
+ <insert-candidates>
+ <string>ÔỐỒỔỖỘ</string>
+ </insert-candidates>
+ </rule>
+ <rule>
+ <keyseq>
+ <string>]</string>
+ </keyseq>
+ <insert-candidates>
+ <string>ơớờởỡợ</string>
+ </insert-candidates>
+ </rule>
+ <rule>
+ <keyseq>
+ <string>}</string>
+ </keyseq>
+ <insert-candidates>
+ <string>ƠỚỜỞỠỢ</string>
+ </insert-candidates>
+ </rule>
+ <rule>
+ <keyseq>
+ <string>[</string>
+ </keyseq>
+ <insert-candidates>
+ <string>ưứừửữự</string>
+ </insert-candidates>
+ </rule>
+ <rule>
+ <keyseq>
+ <string>{</string>
+ </keyseq>
+ <insert-candidates>
+ <string>ƯỨỪỬỮỰ</string>
+ </insert-candidates>
+ </rule>
+ </map>
+ <map mname="map-consonant-ext">
+ <rule>
+ <keyseq>
+ <string>0</string>
+ </keyseq>
+ <insert>
+ <integer>273</integer>
+ </insert>
+ </rule>
+ <rule>
+ <keyseq>
+ <string>)</string>
+ </keyseq>
+ <insert>
+ <integer>272</integer>
+ </insert>
+ </rule>
+ </map>
+ <map mname="map-tone-mark">
+ <rule>
+ <keyseq>
+ <string>8</string>
+ </keyseq>
+ <set vname="SELECT">
+ <integer>1</integer>
+ </set>
+ <insert>
+ <integer>49</integer>
+ </insert>
+ </rule>
+ <rule>
+ <keyseq>
+ <string>5</string>
+ </keyseq>
+ <set vname="SELECT">
+ <integer>2</integer>
+ </set>
+ <insert>
+ <integer>50</integer>
+ </insert>
+ </rule>
+ <rule>
+ <keyseq>
+ <string>6</string>
+ </keyseq>
+ <set vname="SELECT">
+ <integer>3</integer>
+ </set>
+ <insert>
+ <integer>51</integer>
+ </insert>
+ </rule>
+ <rule>
+ <keyseq>
+ <string>7</string>
+ </keyseq>
+ <set vname="SELECT">
+ <integer>4</integer>
+ </set>
+ <insert>
+ <integer>52</integer>
+ </insert>
+ </rule>
+ <rule>
+ <keyseq>
+ <string>9</string>
+ </keyseq>
+ <set vname="SELECT">
+ <integer>5</integer>
+ </set>
+ <insert>
+ <integer>53</integer>
+ </insert>
+ </rule>
+ </map>
+ <map mname="map-misc">
+ <rule>
+ <keyseq>
+ <string>=</string>
+ </keyseq>
+ <insert>
+ <integer>8363</integer>
+ </insert>
+ </rule>
+ <rule>
+ <keyseq>
+ <string>==</string>
+ </keyseq>
+ <insert>
+ <integer>61</integer>
+ </insert>
+ </rule>
+ <rule>
+ <keyseq>
+ <list>
+ <symbol>A-1</symbol>
+ </list>
+ </keyseq>
+ <insert>
+ <integer>49</integer>
+ </insert>
+ </rule>
+ <rule>
+ <keyseq>
+ <list>
+ <symbol>A-2</symbol>
+ </list>
+ </keyseq>
+ <insert>
+ <integer>50</integer>
+ </insert>
+ </rule>
+ <rule>
+ <keyseq>
+ <list>
+ <symbol>A-3</symbol>
+ </list>
+ </keyseq>
+ <insert>
+ <integer>51</integer>
+ </insert>
+ </rule>
+ <rule>
+ <keyseq>
+ <list>
+ <symbol>A-4</symbol>
+ </list>
+ </keyseq>
+ <insert>
+ <integer>52</integer>
+ </insert>
+ </rule>
+ <rule>
+ <keyseq>
+ <list>
+ <symbol>A-5</symbol>
+ </list>
+ </keyseq>
+ <insert>
+ <integer>53</integer>
+ </insert>
+ </rule>
+ <rule>
+ <keyseq>
+ <list>
+ <symbol>A-6</symbol>
+ </list>
+ </keyseq>
+ <insert>
+ <integer>54</integer>
+ </insert>
+ </rule>
+ <rule>
+ <keyseq>
+ <list>
+ <symbol>A-7</symbol>
+ </list>
+ </keyseq>
+ <insert>
+ <integer>55</integer>
+ </insert>
+ </rule>
+ <rule>
+ <keyseq>
+ <list>
+ <symbol>A-8</symbol>
+ </list>
+ </keyseq>
+ <insert>
+ <integer>56</integer>
+ </insert>
+ </rule>
+ <rule>
+ <keyseq>
+ <list>
+ <symbol>A-9</symbol>
+ </list>
+ </keyseq>
+ <insert>
+ <integer>57</integer>
+ </insert>
+ </rule>
+ <rule>
+ <keyseq>
+ <list>
+ <symbol>A-0</symbol>
+ </list>
+ </keyseq>
+ <insert>
+ <integer>48</integer>
+ </insert>
+ </rule>
+ <rule>
+ <keyseq>
+ <list>
+ <symbol>A--</symbol>
+ </list>
+ </keyseq>
+ <insert>
+ <integer>45</integer>
+ </insert>
+ </rule>
+ <rule>
+ <keyseq>
+ <list>
+ <string>A-=</string>
+ </list>
+ </keyseq>
+ <insert>
+ <integer>61</integer>
+ </insert>
+ </rule>
+ <rule>
+ <keyseq>
+ <list>
+ <string>A-\</string>
+ </list>
+ </keyseq>
+ <insert>
+ <integer>92</integer>
+ </insert>
+ </rule>
+ <rule>
+ <keyseq>
+ <list>
+ <string>A-[</string>
+ </list>
+ </keyseq>
+ <insert>
+ <integer>91</integer>
+ </insert>
+ </rule>
+ <rule>
+ <keyseq>
+ <list>
+ <string>A-]</string>
+ </list>
+ </keyseq>
+ <insert>
+ <integer>93</integer>
+ </insert>
+ </rule>
+ <rule>
+ <keyseq>
+ <list>
+ <string>A-!</string>
+ </list>
+ </keyseq>
+ <insert>
+ <integer>33</integer>
+ </insert>
+ </rule>
+ <rule>
+ <keyseq>
+ <list>
+ <string>A-@</string>
+ </list>
+ </keyseq>
+ <insert>
+ <integer>64</integer>
+ </insert>
+ </rule>
+ <rule>
+ <keyseq>
+ <list>
+ <string>A-#</string>
+ </list>
+ </keyseq>
+ <insert>
+ <integer>35</integer>
+ </insert>
+ </rule>
+ <rule>
+ <keyseq>
+ <list>
+ <string>A-$</string>
+ </list>
+ </keyseq>
+ <insert>
+ <integer>36</integer>
+ </insert>
+ </rule>
+ <rule>
+ <keyseq>
+ <list>
+ <string>A-%</string>
+ </list>
+ </keyseq>
+ <insert>
+ <integer>37</integer>
+ </insert>
+ </rule>
+ <rule>
+ <keyseq>
+ <list>
+ <string>A-^</string>
+ </list>
+ </keyseq>
+ <insert>
+ <integer>94</integer>
+ </insert>
+ </rule>
+ <rule>
+ <keyseq>
+ <list>
+ <string>A-&</string>
+ </list>
+ </keyseq>
+ <insert>
+ <integer>38</integer>
+ </insert>
+ </rule>
+ <rule>
+ <keyseq>
+ <list>
+ <string>A-*</string>
+ </list>
+ </keyseq>
+ <insert>
+ <integer>42</integer>
+ </insert>
+ </rule>
+ <rule>
+ <keyseq>
+ <list>
+ <string>A-(</string>
+ </list>
+ </keyseq>
+ <insert>
+ <integer>40</integer>
+ </insert>
+ </rule>
+ <rule>
+ <keyseq>
+ <list>
+ <string>A-)</string>
+ </list>
+ </keyseq>
+ <insert>
+ <integer>41</integer>
+ </insert>
+ </rule>
+ <rule>
+ <keyseq>
+ <list>
+ <symbol>A-_</symbol>
+ </list>
+ </keyseq>
+ <insert>
+ <integer>95</integer>
+ </insert>
+ </rule>
+ <rule>
+ <keyseq>
+ <list>
+ <string>A-+</string>
+ </list>
+ </keyseq>
+ <insert>
+ <integer>43</integer>
+ </insert>
+ </rule>
+ <rule>
+ <keyseq>
+ <list>
+ <string>A-|</string>
+ </list>
+ </keyseq>
+ <insert>
+ <integer>124</integer>
+ </insert>
+ </rule>
+ <rule>
+ <keyseq>
+ <list>
+ <string>A-{</string>
+ </list>
+ </keyseq>
+ <insert>
+ <integer>123</integer>
+ </insert>
+ </rule>
+ <rule>
+ <keyseq>
+ <list>
+ <string>A-}</string>
+ </list>
+ </keyseq>
+ <insert>
+ <integer>125</integer>
+ </insert>
+ </rule>
+ </map>
+ <map mname="map-temporary-escape">
+ <rule>
+ <keyseq>
+ <string>22</string>
+ </keyseq>
+ <insert>
+ <string>2</string>
+ </insert>
+ </rule>
+ <rule>
+ <keyseq>
+ <string>@@</string>
+ </keyseq>
+ <insert>
+ <string>@</string>
+ </insert>
+ </rule>
+ <rule>
+ <keyseq>
+ <string>11</string>
+ </keyseq>
+ <insert>
+ <string>1</string>
+ </insert>
+ </rule>
+ <rule>
+ <keyseq>
+ <string>!!</string>
+ </keyseq>
+ <insert>
+ <string>!</string>
+ </insert>
+ </rule>
+ <rule>
+ <keyseq>
+ <string>33</string>
+ </keyseq>
+ <insert>
+ <string>3</string>
+ </insert>
+ </rule>
+ <rule>
+ <keyseq>
+ <string>##</string>
+ </keyseq>
+ <insert>
+ <string>##</string>
+ </insert>
+ </rule>
+ <rule>
+ <keyseq>
+ <string>44</string>
+ </keyseq>
+ <insert>
+ <string>4</string>
+ </insert>
+ </rule>
+ <rule>
+ <keyseq>
+ <string>$$</string>
+ </keyseq>
+ <insert>
+ <string>$</string>
+ </insert>
+ </rule>
+ <rule>
+ <keyseq>
+ <string>]]</string>
+ </keyseq>
+ <insert>
+ <string>]</string>
+ </insert>
+ </rule>
+ <rule>
+ <keyseq>
+ <string>}}</string>
+ </keyseq>
+ <insert>
+ <string>}</string>
+ </insert>
+ </rule>
+ <rule>
+ <keyseq>
+ <string>[[</string>
+ </keyseq>
+ <insert>
+ <string>[</string>
+ </insert>
+ </rule>
+ <rule>
+ <keyseq>
+ <string>{{</string>
+ </keyseq>
+ <insert>
+ <string>{</string>
+ </insert>
+ </rule>
+ <rule>
+ <keyseq>
+ <string>00</string>
+ </keyseq>
+ <insert>
+ <string>0</string>
+ </insert>
+ </rule>
+ <rule>
+ <keyseq>
+ <string>))</string>
+ </keyseq>
+ <insert>
+ <string>)</string>
+ </insert>
+ </rule>
+ </map>
+ </map-list>
+ <state-list>
+ <state sname="state-init">
+ <state-hook>
+ <set vname="C">
+ <char-at>
+ <marker>@-1</marker>
+ </char-at>
+ </set>
+ <set vname="V-1">
+ <integer>0</integer>
+ </set>
+ <set vname="V-2">
+ <integer>0</integer>
+ </set>
+ <set vname="V-3">
+ <integer>0</integer>
+ </set>
+ <set vname="C-AFTER-V">
+ <integer>0</integer>
+ </set>
+ <set vname="SELECT">
+ <integer>0</integer>
+ </set>
+ </state-hook>
+ <branch mname="map-consonant">
+ <set vname="C">
+ <char-at>
+ <marker>@-1</marker>
+ </char-at>
+ </set>
+ </branch>
+ <branch mname="map-consonant-ext">
+ <set vname="C">
+ <char-at>
+ <marker>@-1</marker>
+ </char-at>
+ </set>
+ </branch>
+ <branch mname="map-vowel">
+ <mark>
+ <marker>M</marker>
+ </mark>
+ <set vname="V-2">
+ <varref vname="V-1"/>
+ </set>
+ <set vname="V-1">
+ <char-at>
+ <marker>@-1</marker>
+ </char-at>
+ </set>
+ <shift>
+ <symbol>state-after-v</symbol>
+ </shift>
+ </branch>
+ <branch mname="map-vowel-ext">
+ <mark>
+ <marker>M</marker>
+ </mark>
+ <set vname="V-2">
+ <varref vname="V-1"/>
+ </set>
+ <set vname="V-1">
+ <char-at>
+ <marker>@-1</marker>
+ </char-at>
+ </set>
+ <shift>
+ <symbol>state-after-v</symbol>
+ </shift>
+ </branch>
+ <branch mname="map-temporary-escape">
+ <shift>
+ <symbol>state-temporary-escape</symbol>
+ </shift>
+ </branch>
+ <branch mname="map-permanent-escape">
+ <shift>
+ <symbol>state-escape-in-normal-mode</symbol>
+ </shift>
+ </branch>
+ <branch mname="map-misc"/>
+ <branch mname="map-smart-quotes"/>
+ </state>
+ <state sname="state-after-v">
+ <branch mname="map-consonant">
+ <shift>
+ <symbol>state-after-vc</symbol>
+ </shift>
+ </branch>
+ <branch mname="map-consonant-ext">
+ <shift>
+ <symbol>state-after-vc</symbol>
+ </shift>
+ </branch>
+ <branch mname="map-vowel">
+ <mark>
+ <marker>M</marker>
+ </mark>
+ <set vname="V-3">
+ <varref vname="V-2"/>
+ </set>
+ <set vname="V-2">
+ <varref vname="V-1"/>
+ </set>
+ <set vname="V-1">
+ <char-at>
+ <marker>@-1</marker>
+ </char-at>
+ </set>
+ <move>
+ <marker>T</marker>
+ </move>
+ <select>
+ <integer>0</integer>
+ </select>
+ <funcall fname="macro-handle-mark"/>
+ <move>
+ <marker>M</marker>
+ </move>
+ </branch>
+ <branch mname="map-vowel-ext">
+ <mark>
+ <marker>M</marker>
+ </mark>
+ <set vname="V-3">
+ <varref vname="V-2"/>
+ </set>
+ <set vname="V-2">
+ <varref vname="V-1"/>
+ </set>
+ <set vname="V-1">
+ <char-at>
+ <marker>@-1</marker>
+ </char-at>
+ </set>
+ <move>
+ <marker>T</marker>
+ </move>
+ <select>
+ <integer>0</integer>
+ </select>
+ <funcall fname="macro-handle-mark"/>
+ <move>
+ <marker>M</marker>
+ </move>
+ </branch>
+ <branch mname="map-tone-mark">
+ <delete>
+ <marker>@-</marker>
+ </delete>
+ <pushback>
+ <integer>1</integer>
+ </pushback>
+ <shift>
+ <symbol>state-after-t</symbol>
+ </shift>
+ </branch>
+ <branch mname="map-backspace">
+ <delete>
+ <marker>@-</marker>
+ </delete>
+ <cond>
+ <list>
+ <varref vname="V-3"/>
+ <set vname="V-1">
+ <varref vname="V-2"/>
+ </set>
+ <set vname="V-2">
+ <varref vname="V-3"/>
+ </set>
+ <set vname="V-3">
+ <integer>0</integer>
+ </set>
+ <cond>
+ <list>
+ <gt>
+ <varref vname="TPLACE"/>
+ <integer>2</integer>
+ </gt>
+ <set vname="SELECT">
+ <integer>0</integer>
+ </set>
+ </list>
+ </cond>
+ </list>
+ <list>
+ <varref vname="V-2"/>
+ <set vname="V-1">
+ <varref vname="V-2"/>
+ </set>
+ <set vname="V-2">
+ <integer>0</integer>
+ </set>
+ <cond>
+ <list>
+ <gt>
+ <varref vname="TPLACE"/>
+ <integer>1</integer>
+ </gt>
+ <set vname="SELECT">
+ <integer>0</integer>
+ </set>
+ </list>
+ </cond>
+ </list>
+ <list>
+ <integer>1</integer>
+ <shift>
+ <symbol>state-init</symbol>
+ </shift>
+ </list>
+ </cond>
+ </branch>
+ </state>
+ <state sname="state-after-vc">
+ <state-hook>
+ <set vname="C-AFTER-V">
+ <integer>1</integer>
+ </set>
+ </state-hook>
+ <branch mname="map-consonant">
+ <add vname="C-AFTER-V">
+ <integer>1</integer>
+ </add>
+ </branch>
+ <branch mname="map-consonant-ext">
+ <add vname="C-AFTER-V">
+ <integer>1</integer>
+ </add>
+ </branch>
+ <branch mname="map-tone-mark">
+ <delete>
+ <marker>@-</marker>
+ </delete>
+ <pushback>
+ <integer>1</integer>
+ </pushback>
+ <shift>
+ <symbol>state-after-t</symbol>
+ </shift>
+ </branch>
+ <branch mname="map-backspace">
+ <delete>
+ <marker>@-</marker>
+ </delete>
+ <sub vname="C-AFTER-V">
+ <integer>1</integer>
+ </sub>
+ <cond>
+ <list>
+ <eq>
+ <varref vname="C-AFTER-V"/>
+ <integer>0</integer>
+ </eq>
+ <shift>
+ <symbol>state-after-v</symbol>
+ </shift>
+ </list>
+ </cond>
+ </branch>
+ </state>
+ <state sname="state-after-t">
+ <state-hook>
+ <set vname="CURRENT-SELECT">
+ <integer>-1</integer>
+ </set>
+ </state-hook>
+ <branch mname="map-tone-mark">
+ <cond>
+ <list>
+ <eq>
+ <varref vname="CURRENT-SELECT"/>
+ <varref vname="SELECT"/>
+ </eq>
+ <move>
+ <marker>T</marker>
+ </move>
+ <select>
+ <integer>0</integer>
+ </select>
+ <move>
+ <marker>@></marker>
+ </move>
+ <shift>
+ <symbol>state-temporary-escape</symbol>
+ </shift>
+ </list>
+ <list>
+ <integer>1</integer>
+ <delete>
+ <marker>@-</marker>
+ </delete>
+ <funcall fname="macro-handle-mark"/>
+ <set vname="CURRENT-SELECT">
+ <varref vname="SELECT"/>
+ </set>
+ </list>
+ </cond>
+ </branch>
+ <catch-all-branch>
+ <cond>
+ <list>
+ <varref vname="C-AFTER-V"/>
+ <shift>
+ <symbol>state-after-vc</symbol>
+ </shift>
+ </list>
+ <list>
+ <integer>1</integer>
+ <shift>
+ <symbol>state-after-v</symbol>
+ </shift>
+ </list>
+ </cond>
+ </catch-all-branch>
+ </state>
+ <state sname="state-temporary-escape">
+ <title>en</title>
+ <state-hook>
+ <commit/>
+ </state-hook>
+ <branch mname="map-alnum">
+ <commit/>
+ </branch>
+ </state>
+ <state sname="state-escape-in-normal-mode">
+ <title>EN</title>
+ <branch mname="map-permanent-escape">
+ <insert>
+ <string>\</string>
+ </insert>
+ <shift>
+ <symbol>state-init</symbol>
+ </shift>
+ </branch>
+ <catch-all-branch>
+ <shift>
+ <symbol>state-permanent-escape</symbol>
+ </shift>
+ </catch-all-branch>
+ </state>
+ <state sname="state-permanent-escape">
+ <title>EN</title>
+ <state-hook>
+ <set vname="ESCAPE">
+ <integer>1</integer>
+ </set>
+ </state-hook>
+ <branch mname="map-permanent-escape">
+ <shift>
+ <symbol>state-escape-in-permanent-escape</symbol>
+ </shift>
+ </branch>
+ <catch-all-branch>
+ <unhandle/>
+ </catch-all-branch>
+ </state>
+ <state sname="state-escape-in-permanent-escape">
+ <title>Ắ</title>
+ <branch mname="map-permanent-escape">
+ <insert>
+ <string>\</string>
+ </insert>
+ <commit/>
+ <shift>
+ <symbol>state-permanent-escape</symbol>
+ </shift>
+ </branch>
+ </state>
+ </state-list>
+</input-method>
\ No newline at end of file