;; si-wijesekera-preedit.mim -- Sinhala input method with wijesekera method ;; Copyright (C) 2006, 2007 ;; 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 si wijesekera-preedit) (description "Sinhala input method based on SLS 1134 Rev. 2:2004. This input method uses preedit rather than surrounding text. ") (title "සි") (map (independent ("w" "අ") ; 0D85 ("b" "ඉ") ; 0D89 ("B" "ඊ") ; 0D8A ("W" "උ") ; 0D8B ("R" "ඍ") ; 0D8D ((A-,) "ඏ") ; 0D8F ("t" "එ") ; 0D91 ("T" "ඔ") ; 0D94 ("l" "ක") ; 0D9A ("L" "ඛ") ; 0D9B ("." "ග") ; 0D9C (">" "ඝ") ; 0D9D ("X" "ඞ") ; 0D9E ((A-.) "ඟ") ((0x2E A-z) "ඟ") ; 0D9F ("p" "ච") ; 0DA0 ("P" "ඡ") ; 0DA1 ("c" "ජ") ; 0DA2 ("C" "ඣ") ; 0DA3 ("\[" "ඤ") ; 0DA4 ("{" "ඥ") ; 0DA5 ((A-c) "ඦ") ((0x63 A-z) "ඦ") ; 0DA6 ("g" "ට") ; 0DA7 ("G" "ඨ") ; 0DA8 ("v" "ඩ") ; 0DA9 ("V" "ඪ") ; 0DAA ("K" "ණ") ; 0DAB ((A-v) "ඬ") ((0x76 A-z) "ඬ") ; 0DAC (";" "ත") ; 0DAD (":" "ථ") ; 0DAE ("o" "ද") ; 0DAF ("O" "ධ") ; 0DB0 ("k" "න") ; 0DB1 ((A-o) "ඳ") ((0x6F A-z) "ඳ") ; 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 ((A-\') "෴") ; 0DF4 ("J" "ළු") ; muurdhaja lu (0DC5 0DD4) ((S-\ ) " ") ; NBSP (00A0) ((A-\ ) "‌") ; ZWNJ (200C) ("\]" ";") ("}" ":") ("'" ".") ("\"" ",") ("z" "'") ("Z" "\"") ) (dependent ("x" "ං") ; 0D82 ((A-x) "ඃ") ; 0D83 ("a" (cond ((= @-1 0x0D91) (delete @-) "ඒ") ; 0D92 ((= @-1 0x0D94) (delete @-) "ඕ") ; 0D95 ((= @-1 0x0DD9) (delete @-) "ේ") ; 0DDA ((= @-1 0x0DDC) (delete @-) "ෝ") ; 0DDD (1 "්"))) ; 0DCA ("d" (cond ((= @-1 0x0D85) (delete @-) "ආ") ; 0D86 ((= @-1 0x0DD9) (delete @-) "ො") ; 0DDC (1 "ා"))) ; 0DCF ("e" (cond ((= @-1 0x0D85) (delete @-) "ඇ") ; 0D87 (1 "ැ"))) ; 0DD0 ("E" (cond ((= @-1 0x0D85) (delete @-) "ඈ") ; 0D88 ((& (= @-2 0x0DC5) (= @-1 0x0DD4)) (delete @-) "ූ") ; 0DD6 (1 "ෑ"))) ; 0DD1 ("s" "ි") ; 0DD2 ("S" "ී") ; 0DD3 ("q" "ු") ; 0DD4 ("Q" "ූ") ; 0DD6 ("D" (cond ((= @-1 0x0D8D) (delete @-) "ඎ") ; 0D8E ;; The following line does not work when no consonant proceeds. ;; ((= @-1 0x0DD8) (delete @-) "ෲ") ; 0DF2 (1 "ෘ"))) ; 0DD8 ;; This one works with or without a preceeding consonant. ("DD" "ෲ") ; 0DF2 ("A" (cond ((= @-1 0x0D8B) (delete @-) "ඌ") ; 0D8C ((= @-1 0x0D8F) (delete @-) "ඐ") ; 0D90 ((= @-1 0x0D94) (delete @-) "ඖ") ; 0D96 ((= @-1 0x0DD9) (delete @-) "ෞ") ; 0DDE (1 "ෟ"))) ; 0DDF ((A-a) "ෳ") ; 0DF3 ("H" ; yansaya (0DCA 200D 0DBA) (cond ((| (= @-1 0x0DD9) (= @-1 0x0DDB)) (move @-) "්‍ය" (move @>)) (1 "්‍ය"))) ("`" ; rakaransaya (0DCA 200D 0DBB) (cond ((| (= @-1 0x0DD2) (= @-1 0x0DD3) (= @-1 0x0DD9) (= @-1 0x0DDB)) (move @-) "්‍ර" (move @>)) (1 "්‍ර"))) ("~" ; repaya (0DBB 0DCA 200D) (move @<) "ර්‍" (move @>)) ) (kombuva ("f" "ෙ")) ; 0DD9 (join ("\\")) (backspace ((BackSpace))) ) (state (init-state (independent (shift independent-state)) (kombuva (shift kombuva-state)) (dependent)) (independent-state (dependent) (join (cond ((| (= @-1 0x0DD9) (= @-1 0x0DDB)) (shift join-state)) ((| (< @-1 0x0D9A) (> @-1 0x0DC6)) (undo -1)) (1 (shift join-state)))) (backspace (undo))) (join-state (t (mark p)) (independent (move p) (set c @-1) (cond ((| (= c 0x0DD9) (= c 0x0DDB)) (delete @-) "්‍" ; 0DCA 200D (move @>) (insert c)) (1 "්‍" ; 0DCA 200D (move @>))) (shift independent-state)) (backspace (undo))) (kombuva-state (t (mark p)) (independent (cond ((& (= @0 0x0DD9) (= @1 0x0D91)) (delete @<) "ඓ" ; 0D93 (shift independent-state)) ((& (= @0 0x0DD9) (< @2 0)) (move @0) (delete @+) (move @>) "ෙ" ; 0DD9 (shift independent-state)) ((& (= @0 0x0DDB) (< @2 0)) (move @0) (delete @+) (move @>) "ෛ" ; 0DDB (shift independent-state)) (1 (delete p) (pushback 1) (shift init-state)))) (kombuva (mark p) (cond ((& (= @0 0x0DD9) (< @2 0)) (delete @<) "ෛ") ; 0DDB (1 (delete @-) (pushback 1) (shift init-state)))) (dependent (mark p)) (backspace (undo)))) ;; Local Variables: ;; coding: utf-8 ;; mode: emacs-lisp ;; End: