From b69083460fda6f848a5c19e931b19ae1308f71ef Mon Sep 17 00:00:00 2001 From: ntakahas Date: Fri, 24 Oct 2008 07:23:24 +0000 Subject: [PATCH] New file. --- MIM/ta-lk-renganathan.mim | 654 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 654 insertions(+) create mode 100644 MIM/ta-lk-renganathan.mim diff --git a/MIM/ta-lk-renganathan.mim b/MIM/ta-lk-renganathan.mim new file mode 100644 index 0000000..918237c --- /dev/null +++ b/MIM/ta-lk-renganathan.mim @@ -0,0 +1,654 @@ +;; 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) + +(description "Tamil input method with Renganathan layout. +For the detail, see the page: +") + +(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 + ((= @+1 0x200C) + (delete @+1)))) + + (post-proc + (cond + ((& (>= @-1 0x0B95) (<= @-1 0x0BB9) ; a consonant + (>= @+1 0x0BC6) (<= @+1 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 + (>= @+1 0x0B95) (<= @+1 0x0BB9) ; a consonant + (| (< @+2 0x0BBE) (> @+2 0x0BD7))) ; not a vowel sign + ;; exchange @-1 and @+1 + (set vs @-1) + (set c @+1) + (delete @-1) + (delete @+1) + (insert c) + (insert vs)) + + ((& (= @-1 0x200C) + (| (< @-2 0x0B95) (> @-2 0x0BB9) ; not a constant + (< @+1 0x0BC6) (> @+1 0x0BCC))) ; not a left/two-part vowel sign + ;; delete unnecessary ZWNJ + (delete @-1)) + + ((& (= @+1 0x200C) + (| (< @-1 0x0B95) (> @-1 0x0BB9) ; not a constant + (< @+2 0x0BC6) (> @+2 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 + ((& (= @+1 0x200C) + (| (< @+2 0x0BC6) (> @+2 0x0BCC))) ; not a left vowel sign + (delete @+1))) + + (cond + ((= vs 0x0BC6) + (cond + ((= @+1 0x0BBE) + (delete @+1) + 0x0BCA) + ((| (= @+1 0x0BB3) (= @+1 0x0BD7)) + (delete @+1) + 0x0BCC) + (1 + 0x0BC6))) + ((= vs 0x0BC7) + (cond + ((= @+1 0x0BBE) + (delete @+1) + 0x0BCB) + (1 + 0x0BC7))) + ((= vs 0x0BC8) + 0x0BC8)) + + (cond + ((& (>= @-1 0x0B95) (<= @-1 0x0BB9) ; a consonant + (>= @+1 0x0BC6) (<= @+1 0x0BCC)) ; a left vowel sign + 0x200C))) + + (check-surrounding-text + (cond + ((& (= @+1 0x0B95) (= @+2 0x0BCD) (= @+3 0x0BB7)) ; k.ssa follows + 0x0B95 0x0BCD 0x0BB7 + (delete @+3)) + ((& (>= @+1 0x0B95) (<= @+1 0x0BB9)) ; a consonant follows + (set c @+1) + (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 + ((= @+1 0x200C) + (delete @+1)))) + ((= @-1 0x0B92) + (delete @-1) + 0x0B94 + (cond + ((= @+1 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 + ((= @+1 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 + ((& (>= @+1 0x0B95) (<= @+1 0x0BB9) ; a consonant + (= @+2 0x0BB3)) + (set c @+1) + (delete @+2) + (insert c) + 0x0BCC) + + ;; ordinary check-surrounding-text + (1 + (check-surrounding-text) + (cond + ((= @+1 0x0BBE) + (delete @+1) + 0x0BCA) + ((= @+1 0x0BD7) + (delete @+1) + 0x0BCC) + (1 + 0x0BC6)))) + + (commit)) + + (ee + (pre-proc) + + (check-surrounding-text) + (cond + ((= @+1 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 + ((& (>= @+1 0x0B95) (<= @+1 0x0BB9) ; a consonant follows + (| (< @+2 0x0BBE) (> @+2 0x0BD7))) ; not a vowel sign + ;; visual : E C1 | C2 -> E C2 | + ;; logical : C1 E | C2 -> C2 E | + (cond + ((& (= @+1 0x0B95) (= @+2 0x0BCD) (= @+3 0x0BB7)) ; k.ssa + (delete @+3) + 0x0B95 0x0BCD 0x0BB7) + (1 + (set c @+1) + (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 + ((& (= @+1 0x0BB6) (= @+2 0x0BCD) (= @+3 0x0BB0) (= @+4 0x0C0)) ; shrii + (delete @+4)) + + ((& (= @+1 0x0B95) (= @+2 0x0BCD) (= @+3 0x0BB7)) ; k.ssa + (cond + ((& (>= @+4 0x0BC6) (<= @+4 0x0BC8)) ; a left vowel sign + (delete @+4) + 0x0B95 0x0BCD 0x0BB7) + ((| (= @+4 0x0BCA) (= @+4 0x0BCB)) ; vowel sign e/ee + (delete @+4) + 0x0B95 0x0BCD 0x0BB7 0x0BBE) + ((| (& (>= @+4 0x0BBE) (<= @+4 0x0BC2)) ; vowel sign aa .. uu + (= @+4 0x0BCC) ; vowel sign ai + (= @+4 0x0BCD)) ; virama + (delete @+4)) + (1 + (delete @+3)))) + + ((& (>= @+1 0x0B95) (<= @+1 0x0BB9)) ; a consonant + (set c @+1) + (cond + ((& (>= @+2 0x0BC6) (<= @+2 0x0BC8)) ; a left vowel sign + (delete @+2) + (insert c)) + ((| (= @+2 0x0BCA) (= @+2 0x0BCB)) ; vowel sign e/ee + (delete @+2) + (insert c) + 0x0BBE) + ((| (& (>= @+2 0x0BBE) (<= @+2 0x0BC2)) ; vowel sign aa .. uu + (= @+2 0x0BCC) ; vowel sign ai + (= @+2 0x0BCD)) ; virama + (delete @+2)) + (1 + (delete @+1)))) + + ((| (= @+1 0x0BCA) (= @+1 0x0BCB)) ; vowel sign e/ee + (delete @+1) + 0x0BBE) + + ((= @+1 0x0BCC) ; vowel sign ai + (delete @+1) + 0x0BB3) + + (1 + (delete @+1))) + + (post-proc) + (commit)) + + (misc + (move @<) + (cond + ((= @-1 0x200C) + (delete @-1))) + (move @>) + (cond + ((= @+1 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 + + (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: -- 1.7.10.4