240 lines
4.8 KiB
Plaintext
240 lines
4.8 KiB
Plaintext
;; tai-sonla.mim -- Tai Viet input method with Phonetic sequence
|
|
;; Copyright (C) 2007
|
|
;; Thua Thien Hue Center of Information Technology (HueCIT, Vietnam)
|
|
;; Copyright (C) 2007
|
|
;; National Institute of Advanced Industrial Science and Technology (AIST)
|
|
;; Registration Number H15PRO112
|
|
|
|
;; This file is part of the m17n contrib; a sub-part of the m17n
|
|
;; library.
|
|
|
|
;; The m17n library is free software; you can redistribute it and/or
|
|
;; modify it under the terms of the GNU Lesser General Public License
|
|
;; as published by the Free Software Foundation; either version 2.1 of
|
|
;; the License, or (at your option) any later version.
|
|
|
|
;; The m17n library is distributed in the hope that it will be useful,
|
|
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
;; Lesser General Public License for more details.
|
|
|
|
;; You should have received a copy of the GNU Lesser General Public
|
|
;; License along with the m17n library; if not, write to the Free
|
|
;; Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
|
;; Boston, MA 02110-1301, USA.
|
|
|
|
(input-method tai sonla-kbd)
|
|
|
|
(title "꫞")
|
|
|
|
(description (_"Tai Viet input method using the phonetic key sequence with the Tai Son La keyboard layout.
|
|
The phonetic key sequence means that you type a syllable in this order:
|
|
C W? V v? F? T?
|
|
where
|
|
C is an initial consonant,
|
|
W is a label for labializing C ('ꪫ'),
|
|
V is a vowel (V1:prefix, V2:combining, or V3:postfix),
|
|
v is the second vowel of a digraph vowel
|
|
(in the case that V is 'ꪹ' and v is 'ꪸ', 'ꪷ', or 'ꪱ'),
|
|
F is a final consonant,
|
|
T is a tonemark (spacing or combining).
|
|
|
|
You can type special symbols by these keys:
|
|
'$' -> 'ꫛ'
|
|
'#' -> 'ꫜ'
|
|
'%' -> 'ꫝ'
|
|
'!' -> '꫞'
|
|
'@' -> '꫟'
|
|
"))
|
|
|
|
(macro
|
|
(adjust-tone
|
|
(set TT @-1)
|
|
(delete @-)
|
|
(cond ((| (= T ?ꫀ) (= T ?ꫂ)) (delete @-) (move @>))
|
|
((> T 0) (move M) (delete @+) (move @>)))
|
|
(set T TT)
|
|
(cond ((| (= T ?ꫀ) (= T ?ꫂ)) (insert T))
|
|
((> T 0) (move M) (insert T) (move @>)))))
|
|
|
|
(map
|
|
(consonant
|
|
("k" "ꪀ")
|
|
("K" "ꪁ")
|
|
("x" "ꪂ")
|
|
("X" "ꪃ")
|
|
("q" "ꪄ")
|
|
("Q" "ꪅ")
|
|
("|" "ꪆ")
|
|
("\"" "ꪇ")
|
|
("g" "ꪈ")
|
|
("G" "ꪉ")
|
|
("c" "ꪊ")
|
|
("C" "ꪋ")
|
|
("." "ꪌ")
|
|
(">" "ꪍ")
|
|
("s" "ꪎ")
|
|
("S" "ꪏ")
|
|
("z" "ꪐ")
|
|
("Z" "ꪑ")
|
|
("d" "ꪒ")
|
|
("D" "ꪓ")
|
|
("t" "ꪔ")
|
|
("T" "ꪕ")
|
|
("w" "ꪖ")
|
|
("W" "ꪗ")
|
|
("n" "ꪘ")
|
|
("N" "ꪙ")
|
|
("b" "ꪚ")
|
|
("B" "ꪛ")
|
|
("p" "ꪜ")
|
|
("P" "ꪝ")
|
|
("/" "ꪞ")
|
|
("?" "ꪟ")
|
|
("f" "ꪠ")
|
|
("F" "ꪡ")
|
|
("m" "ꪢ")
|
|
("M" "ꪣ")
|
|
("j" "ꪤ")
|
|
("J" "ꪥ")
|
|
("r" "ꪦ")
|
|
("R" "ꪧ")
|
|
("l" "ꪨ")
|
|
("L" "ꪩ")
|
|
("v" "ꪪ")
|
|
("V" "ꪫ")
|
|
("h" "ꪬ")
|
|
("H" "ꪭ")
|
|
("o" "ꪮ")
|
|
("O" "ꪯ"))
|
|
|
|
(final-c
|
|
("b" "ꪚ")
|
|
("d" "ꪒ")
|
|
("k" "ꪀ")
|
|
("J" "ꪥ")
|
|
("M" "ꪣ")
|
|
("N" "ꪙ")
|
|
("G" "ꪉ")
|
|
("V" "ꪫ"))
|
|
|
|
(high-v
|
|
("V" "ꪫ"))
|
|
|
|
(special
|
|
("$" "ꫛ")
|
|
("#" "ꫜ")
|
|
("%" "ꫝ")
|
|
("!" "꫞")
|
|
("@" "꫟"))
|
|
|
|
(vowel-pre
|
|
("e" "ꪵ")
|
|
("," "ꪶ")
|
|
("E" "ꪹ")
|
|
("Y" "ꪻ")
|
|
("y" "ꪼ")
|
|
("o^" "ꪶ"))
|
|
|
|
(vowel-combining
|
|
("}" "ꪰ")
|
|
("i" "ꪲ")
|
|
("U" "ꪳ")
|
|
("u" "ꪴ")
|
|
("[" "ꪷ")
|
|
("I" "ꪸ")
|
|
("{" "ꪾ")
|
|
("awm" "ꪾ"))
|
|
|
|
(vowel-post
|
|
("a" "ꪱ")
|
|
;; ("A" "ꪱꪲ")
|
|
("<" "ꪺ")
|
|
("]" "ꪽ")
|
|
;; Note: "ꪮ" and "ꪯ" can be consonant and vowel.
|
|
("o" "ꪮ")
|
|
("O" "ꪯ"))
|
|
|
|
(vowel-digraph
|
|
("r" "ꪸ")
|
|
("R" "ꪷ")
|
|
("A" "ꪱ"))
|
|
|
|
(tone
|
|
(":" "ꫀ")
|
|
(";" "ꫂ")
|
|
("\"" "꪿")
|
|
("'" "꫁"))
|
|
|
|
(punctuation
|
|
("!!" "!")
|
|
("@@" "@")
|
|
("##" "#")
|
|
("$$" "$")
|
|
("%%" "%")
|
|
(",," ",")
|
|
(".." ".")
|
|
(";;" ";")
|
|
("::" ":")
|
|
(";;" ";")
|
|
("\"\"" "\"")
|
|
("//" "/")
|
|
("||" "|")
|
|
("''" "'")
|
|
("!!" "?")
|
|
("??" "?")
|
|
("[[" "[")
|
|
("]]" "]")
|
|
("{{" "{")
|
|
("}}" "}")
|
|
("<<" "<")
|
|
(">>" ">"))
|
|
|
|
(backspace
|
|
((BackSpace) (sub K 1) (undo K))))
|
|
|
|
(state
|
|
(init
|
|
(t (set K 0))
|
|
(consonant (mark M) (shift after-c))
|
|
(special)
|
|
(punctuation)
|
|
(vowel-pre)
|
|
(vowel-post)
|
|
(vowel-combining)
|
|
(tone))
|
|
|
|
(after-c
|
|
(t (mark M) (set V2 0) (set K @@))
|
|
(high-v (mark M))
|
|
(vowel-pre (set V1 @-1)
|
|
(delete @-)
|
|
(move @<) (insert V1) (move @>) (shift after-c-vpre))
|
|
(vowel-combining (cond ((> V2 0) (move @-) (delete @-) (move @>))
|
|
(1 (set K @@)))
|
|
(set V2 @-1) (mark M))
|
|
(vowel-post (shift after-c-v))
|
|
(vowel-digraph (mark M) (move @<) (insert "ꪹ") (move @>)
|
|
(shift after-c-v))
|
|
(final-c (delete @-) (pushback 1) (shift init))
|
|
(backspace)
|
|
(nil (shift after-c-v)))
|
|
|
|
(after-c-vpre
|
|
(t (set K @@))
|
|
(vowel-combining (set V2 @-1) (mark M) (shift after-c-v))
|
|
(vowel-post (shift after-c-v))
|
|
(backspace)
|
|
(nil (shift after-c-v)))
|
|
|
|
(after-c-v
|
|
(t (set T 0) (set K @@))
|
|
(tone (cond ((= T 0) (set K @@))) (adjust-tone))
|
|
(final-c (shift after-c-v-f))
|
|
(backspace))
|
|
|
|
(after-c-v-f
|
|
(t (set K @@))
|
|
(tone (adjust-tone))
|
|
(backspace)))
|