+++ /dev/null
-<?xml version='1.0'?>
-<input-method xmlns="http://www.m17n.org/MIM">
- <tags>
- <language>vi</language>
- <name>vni</name>
- </tags>
- <description>
- <gettext>Vietnames input method using the VNI key 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>Ắ(VNI)</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>a6</string>
- </keyseq>
- <insert-candidates>
- <string>âấầẩẫậ</string>
- </insert-candidates>
- </rule>
- <rule>
- <keyseq>
- <string>A6</string>
- </keyseq>
- <insert-candidates>
- <string>ÂẤẦẨẪẬ</string>
- </insert-candidates>
- </rule>
- <rule>
- <keyseq>
- <string>a8</string>
- </keyseq>
- <insert-candidates>
- <string>ăắằẳẵặ</string>
- </insert-candidates>
- </rule>
- <rule>
- <keyseq>
- <string>A8</string>
- </keyseq>
- <insert-candidates>
- <string>ĂẮẰẲẴẶ</string>
- </insert-candidates>
- </rule>
- <rule>
- <keyseq>
- <string>e6</string>
- </keyseq>
- <insert-candidates>
- <string>êếềểễệ</string>
- </insert-candidates>
- </rule>
- <rule>
- <keyseq>
- <string>E6</string>
- </keyseq>
- <insert-candidates>
- <string>ÊẾỀỂỄỆ</string>
- </insert-candidates>
- </rule>
- <rule>
- <keyseq>
- <string>o6</string>
- </keyseq>
- <insert-candidates>
- <string>ôốồổỗộ</string>
- </insert-candidates>
- </rule>
- <rule>
- <keyseq>
- <string>O6</string>
- </keyseq>
- <insert-candidates>
- <string>ÔỐỒỔỖỘ</string>
- </insert-candidates>
- </rule>
- <rule>
- <keyseq>
- <string>o7</string>
- </keyseq>
- <insert-candidates>
- <string>ơớờởỡợ</string>
- </insert-candidates>
- </rule>
- <rule>
- <keyseq>
- <string>O7</string>
- </keyseq>
- <insert-candidates>
- <string>ƠỚỜỞỠỢ</string>
- </insert-candidates>
- </rule>
- <rule>
- <keyseq>
- <string>u7</string>
- </keyseq>
- <insert-candidates>
- <string>ưứừửữự</string>
- </insert-candidates>
- </rule>
- <rule>
- <keyseq>
- <string>U7</string>
- </keyseq>
- <insert-candidates>
- <string>ƯỨỪỬỮỰ</string>
- </insert-candidates>
- </rule>
- </map>
- <map mname="map-consonant-ext">
- <rule>
- <keyseq>
- <string>d9</string>
- </keyseq>
- <insert>
- <integer>273</integer>
- </insert>
- </rule>
- <rule>
- <keyseq>
- <string>D9</string>
- </keyseq>
- <insert>
- <integer>272</integer>
- </insert>
- </rule>
- </map>
- <map mname="map-tone-mark">
- <rule>
- <keyseq>
- <string>0</string>
- </keyseq>
- <set vname="SELECT">
- <integer>0</integer>
- </set>
- <insert>
- <integer>48</integer>
- </insert>
- </rule>
- <rule>
- <keyseq>
- <string>1</string>
- </keyseq>
- <set vname="SELECT">
- <integer>1</integer>
- </set>
- <insert>
- <integer>49</integer>
- </insert>
- </rule>
- <rule>
- <keyseq>
- <string>2</string>
- </keyseq>
- <set vname="SELECT">
- <integer>2</integer>
- </set>
- <insert>
- <integer>50</integer>
- </insert>
- </rule>
- <rule>
- <keyseq>
- <string>3</string>
- </keyseq>
- <set vname="SELECT">
- <integer>3</integer>
- </set>
- <insert>
- <integer>51</integer>
- </insert>
- </rule>
- <rule>
- <keyseq>
- <string>4</string>
- </keyseq>
- <set vname="SELECT">
- <integer>4</integer>
- </set>
- <insert>
- <integer>52</integer>
- </insert>
- </rule>
- <rule>
- <keyseq>
- <string>5</string>
- </keyseq>
- <set vname="SELECT">
- <integer>5</integer>
- </set>
- <insert>
- <integer>53</integer>
- </insert>
- </rule>
- </map>
- <map mname="map-temporary-escape">
- <rule>
- <keyseq>
- <string>a66</string>
- </keyseq>
- <insert>
- <string>a6</string>
- </insert>
- </rule>
- <rule>
- <keyseq>
- <string>A66</string>
- </keyseq>
- <insert>
- <string>A6</string>
- </insert>
- </rule>
- <rule>
- <keyseq>
- <string>a88</string>
- </keyseq>
- <insert>
- <string>a8</string>
- </insert>
- </rule>
- <rule>
- <keyseq>
- <string>A88</string>
- </keyseq>
- <insert>
- <string>A8</string>
- </insert>
- </rule>
- <rule>
- <keyseq>
- <string>e66</string>
- </keyseq>
- <insert>
- <string>e6</string>
- </insert>
- </rule>
- <rule>
- <keyseq>
- <string>E66</string>
- </keyseq>
- <insert>
- <string>E6</string>
- </insert>
- </rule>
- <rule>
- <keyseq>
- <string>o66</string>
- </keyseq>
- <insert>
- <string>o6</string>
- </insert>
- </rule>
- <rule>
- <keyseq>
- <string>O66</string>
- </keyseq>
- <insert>
- <string>O6</string>
- </insert>
- </rule>
- <rule>
- <keyseq>
- <string>o77</string>
- </keyseq>
- <insert>
- <string>o7</string>
- </insert>
- </rule>
- <rule>
- <keyseq>
- <string>O77</string>
- </keyseq>
- <insert>
- <string>O7</string>
- </insert>
- </rule>
- <rule>
- <keyseq>
- <string>u77</string>
- </keyseq>
- <insert>
- <string>u7</string>
- </insert>
- </rule>
- <rule>
- <keyseq>
- <string>U77</string>
- </keyseq>
- <insert>
- <string>U7</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>
- <set vname="NST">
- <eq>
- <surrounding-text-flag/>
- <integer>-2</integer>
- </eq>
- </set>
- </state-hook>
- <branch mname="map-consonant">
- <set vname="C">
- <char-at>
- <marker>@-1</marker>
- </char-at>
- </set>
- <cond>
- <list>
- <varref vname="NST"/>
- <shift>
- <symbol>state-after-c</symbol>
- </shift>
- </list>
- </cond>
- </branch>
- <branch mname="map-consonant-ext">
- <set vname="C">
- <char-at>
- <marker>@-1</marker>
- </char-at>
- </set>
- <cond>
- <list>
- <varref vname="NST"/>
- <shift>
- <symbol>state-after-c</symbol>
- </shift>
- </list>
- </cond>
- </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-smart-quotes"/>
- </state>
- <state sname="state-after-c">
- <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>
- </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