Full rewrite to allow typing diacritical marks
authorhanda <handa>
Thu, 19 Oct 2006 01:32:02 +0000 (01:32 +0000)
committerhanda <handa>
Thu, 19 Oct 2006 01:32:02 +0000 (01:32 +0000)
at the end of syllable.

vi-telex.mim

index af6f1bc..b5004f5 100644 (file)
@@ -1,5 +1,5 @@
 ;; vi-telex.mim -- Input method for Vietnames with TELEX key sequence
-;; Copyright (C) 2003, 2004, 2005
+;; Copyright (C) 2003, 2004, 2005, 2006
 ;;   National Institute of Advanced Industrial Science and Technology (AIST)
 ;;   Registration Number H15PRO112
 
 
 (title "ắ")
 (map
- (map1
-  ("a" "a") ("e" "e") ("i" "i") ("o" "o") ("u" "u") ("y" "y") ("d" "d")
-  ("A" "A") ("E" "E") ("I" "I") ("O" "O") ("U" "U") ("Y" "Y") ("D" "D")
-  ("\\" "\\"))
- (map2
-  ("af" ?à)
-  ("AF" ?À)
-  ("Af" ?À)
-  ("as" ?á)
-  ("AS" ?Á)
-  ("As" ?Á)
-  ("aa" ?â)
-  ("AA" ?Â)
-  ("Aa" ?Â)
-  ("ax" ?ã)
-  ("AX" ?Ã)
-  ("Ax" ?Ã)
-  ("ef" ?è)
-  ("EF" ?È)
-  ("Ef" ?È)
-  ("es" ?é)
-  ("ES" ?É)
-  ("Es" ?É)
-  ("ee" ?ê)
-  ("EE" ?Ê)
-  ("Ee" ?Ê)
-  ("if" ?ì)
-  ("IF" ?Ì)
-  ("If" ?Ì)
-  ("is" ?í)
-  ("IS" ?Í)
-  ("Is" ?Í)
-  ("of" ?ò)
-  ("OF" ?Ò)
-  ("Of" ?Ò)
-  ("os" ?ó)
-  ("OS" ?Ó)
-  ("Os" ?Ó)
-  ("oo" ?ô)
-  ("OO" ?Ô)
-  ("Oo" ?Ô)
-  ("ox" ?õ)
-  ("OX" ?Õ)
-  ("Ox" ?Õ)
-  ("uf" ?ù)
-  ("UF" ?Ù)
-  ("Uf" ?Ù)
-  ("us" ?ú)
-  ("US" ?Ú)
-  ("Us" ?Ú)
-  ("ys" ?ý)
-  ("YS" ?Ý)
-  ("Ys" ?Ý)
-  ("aw" ?ă)
-  ("AW" ?Ă)
-  ("Aw" ?Ă)
-  ("ix" ?ĩ)
-  ("IX" ?Ĩ)
-  ("Ix" ?Ĩ)
-  ("ux" ?ũ)
-  ("UX" ?Ũ)
-  ("Ux" ?Ũ)
-  ("ow" ?ơ)
-  ("OW" ?Ơ)
-  ("Ow" ?Ơ)
-  ("uw" ?ư)
-  ("UW" ?Ư)
-  ("Uw" ?Ư)
-  ("aj" ?ạ)
-  ("AJ" ?Ạ)
-  ("Aj" ?Ạ)
-  ("ar" ?ả)
-  ("AR" ?Ả)
-  ("Ar" ?Ả)
-  ("ej" ?ẹ)
-  ("EJ" ?Ẹ)
-  ("Ej" ?Ẹ)
-  ("er" ?ẻ)
-  ("ER" ?Ẻ)
-  ("Er" ?Ẻ)
-  ("ex" ?ẽ)
-  ("EX" ?Ẽ)
-  ("Ex" ?Ẽ)
-  ("ir" ?ỉ)
-  ("IR" ?Ỉ)
-  ("Ir" ?Ỉ)
-  ("ij" ?ị)
-  ("IJ" ?Ị)
-  ("Ij" ?Ị)
-  ("oj" ?ọ)
-  ("OJ" ?Ọ)
-  ("Oj" ?Ọ)
-  ("or" ?ỏ)
-  ("OR" ?Ỏ)
-  ("Or" ?Ỏ)
-  ("uj" ?ụ)
-  ("UJ" ?Ụ)
-  ("Uj" ?Ụ)
-  ("ur" ?ủ)
-  ("UR" ?Ủ)
-  ("Ur" ?Ủ)
-  ("yf" ?ỳ)
-  ("YF" ?Ỳ)
-  ("Yf" ?Ỳ)
-  ("yj" ?ỵ)
-  ("YJ" ?Ỵ)
-  ("Yj" ?Ỵ)
-  ("yr" ?ỷ)
-  ("YR" ?Ỷ)
-  ("Yr" ?Ỷ)
-  ("yx" ?ỹ)
-  ("YX" ?Ỹ)
-  ("Yx" ?Ỹ)
+ (vowel
+  ;;       sfrxj
+  ("a"  ("aáàảãạ"))
+  ("aa" ("âấầẩẫậ"))
+  ("aw" ("ăắằẳẵặ"))
+  ("e"  ("eéèẻẽẹ"))
+  ("ee" ("êếềểễệ"))
+  ("i"  ("iíìỉĩị"))
+  ("o"  ("oóòỏõọ"))
+  ("oo" ("ôốồổỗộ"))
+  ("ow" ("ơớờởỡợ"))
+  ("u"  ("uúùủũụ"))
+  ("uw" ("ưứừửữự"))
+  ("y"  ("yýỳỷỹỵ"))
+  ("A"  ("AÁÀẢÃẠ"))
+  ("AA" ("ÂẤẦẨẪẬ")) ("Aa" ("ÂẤẦẨẪẬ"))
+  ("AW" ("ĂẮẰẲẴẶ")) ("Aw" ("ĂẮẰẲẴẶ"))
+  ("E"  ("EÉÈẺẼẸ"))
+  ("EE" ("ÊẾỀỂỄỆ")) ("Ee" ("ÊẾỀỂỄỆ"))
+  ("I"  ("IÍÌỈĨỊ"))
+  ("O"  ("OÓÒỎÕỌ"))
+  ("OO" ("ÔỐỒỔỖỘ")) ("Oo" ("ÔỐỒỔỖỘ"))
+  ("OW" ("ƠỚỜỞỠỢ")) ("Ow" ("ƠỚỜỞỠỢ"))
+  ("U"  ("UÚÙỦŨỤ"))
+  ("UW" ("ƯỨỪỬỮỰ")) ("Uw" ("ƯỨỪỬỮỰ"))
+  ("Y"  ("YÝỲỶỸỴ")))
+
+ (diacritical
+  ("s" (cond (MARKED (move 1) (select 1) (move @>)) (1 ?s)))
+  ("f" (cond (MARKED (move 1) (select 2) (move @>)) (1 ?f)))
+  ("r" (cond (MARKED (move 1) (select 3) (move @>)) (1 ?r)))
+  ("x" (cond (MARKED (move 1) (select 4) (move @>)) (1 ?x)))
+  ("j" (cond (MARKED (move 1) (select 5) (move @>)) (1 ?j))))
+
+ (double
+  ("ss" (cond (MARKED (move 1) (select 0) (move @>))) ?s)
+  ("ff" (cond (MARKED (move 1) (select 0) (move @>))) ?f)
+  ("rr" (cond (MARKED (move 1) (select 0) (move @>))) ?r)
+  ("xx" (cond (MARKED (move 1) (select 0) (move @>))) ?x)
+  ("jj" (cond (MARKED (move 1) (select 0) (move @>))) ?j))
+
+ (consonant
+  ("b" ?b) ("c" ?c) ("d" ?d) ("g" ?g) ("h" ?h) ("k" ?k) ("l" ?l) ("m" ?m)
+  ("n" ?n) ("p" ?p) ("q" ?q) ("t" ?t) ("v" ?v) ("z" ?z))
+
+ (d-bar
   ("dd" ?đ)
-  ("DD" ?Đ)
-  ("Dd" ?Đ))
- (map3
-  ("aas" ?ấ)
-  ("AAS" ?Ấ)
-  ("Aas" ?Ấ)
-  ("aaf" ?ầ)
-  ("AAF" ?Ầ)
-  ("Aaf" ?Ầ)
-  ("aar" ?ẩ)
-  ("AAR" ?Ẩ)
-  ("Aar" ?Ẩ)
-  ("aax" ?ẫ)
-  ("AAX" ?Ẫ)
-  ("Aax" ?Ẫ)
-  ("aaj" ?ậ)
-  ("AAJ" ?Ậ)
-  ("Aaj" ?Ậ)
-  ("aws" ?ắ)
-  ("AWS" ?Ắ)
-  ("Aws" ?Ắ)
-  ("awf" ?ằ)
-  ("AWF" ?Ằ)
-  ("Awf" ?Ằ)
-  ("awr" ?ẳ)
-  ("AWR" ?Ẳ)
-  ("Awr" ?Ẳ)
-  ("awx" ?ẵ)
-  ("AWX" ?Ẵ)
-  ("Awx" ?Ẵ)
-  ("awj" ?ặ)
-  ("AWJ" ?Ặ)
-  ("Awj" ?Ặ)
-  ("ees" ?ế)
-  ("EES" ?Ế)
-  ("Ees" ?Ế)
-  ("eef" ?ề)
-  ("EEF" ?Ề)
-  ("Eef" ?Ề)
-  ("eer" ?ể)
-  ("EER" ?Ể)
-  ("Eer" ?Ể)
-  ("eex" ?ễ)
-  ("EEX" ?Ễ)
-  ("Eex" ?Ễ)
-  ("eej" ?ệ)
-  ("EEJ" ?Ệ)
-  ("Eej" ?Ệ)
-  ("oos" ?ố)
-  ("OOS" ?Ố)
-  ("Oos" ?Ố)
-  ("oof" ?ồ)
-  ("OOF" ?Ồ)
-  ("Oof" ?Ồ)
-  ("oor" ?ổ)
-  ("OOR" ?Ổ)
-  ("Oor" ?Ổ)
-  ("oox" ?ỗ)
-  ("OOX" ?Ỗ)
-  ("Oox" ?Ỗ)
-  ("ooj" ?ộ)
-  ("OOJ" ?Ộ)
-  ("Ooj" ?Ộ)
-  ("ows" ?ớ)
-  ("OWS" ?Ớ)
-  ("Ows" ?Ớ)
-  ("owf" ?ờ)
-  ("OWF" ?Ờ)
-  ("Owf" ?Ờ)
-  ("owr" ?ở)
-  ("OWR" ?Ở)
-  ("Owr" ?Ở)
-  ("owx" ?ỡ)
-  ("OWX" ?Ỡ)
-  ("Owx" ?Ỡ)
-  ("owj" ?ợ)
-  ("OWJ" ?Ợ)
-  ("Owj" ?Ợ)
-  ("uws" ?ứ)
-  ("UWS" ?Ứ)
-  ("Uws" ?Ứ)
-  ("uwf" ?ừ)
-  ("UWF" ?Ừ)
-  ("Uwf" ?Ừ)
-  ("uwr" ?ử)
-  ("UWR" ?Ử)
-  ("Uwr" ?Ử)
-  ("uwx" ?ữ)
-  ("UWX" ?Ữ)
-  ("Uwx" ?Ữ)
-  ("uwj" ?ự)
-  ("UWJ" ?Ự)
-  ("Uwj" ?Ự)
+  ("DD" ?Đ) ("Dd" ?Đ))
 
-  ("aff" (insert "af"))
-  ("AFF" (insert "AF"))
-  ("Aff" (insert "Af"))
-  ("ass" (insert "as"))
-  ("ASS" (insert "AS"))
-  ("Ass" (insert "As"))
-  ("aaa" (insert "aa"))
-  ("AAA" (insert "AA"))
-  ("Aaa" (insert "Aa"))
-  ("axx" (insert "ax"))
-  ("AXX" (insert "AX"))
-  ("Axx" (insert "Ax"))
-  ("eff" (insert "ef"))
-  ("EFF" (insert "EF"))
-  ("Eff" (insert "Ef"))
-  ("ess" (insert "es"))
-  ("ESS" (insert "ES"))
-  ("Ess" (insert "Es"))
-  ("eee" (insert "ee"))
-  ("EEE" (insert "EE"))
-  ("Eee" (insert "Ee"))
-  ("iff" (insert "if"))
-  ("IFF" (insert "IF"))
-  ("Iff" (insert "If"))
-  ("iss" (insert "is"))
-  ("ISS" (insert "IS"))
-  ("Iss" (insert "Is"))
-  ("off" (insert "of"))
-  ("OFF" (insert "OF"))
-  ("Off" (insert "Of"))
-  ("oss" (insert "os"))
-  ("OSS" (insert "OS"))
-  ("Oss" (insert "Os"))
-  ("ooo" (insert "oo"))
-  ("OOO" (insert "OO"))
-  ("Ooo" (insert "Oo"))
-  ("oxx" (insert "ox"))
-  ("OXX" (insert "OX"))
-  ("Oxx" (insert "Ox"))
-  ("uff" (insert "uf"))
-  ("UFF" (insert "UF"))
-  ("Uff" (insert "Uf"))
-  ("uss" (insert "us"))
-  ("USS" (insert "US"))
-  ("Uss" (insert "Us"))
-  ("yss" (insert "ys"))
-  ("YSS" (insert "YS"))
-  ("Yss" (insert "Ys"))
-  ("aww" (insert "aw"))
-  ("AWW" (insert "AW"))
-  ("Aww" (insert "Aw"))
-  ("ixx" (insert "ix"))
-  ("IXX" (insert "IX"))
-  ("Ixx" (insert "Ix"))
-  ("uxx" (insert "ux"))
-  ("UXX" (insert "UX"))
-  ("Uxx" (insert "ux"))
-  ("oww" (insert "ow"))
-  ("OWW" (insert "OW"))
-  ("Oww" (insert "Ow"))
-  ("uww" (insert "uw"))
-  ("UWW" (insert "UW"))
-  ("Uww" (insert "Uw"))
-  ("ajj" (insert "aj"))
-  ("AJJ" (insert "AJ"))
-  ("Ajj" (insert "Aj"))
-  ("arr" (insert "ar"))
-  ("ARR" (insert "AR"))
-  ("Arr" (insert "Ar"))
-  ("ejj" (insert "ej"))
-  ("EJJ" (insert "EJ"))
-  ("Ejj" (insert "Ej"))
-  ("err" (insert "er"))
-  ("ERR" (insert "ER"))
-  ("Err" (insert "Er"))
-  ("exx" (insert "ex"))
-  ("EXX" (insert "EX"))
-  ("Exx" (insert "Ex"))
-  ("irr" (insert "ir"))
-  ("IRR" (insert "IR"))
-  ("Irr" (insert "Ir"))
-  ("ijj" (insert "ij"))
-  ("IJJ" (insert "IJ"))
-  ("Ijj" (insert "Ij"))
-  ("ojj" (insert "oj"))
-  ("OJJ" (insert "OJ"))
-  ("Ojj" (insert "Oj"))
-  ("orr" (insert "or"))
-  ("ORR" (insert "OR"))
-  ("Orr" (insert "Or"))
-  ("ujj" (insert "uj"))
-  ("UJJ" (insert "UJ"))
-  ("Ujj" (insert "Uj"))
-  ("urr" (insert "ur"))
-  ("URR" (insert "UR"))
-  ("Urr" (insert "Ur"))
-  ("yff" (insert "yf"))
-  ("YFF" (insert "YF"))
-  ("Yff" (insert "Yf"))
-  ("yjj" (insert "yj"))
-  ("YJJ" (insert "YJ"))
-  ("Yjj" (insert "Yj"))
-  ("yrr" (insert "yr"))
-  ("YRR" (insert "YR"))
-  ("Yrr" (insert "Yr"))
-  ("yxx" (insert "yx"))
-  ("YXX" (insert "YX"))
-  ("Yxx" (insert "Yx"))
-  ("ddd" (insert "dd"))
-  ("DDD" (insert "DD"))
-  ("Ddd" (insert "Dd")))
  (escape
-  ("\\w" ?w)
-  ("\\W" ?W)
-  ("\\a" ?a)
-  ("\\A" ?A)
-  ("\\e" ?e)
-  ("\\E" ?E)
-  ("\\o" ?o)
-  ("\\O" ?O)
-  ("\\s" ?s)
-  ("\\S" ?S)
-  ("\\f" ?f)
-  ("\\F" ?F)
-  ("\\r" ?r)
-  ("\\R" ?R)
-  ("\\x" ?x)
-  ("\\X" ?X)
-  ("\\j" ?j)
-  ("\\J" ?J)
-  ("\\d" ?d)
-  ("\\D" ?D)
-  ("\\\\" ?\\))
+  ("\\"))
+
  (backspace
   ((BackSpace) (undo))))
 
 (state
  (init
-  (map1 (delete @-) (pushback 1) (shift main)))
+  ;; The variable MARKED indicates whether a vowel is typed or not.
+  (t (set MARKED 0))
+  (vowel (set MARKED 1) (shift after-vowel))
+  (d-bar)
+  (escape (shift escape))
+  (backspace))
+
+ ;; The state shifted to when a vowel is typed.  The vowel is the
+ ;; first character of the preedit buffer.
+ (after-vowel
+  (consonant (shift after-vc))
+  (d-bar (shift after-vc))
+  (double (shift after-vc))
+  (vowel (shift init))
+  (diacritical (shift init))
+  (backspace))
 
- (main
-  (map1 (shift edit))
-  (map2 (shift edit))
-  (map3 (shift init))
-  (escape (shift init))
-  (backspace (shift init)))
+ ;; The state shifted to when a vowel and consonant are typed.  The
+ ;; vowel is the first character of the preedit buffer.
+ (after-vc
+  (diacritical (shift init)))
 
- (edit
-  (backspace)))
+ (escape
+  "a"
+  (nil (shift init) (unhandle))))
 
 ;; Local Variables:
 ;; coding: utf-8