From 404877d87fff83dea3595d5355ecfba6b126c73f Mon Sep 17 00:00:00 2001 From: ntakahas Date: Tue, 22 Nov 2005 13:10:30 +0000 Subject: [PATCH] New file. --- si-wijesekera.mim | 477 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 477 insertions(+) create mode 100644 si-wijesekera.mim diff --git a/si-wijesekera.mim b/si-wijesekera.mim new file mode 100644 index 0000000..4eb75eb --- /dev/null +++ b/si-wijesekera.mim @@ -0,0 +1,477 @@ +;; Copyright (C) 2005 +;; 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., 59 Temple Place, Suite 330, Boston, MA +;; 02111-1307, USA. + +(input-method si wijesekera) + +(description "Sinhala input method based on SLS 1134 Rev. 2:2004. + +") + +(title "Wijesekera") + +(map + (consonant + ("l" "ක") ; 0D9A + ("L" "ඛ") ; 0D9B + ("." "ග") ; 0D9C + (">" "ඝ") ; 0D9D + ("X" "ඞ") ; 0D9E + ((A-.) "ඟ") ; 0D9F + ("p" "ච") ; 0DA0 + ("P" "ඡ") ; 0DA1 + ("c" "ජ") ; 0DA2 + ("C" "ඣ") ; 0DA3 + ("\[" "ඤ") ; 0DA4 + ("{" "ඥ") ; 0DA5 + ((A-c) "ඦ") ; 0DA6 + ("g" "ට") ; 0DA7 + ("G" "ඨ") ; 0DA8 + ("v" "ඩ") ; 0DA9 + ("V" "ඪ") ; 0DAA + ("K" "ණ") ; 0DAB + ((A-v) "ඬ") ; 0DAC + (";" "ත") ; 0DAD + (":" "ථ") ; 0DAE + ("o" "ද") ; 0DAF + ("O" "ධ") ; 0DB0 + ("k" "න") ; 0DB1 + ((A-o) "ඳ") ; 0DB3 + ("m" "ප") ; 0DB4 + ("M" "ඵ") ; 0DB5 + ("n" "බ") ; 0DB6 + ("N" "භ") ; 0DB7 + ("u" "ම") ; 0DB8 + ("U" "ඹ") ; 0DB9 + ("h" "ය") ; 0DBA + ("r" "ර") ; 0DBB + ("," "ල") ; 0DBD + ("j" "ව") ; 0DC0 + ("Y" "ශ") ; 0DC1 + ("I" "ෂ") ; 0DC2 + ("i" "ස") ; 0DC3 + ("y" "හ") ; 0DC4 + ("<" "ළ") ; 0DC5 + ("F" "ෆ") ; 0DC6 + ) + + (misc + ("x" "ං") ; 0D82 + ((A-x) "ඃ") ; 0D83 + + ("w" "අ") ; 0D85 + ("b" "ඉ") ; 0D89 + ("B" "ඊ") ; 0D8A + ("W" "උ") ; 0D8B + ("R" "ඍ") ; 0D8D + ((A-,) "ඏ") ; 0D8F + + ("T" "ඔ") ; 0D94 + + ("s" "ි") ; 0DD2 + ("S" "ී") ; 0DD3 + ("q" "ු") ; 0DD4 + + ("Q" "ූ") ; 0DD6 + + ((A-a) "ෳ") ; 0DF3 + ((A-') "෴") ; 0DF4 + + ("\]" ";") + ("}" ":") + ("'" ".") + ("\"" ",") + ("z" "'") + ("Z" "\"") + + ("|" "‍්") ; touch (ZWJ 0DCA) + ("J" "ළු") ; muurdhaja lu (0DC5 0DD4) + ((S-\ ) " ") ; NBSP + ((A-\ ) "‌") ; ZWNJ + + ("t" + (set c @-2) + (cond + ((= @-1 0x0DD9) + (cond + ((= c 0x200C) + (delete @-2) + 0x0D93) + ((| (< c 0x0D9A) (> c 0x0DC6)) + (delete @-1) + 0x0D93) + (1 + 0x0D91))) + (1 + 0x0D91))) + + ("a" + (set c @-1) + (cond + ((= c 0x0D91) + (delete @-1) + 0x0D92) + ((= c 0x0D94) + (delete @-1) + 0x0D95) + ((= c 0x0DD9) + (delete @-1) + 0x0DDA) + ((= c 0x0DDC) + (delete @-1) + 0x0DDD) + (1 + 0x0DCA))) + + ("d" + (set c @-1) + (cond + ((= c 0x0D85) + (delete @-1) + 0x0D86) + ((= c 0x0DD9) + (delete @-1) + 0x0DDC) + (1 + 0x0DCF))) + + ("e" + (cond + ((= @-1 0x0D85) + (delete @-1) + 0x0D87) + (1 + 0x0DD0))) + + ("E" + (set c @-1) + (cond + ((= c 0x0D85) + (delete @-1) + 0x0D88) + ((= c 0x0DD4) + (cond + ((= @-2 0x0DC5) + (delete @-1) + 0x0DD6) + (1 + 0x0DD1))) + (1 + 0x0DD1))) + + ("D" + (set c @-1) + (cond + ((= c 0x0D8D) + (delete @-1) + 0x0D8E) + ((= c 0x0DD8) + (delete @-1) + 0x0DF2) + (1 + 0x0DD8))) + + ("A" + (set c @-1) + (cond + ((= c 0x0D8B) + (delete @-1) + 0x0D8C) + ((= c 0x0D8F) + (delete @-1) + 0x0D90) + ((= c 0x0D94) + (delete @-1) + 0x0D96) + ((= c 0x0DD9) + (delete @-1) + 0x0DDE) + (1 + 0x0DDF))) + + ("f" + (set c @+1) + (cond + ((& (> c 0x0D99) (< c 0x0DC7)) + (delete @+1) + (insert c) + (forward) + (set c @+1) + (cond + ((= c 0x0DCA) + (delete @+1) + 0x0DDA) + ((= c 0x0DD9) + (delete @+1) + 0x0DDB) + ((= c 0x0DCF) + (delete @+1) + 0x0DDC) + ((= c 0x0DDF) + (delete @+1) + 0x0DDE) + (1 + 0x0DD9))) + ((= c 0x0D91) + (delete @+1) + 0x0D93) + ((= c 0x0DD9) + (delete @+1) + 0x0DDB) + ((& (= c 0x200C) (= @+2 0x0DD9)) + (delete @+2) + 0x200C 0x0DDB) + ((& (= @-1 0x0DD9) + (| (< @-2 0x0D9A) (> @-2 0x0DC6))) + (delete @-1) + 0x0DDB) + ((& (> @-1 0x0D99) (< @-1 0xDC7)) + 0x200C 0x0DD9) + (1 + 0x0DD9))) + + ;; sanyaka letters + ((A-z) + (set c @-1) + (cond + ((= c 0x0DAF) + (delete @-1) + 0x0DB3) + ((= c 0x0D9C) + (delete @-1) + 0x0D9F) + ((= c 0x0DA9) + (delete @-1) + 0x0DAC) + ((= c 0x0DA2) + (delete @-1) + 0x0DA6))) + + ;; yansaya + ("H" + (set c @-1) + (cond + ((= c 0x0DD9) + (delete @-1)) + ((= c 0x0DDB) + (delete @-1)) + (1 + (set c 0))) + (cond + ((& (> @-1 0x0D99) (< @-1 0x0DC6)) + 0x0DCA 0x200D 0x0DBA)) + (cond + ((> c 0) + (insert c)))) + + ;; rakaransaya + ("`" + (set c @-1) + (cond + ((| (= c 0x0DD9) (= c 0x0DDB) (= c 0x0DD2) (= c 0x0DD3)) + (delete @-1)) + (1 + (set c 0))) + (cond + ((& (> @-1 0x0D99) (< @-1 0x0DC7)) + 0x0DCA 0x200D 0x0DBB)) + (cond + ((> c 0) + (insert c)))) + + ;; repaya + ("~" + (set c @-1) + (cond + ((| (= c 0x0DD9) (= c 0x0DDB)) + (delete @-1)) + (1 + (set c 0))) + (backward) + (cond + ((& (> @-1 0x0D99) (< @-1 0x0DC7)) + (set c1 @-1) + (delete @-1) + (insert c1) + (move @<) + 0x0DBB 0x0DCA 0x200D)) + (cond + ((> c 0) + (move @>) + (insert c)))) + + ((BackSpace) + (delete-preceding-zw) + (set c @-1) + (delete @-1) + (cond + ((= c 0x0D86) + 0x0D85) + ((= c 0x0D87) + 0x0D85) + ((= c 0x0D88) + 0x0D85) + ((= c 0x0D8C) + 0x0D8B) + ((= c 0x0D8E) + 0x0D8D) + ((= c 0x0D90) + 0x0D8F) + ((= c 0x0D92) + 0x0D8F) + ((= c 0x0D93) + (cond ((& (> @-1 0x0D99) (< @-1 0x0DC7)) 0x200C)) + 0x0DD9) + ((= c 0x0D95) + 0x0D94) + ((= c 0x0D96) + 0x0D94) + + ((= c 0x0DD9) + (cond + ((| (< @-1 0x0D9A) (> @-1 0x0DC6))) + ((& (> @-2 0x0D99) (< @-2 0x0DC7)) + (delete @-1) + 0x200C + 0x0DD9) + ((& (> @-4 0x0D99) (< @-1 0x0DC7) (= @-3 0x0DCA) (= @-2 0x200D)) + (delete @-3) + 0x0DD9) + (1 + (delete @-1) + 0x0DD9))) + + ((= c 0x0DDA) + 0x0DD9) + + ((= c 0x0DDB) + (cond + ((| (< @-1 0x0D9A) (> @-1 0x0DC6)) + 0x0DD9) + ((& (> @-2 0x0D99) (< @-2 0x0DC7)) + (delete @-1) + 0x200C + 0x0DDB) + ((& (> @-4 0x0D99) (< @-1 0x0DC7) (= @-3 0x0DCA) (= @-2 0x200D)) + (delete @-3) + 0x0DDB) + (1 + (delete @-1) + 0x0DDB))) + + ((= c 0x0DDC) + 0x0DD9) + ((= c 0x0DDD) + 0x0DDC) + ((= c 0x0DDE) + 0x0DD9) + ((= c 0x0DF2) + 0x0DD8) + ((& (> c 0x0D99) (< c 0x0DC7) (= @-2 0x0DCA) (= @-1 0x200D)) + (delete @-2))) + + (cond + ((& (> @-1 0x0D99) + (< @-1 0x0DC7) + (| (= @+1 0x0DD9) (= @+1 0x0DDB))) + 0x200C))) + + ("\\" (shift join)))) + +(macro + ;; prototype + (forward (set x 0)) + (backward (set x 0)) + (delete-preceding-zw (set x 0)) + + ;; skip following (virama zwj consonant)* sequence + (forward + (set cc3 @+3) + (cond + ((& (= @+1 0x0DCA) (= @+2 0x200D) (> cc3 0x0D99) (< cc3 0x0DC7)) + (delete @+3) + 0x0DCA 0x200D + (insert cc3) + (forward)))) + + (backward + (set cc1 @-1) + (cond + ((& (= @-3 0x0DCA) (> cc11 0x0D99) (< cc1 0x0DC7) (= @-2 0x200G)) + (delete @-3) + 0x0DCA + 0x200D + (insert cc1) + (move @<) + (backward)))) + + (delete-preceding-zw + (cond + ((| (= @-1 0x200C) (= @-1 0x200D)) + (delete @-1) + (delete-preceding-zw))))) + +(state + (init + (consonant + (cond + ((= @-1 0x0DD9) + (cond + ((= @-2 0x200C) + (delete @-2) + 0x0DD9) + ((| (< @-2 0x0D9A) (> @-2 0x0DC6)) + (delete @-1) + 0x0DD9))) + ((= @-1 0x0DDB) + (cond + ((= @-2 0x200C) + (delete @-2) + 0x0DDB) + ((| (< @-2 0x0D9A) (> @-2 0x0DC6)) + (delete @-1) + 0x0DDB))))) + (misc)) + + (join + (consonant + (set c @-1) + (cond + ((| (= c 0x0DD9) (= c 0x0DDB)) + (cond + ((& (> @-2 0x0D99) (< @-2 0x0DC7)) + (delete @-1) + (move @<) + 0x0DCA 0x200D + (move @>) + (insert c)))) + ((& (> c 0x0D99) (< c 0x0DC7)) + (move @<) + 0x0DCA 0x200D)) + (shift init)) + + (nil + (shift init)))) + +;; Local Variables: +;; coding: utf-8 +;; mode: emacs-lisp +;; End: -- 1.7.10.4