ubuntu-22.04.3-desktop-amd64/casper/filesystem/usr/share/m17n/ta-lk-renganathan.mim

657 lines
14 KiB
Plaintext
Raw Permalink Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

;; ta-lk-renganathan.mim -- Tamil input method with Renganathan layout
;; Copyright (C) 2008
;; National Institute of Advanced Industrial Science and Technology (AIST)
;; Registration Number H15PRO112
;; This file is part of the m17n database; 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 ta lk-renganathan (version "1.6.0"))
(description "Tamil input method with Renganathan layout.
For the detail, see the page: <http://www.locallanguages.lk/>
")
(title "க")
(variable
(use-surrounding-text (_"Surrounding text vs. preedit
If 1, try to use surrounding text. Otherwise, use preedit.")
0 1 0))
(macro
(pre-proc
(cond
((= @-1 0x200C)
(delete @-1)))
(cond
((= @+0 0x200C)
(delete @+1))))
(post-proc
(cond
((& (>= @-1 0x0B95) (<= @-1 0x0BB9) ; a consonant
(>= @+0 0x0BC6) (<= @+0 0x0BCC)) ; a left/two-part vowel sign
;; prevent syllable formation
0x200C)
((& (| (< @-2 0x0B95) (> @-2 0x0BB9)) ; not a consonant
(>= @-1 0x0BC6) (<= @-1 0x0BCC) ; a left/two-part vowel sign
(>= @+0 0x0B95) (<= @+0 0x0BB9) ; a consonant
(| (< @+1 0x0BBE) (> @+1 0x0BD7))) ; not a vowel sign
;; exchange @-1 and @+0
(set vs @-1)
(set c @+0)
(delete @-1)
(delete @+1)
(insert c)
(insert vs))
((& (= @-1 0x200C)
(| (< @-2 0x0B95) (> @-2 0x0BB9) ; not a constant
(< @+0 0x0BC6) (> @+0 0x0BCC))) ; not a left/two-part vowel sign
;; delete unnecessary ZWNJ
(delete @-1))
((& (= @+0 0x200C)
(| (< @-1 0x0B95) (> @-1 0x0BB9) ; not a constant
(< @+1 0x0BC6) (> @+1 0x0BCC))) ; not a left/two-part vowel sign
;; delete unnecessary ZWNJ
(delete @+1))))
(consonant-proc
(move @<)
(cond
((= @-1 0x200C)
(delete @-1)))
(set vs 0)
(cond
((& (>= @-1 0x0BC6) (<= @-1 0x0BC8)) ; a left vowel sign
(cond
((= @-2 0x200C)
(set vs @-1)
(delete @-2))
((| (< @-2 0x0B95) (> @-2 0x0BB9)) ; not a consonant
(set vs @-1)
(delete @-1)))))
(move @>)
(cond
((& (= @+0 0x200C)
(| (< @+1 0x0BC6) (> @+1 0x0BCC))) ; not a left vowel sign
(delete @+1)))
(cond
((= vs 0x0BC6)
(cond
((= @+0 0x0BBE)
(delete @+1)
0x0BCA)
((| (= @+0 0x0BB3) (= @+0 0x0BD7))
(delete @+1)
0x0BCC)
(1
0x0BC6)))
((= vs 0x0BC7)
(cond
((= @+0 0x0BBE)
(delete @+1)
0x0BCB)
(1
0x0BC7)))
((= vs 0x0BC8)
0x0BC8))
(cond
((& (>= @-1 0x0B95) (<= @-1 0x0BB9) ; a consonant
(>= @+0 0x0BC6) (<= @+0 0x0BCC)) ; a left vowel sign
0x200C)))
(check-surrounding-text
(cond
((& (= @+0 0x0B95) (= @+1 0x0BCD) (= @+2 0x0BB7)) ; k.ssa follows
0x0B95 0x0BCD 0x0BB7
(delete @+3))
((& (>= @+0 0x0B95) (<= @+0 0x0BB9)) ; a consonant follows
(set c @+0)
(insert c)
(delete @+1))
((& (>= @-1 0x0B95) (<= @-1 0x0BB9)) ; a consonant precedes
0x200C)))
)
(map
(starter
("q") ("w") ("e") ("r") ("t") ("y") ("u") ("i") ("o") ("p") ("[") ("]")
("a") ("s") ("d") ("f") ("g") ("h") ("j") ("k") ("l") (";")
("z") ("x") ("c") ("v") ("b") ("n") ("m") ("`")
("Q") ("W") ("E") ("R") ("T") ("Y") ("U") ("I") ("O") ("P") ("{") ("}")
("A") ("S") ("D") ("F") ("G") ("H") ("J") ("K") ("L")
("Z") ("X") ("C") ("V") ("B") ("N") ("M")
((A-q)) ((A-w)) ((A-e)) ((A-r)) ((A-t)) ((A-y)) ((A-u)) ((A-i))
((A-1)) ((A-2)) ((A-3)) ((A-4)) ((A-5)) ((A-6)) ((A-7)) ((A-8)) ((A-9))
((A-0)) ((A-`)) ((A-=)) ((A--))
((BackSpace)) ((Delete)))
(composite
("f;" "க்") ; 0B95 0BCD
("f;W" "க்‌ஷ") ; 0B95 0BCD 200C 0BB7
("Zh" "ஒளா") ; 0B92 0BB3 0BBE
("Zp" "ஒளி") ; 0B92 0BB3 0BBF
("ZP" "ஒளீ") ; 0B92 0BB3 0BC0
("Z[" "ஒளு") ; 0B92 0BB3 0BC1
("Z{" "ஒளூ") ; 0B92 0BB3 0BC2
("Z;" "ஒள்") ; 0B92 0BB3 0BCD
("xs" "ஔ") ; 0B94
("xsh" "ஒளா") ; 0B92 0BB3 0BBE
("xsp" "ஒளி") ; 0B92 0BB3 0BBF
("xsP" "ஒளீ") ; 0B92 0BB3 0BC0
("xs[" "ஒளு") ; 0B92 0BB3 0BC1
("xs{" "ஒளூ") ; 0B92 0BB3 0BC2
("xs;" "ஒள்") ; 0B92 0BB3 0BCD
)
(consonant
("f" "க") ; 0B95
("q" "ங") ; 0B99
("r" "ச") ; 0B9A
("E" "ஜ") ; 0B9C
("]" "ஞ") ; 0B9E
("l" "ட") ; 0B9F
("z" "ண") ; 0BA3
("j" "த") ; 0BA4
("e" "ந") ; 0BA8
("d" "ன") ; 0BA9
("g" "ப") ; 0BAA
("k" "ம") ; 0BAE
("a" "ய") ; 0BAF
("u" "ர") ; 0BB0
("w" "ற") ; 0BB1
("y" "ல") ; 0BB2
("o" "ழ") ; 0BB4
("t" "வ") ; 0BB5
("U" "ஶ") ; 0BB6
("Q" "ஸ") ; 0BB8
("R" "ஹ") ; 0BB9
("T" "க்ஷ") ; 0B95 0BCD 0BB7
)
(sign
("p" "ி") ; 0BBF
("P" "ீ") ; 0BC0
("[" "ு") ; 0BC1
("{" "ூ") ; 0BC2
(";" "்") ; 0BCD
)
(lla
("s"))
(ssa
("W"))
(aa
("h"))
(e
("n"))
(ee
("N"))
(ai
("i"))
(backspace
((BackSpace)))
(delete
((Delete)))
(misc
("`" "ஃ") ; 0B83
("m" "அ") ; 0B85
("M" "ஆ") ; 0B86
("b" "இ") ; 0B87
("B" "ஈ") ; 0B88
("c" "உ") ; 0B89
("C" "ஊ") ; 0B8A
("v" "எ") ; 0B8E
("V" "ஏ") ; 0B8F
("I" "ஐ") ; 0B90
("x" "ஒ") ; 0B92
("X" "ஓ") ; 0B93
("Z" "ஔ") ; 0B94
("O" "ௐ") ; 0BD0
((A-0) "") ; 0BE6
((A-1) "௧") ; 0BE7
((A-2) "௨") ; 0BE8
((A-3) "௩") ; 0BE9
((A-4) "௪") ; 0BEA
((A-5) "௫") ; 0BEB
((A-6) "௬") ; 0BEC
((A-7) "௭") ; 0BED
((A-8) "௮") ; 0BEE
((A-9) "௯") ; 0BEF
((A-q) "௰") ; 0BF0
((A-w) "௱") ; 0BF1
((A-e) "௲") ; 0BF2
((A-y) "௳") ; 0BF3
((A-u) "௴") ; 0BF4
((A-i) "௵") ; 0BF5
((A-r) "௶") ; 0BF6
((A-t) "௷") ; 0BF7
((A-`) "௸") ; 0BF8
((A-=) "௹") ; 0BF9
((A--) "௺") ; 0BFA
("Y" "ஶ்ரீ") ; 0BB6 0BCD 0BB0 0BC0
("}" ";") ; 003B
("A" "")
("S" "")
("D" "")
("F" "")
("G" "")
("H" "")
("J" "")
("K" "")
("L" "")
))
(state
(init
(starter
(pushback 1)
(cond
((& (= use-surrounding-text 1) (= @-0 -1))
(shift surrounding-text))
(1
(shift preedit)))))
(surrounding-text
(consonant
(consonant-proc)
(commit))
(lla
(cond
((= @-1 0x200C)
(delete @-1)))
(cond
((& (>= @-2 0x0B95) (<= @-2 0x0BB9) ; a consonant
(= @-1 0x0BC6))
(delete @-1)
0x0BCC
(cond
((= @+0 0x200C)
(delete @+1))))
((= @-1 0x0B92)
(delete @-1)
0x0B94
(cond
((= @+0 0x200C)
(delete @+1))))
(1
0x0BB3
(consonant-proc)))
(commit))
(ssa
(cond
((= @-1 0x200C)
(delete @-1)))
(cond
((& (= @-2 0x0B95) (= @-1 0x0BCD))
0x200C))
0x0BB7
(consonant-proc)
(commit))
(sign
(cond
((= @+0 0x200C)
(delete @+1)))
(move @<)
(cond
((= @-1 0x200C)
(delete @-1)))
(cond
((= @-1 0x0B94)
(delete @-1)
0x0B92 0x0BB3)
((= @-1 0x0BCC)
(delete @-1)
0x0BC6 0x0BB3))
(commit))
(aa
(pre-proc)
(cond
((= @-1 0x0BC6)
(cond
((& (| (< @-3 0x0B95) (> @-3 0x0BB9)) ; not a consonant
(= @-2 0x200C))
(delete @-2))
(1
(delete @-1)))
0x0BCA)
((= @-1 0x0BC7)
(cond
((& (| (< @-3 0x0B95) (> @-3 0x0BB9)) ; not a consonant
(= @-2 0x200C))
(delete @-2))
(1
(delete @-1)))
0x0BCB)
((= @-1 0x0B94)
(delete @-1)
0x0B92 0x0BB3 0x0BBE)
((= @-1 0x0BCC)
(delete @-1)
0x0BC6 0x0BB3 0x0BBE)
(1
0x0BBE))
(commit))
(e
(pre-proc)
(cond
;; additional check-surrounding-text for this vowel sign
((& (>= @+0 0x0B95) (<= @+0 0x0BB9) ; a consonant
(= @+1 0x0BB3))
(set c @+0)
(delete @+2)
(insert c)
0x0BCC)
;; ordinary check-surrounding-text
(1
(check-surrounding-text)
(cond
((= @+0 0x0BBE)
(delete @+1)
0x0BCA)
((= @+0 0x0BD7)
(delete @+1)
0x0BCC)
(1
0x0BC6))))
(commit))
(ee
(pre-proc)
(check-surrounding-text)
(cond
((= @+0 0x0BBE)
(delete @+1)
0x0BCB)
(1
0x0BC7))
(commit))
(ai
(pre-proc)
(check-surrounding-text)
0x0BC8
(commit))
(backspace
(pre-proc)
(cond
((& (>= @-4 0x0B95) (<= @-4 0x0BB9) ; a consonant
(= @-3 0x0BC6)
(= @-2 0x0BB3)
(| (& (>= @-1 0x0BBE) (<= @-1 0x0BC2)) ; a right/above/below vowel sign
(= @-1 0x0BCD)))
(delete @-3)
0x0BCC)
((& (= @-4 0x0BB6) (= @-3 0x0BCD) (= @-2 0x0BB0) (= @-1 0x0BC0)) ; shrii
(delete @-4))
((& (= @-3 0x0B92)
(= @-2 0x0BB3)
(| (& (>= @-1 0x0BBE) (<= @-1 0x0BC2)) ; a right/above/below vowel sign
(= @-1 0x0BCD)))
(delete @-3)
0x0B94)
((& (= @-3 0x0B95) (= @-2 0x0BCD) (= @-1 0x0BB7)) ; k.ssa
(delete @-3))
((| (= @-1 0x0BCA) (= @-1 0x0BCC)) ; vowel sign e/ai
(delete @-1)
0x0BC6)
((= @-1 0x0BCB) ; vowel sign ee
(delete @-1)
0x0BC7)
((& (>= @-1 0x0BC6) (<= @-1 0x0BC8)) ; a left vowel sign
(set vs @-1)
(delete @-1)
(cond
((& (>= @-1 0x0B95) (<= @-1 0x0BB9)) ; a consonant
(cond
((& (= @-3 0x0B95) (= @-2 0x0BCD) (= @-1 0x0BB7)) ; k.ssa
(delete @-3))
(1
(delete @-1)))
(cond
((& (>= @+0 0x0B95) (<= @+0 0x0BB9) ; a consonant follows
(| (< @+1 0x0BBE) (> @+1 0x0BD7))) ; not a vowel sign
;; visual : E C1 | C2 -> E C2 |
;; logical : C1 E | C2 -> C2 E |
(cond
((& (= @+0 0x0B95) (= @+1 0x0BCD) (= @+2 0x0BB7)) ; k.ssa
(delete @+3)
0x0B95 0x0BCD 0x0BB7)
(1
(set c @+0)
(delete @+1)
(insert c)))
(insert vs))
((& (>= @-1 0x0B95) (<= @-1 0x0BB9)) ; a consonant precedes
;; visual : C1 E C2 | X -> C1 E | X
;; logical : C1 C2 E | X -> C1 N E | X
0x200C
(insert vs))
(1
;; visual : X1 E C | X2 -> X1 E | X2
;; logical : X1 C E | X2 -> X1 E | X2
(insert vs))))
((= @-1 0x200C)
(delete @-1))))
(1
(delete @-1)))
(post-proc)
(commit))
(delete
(pre-proc)
(cond
((& (= @+0 0x0BB6) (= @+1 0x0BCD) (= @+2 0x0BB0) (= @+3 0x0C0)) ; shrii
(delete @+4))
((& (= @+0 0x0B95) (= @+1 0x0BCD) (= @+2 0x0BB7)) ; k.ssa
(cond
((& (>= @+3 0x0BC6) (<= @+3 0x0BC8)) ; a left vowel sign
(delete @+4)
0x0B95 0x0BCD 0x0BB7)
((| (= @+3 0x0BCA) (= @+3 0x0BCB)) ; vowel sign e/ee
(delete @+4)
0x0B95 0x0BCD 0x0BB7 0x0BBE)
((| (& (>= @+3 0x0BBE) (<= @+3 0x0BC2)) ; vowel sign aa .. uu
(= @+3 0x0BCC) ; vowel sign ai
(= @+3 0x0BCD)) ; virama
(delete @+4))
(1
(delete @+3))))
((& (>= @+0 0x0B95) (<= @+0 0x0BB9)) ; a consonant
(set c @+0)
(cond
((& (>= @+1 0x0BC6) (<= @+1 0x0BC8)) ; a left vowel sign
(delete @+2)
(insert c))
((| (= @+1 0x0BCA) (= @+1 0x0BCB)) ; vowel sign e/ee
(delete @+2)
(insert c)
0x0BBE)
((| (& (>= @+1 0x0BBE) (<= @+1 0x0BC2)) ; vowel sign aa .. uu
(= @+1 0x0BCC) ; vowel sign ai
(= @+1 0x0BCD)) ; virama
(delete @+2))
(1
(delete @+1))))
((| (= @+0 0x0BCA) (= @+0 0x0BCB)) ; vowel sign e/ee
(delete @+1)
0x0BBE)
((= @+0 0x0BCC) ; vowel sign ai
(delete @+1)
0x0BB3)
(1
(delete @+1)))
(post-proc)
(commit))
(misc
(move @<)
(cond
((= @-1 0x200C)
(delete @-1)))
(move @>)
(cond
((= @+0 0x200C)
(delete @+1)))
(commit)))
(preedit
(consonant (shift c-state))
(composite (commit))
(sign (commit))
(misc (commit))
(lla "ள" (shift c-state)) ; 0BB3
(ssa "ஷ" (shift c-state)) ; 0BB7
(aa "ா" (commit)) ; 0BBE
(e "ெ" (shift e-state)) ; 0BC6
(ee "ே" (shift ee-state)) ; 0BC7
(ai "ை" (shift ai-state)) ; 0BC8
(nil
(unhandle)))
(c-state
(sign (shift c-s-state))
(aa "ா" (shift c-s-state)) ; 0BBE
(backspace (undo)))
(c-s-state
(sign
(cond
((= @-2 0x0BCC)
(move @-)
(delete @-)
0x0BC6 0x0BB3
(move @+))
(1
(commit)
(shift preedit))))
(aa
"ா"
(cond
((= @-2 0x0BCC)
(move @-)
(delete @-)
0x0BC6 0x0BB3
(move @+))
(1
(commit)
(shift preedit))))
(backspace (undo)))
(e-state
(consonant (move @<) (delete @+) (move @>) "ெ" (shift e-c-state))
(lla (delete @-) "ளெ" (shift e-c-state))
(ssa (delete @-) "ஷெ" (shift e-c-state))
(backspace (delete @-) (shift preedit))
(nil (undo -1)))
(ee-state
(consonant (move @<) (delete @+) (move @>) "ே" (shift ee-c-state))
(lla (delete @-) "ளே" (shift ee-c-state))
(ssa (delete @-) "ஷே" (shift ee-c-state))
(backspace (delete @-) (shift preedit))
(nil (undo -1)))
(ai-state
(consonant (move @<) (delete @+) (move @>) "ை" (shift c-s-state))
(lla (delete @-) "ளை" (shift c-s-state))
(ssa (delete @-) "ஷை" (shift c-s-state))
(backspace (delete @-) (shift preedit))
(nil (undo -1)))
(e-c-state
(aa (delete @-) "ொ" (shift c-s-state))
(lla (delete @-) "ௌ" (shift c-s-state))
(backspace (delete @<) "ெ" (shift e-state)))
(ee-c-state
(aa (delete @-) "ோ" (shift c-s-state))
(backspace (delete @<) "ே" (shift ee-state)))
)
;; Local Variables:
;; coding: utf-8
;; mode: emacs-lisp
;; End: