--- si-wijesekera.mim 2010/07/16 11:18:58 1.10 +++ si-wijesekera.mim 2011/12/06 04:16:49 1.11 @@ -1,5 +1,5 @@ ;; si-wijesekera.mim -- Sinhala input method with wijesekera method -;; Copyright (C) 2005, 2006, 2008, 2009 +;; Copyright (C) 2005, 2006, 2008, 2009, 2011 ;; National Institute of Advanced Industrial Science and Technology (AIST) ;; Registration Number H15PRO112 @@ -83,613 +83,650 @@ ("a") ("b") ("c") ("d") ("e") ("f") ("g") ("h") ("i") ("j") ("k") ("l") ("m") ("n") ("o") ("p") ("q") ("r") ("s") ("t") ("u") ("v") ("w") ("x") ("y") ("z") ("`") ("~") ("\[") ("{") ("\]") ("}") ("\\") ("|") (";") (":") ("'") ("\"") - (",") ("<") (".") (">") ((A-o)) ((A-.)) ((A-v)) ((A-c)) ((A-x)) - ((S-\ )) ((A-\ )) ((A-,)) ((A-a)) ((A-\')) ((A-z)) ((BackSpace)) ((Delete))) + (",") ("<") (".") (">") + ((A-a)) ((A-c)) ((A-o)) ((A-v)) ((A-x)) ((A-z)) ((A-\ )) ((A-.)) ((A-,)) ((A-\')) + ((G-a)) ((G-c)) ((G-o)) ((G-v)) ((G-x)) ((G-z)) ((G-\ )) ((G-.)) ((G-,)) ((G-\')) + ((S-\ )) ((BackSpace)) ((Delete))) - (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))) + (consonant + ("l" "ක") ; 0D9A + ("L" "ඛ") ; 0D9B + ("." "ග") ; 0D9C + (">" "ඝ") ; 0D9D + ("X" "ඞ") ; 0D9E + ((A-.) "ඟ") ; 0D9F + ((G-.) "ඟ") ; 0D9F + ("p" "ච") ; 0DA0 + ("P" "ඡ") ; 0DA1 + ("c" "ජ") ; 0DA2 + ("C" "ඣ") ; 0DA3 + ("\[" "ඤ") ; 0DA4 + ("{" "ඥ") ; 0DA5 + ((A-c) "ඦ") ; 0DA6 + ((G-c) "ඦ") ; 0DA6 + ("g" "ට") ; 0DA7 + ("G" "ඨ") ; 0DA8 + ("v" "ඩ") ; 0DA9 + ("V" "ඪ") ; 0DAA + ("K" "ණ") ; 0DAB + ((A-v) "ඬ") ; 0DAC + ((G-v) "ඬ") ; 0DAC + (";" "ත") ; 0DAD + (":" "ථ") ; 0DAE + ("o" "ද") ; 0DAF + ("O" "ධ") ; 0DB0 + ("k" "න") ; 0DB1 + ((A-o) "ඳ") ; 0DB3 + ((G-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 + ) - ("f" - (set c @+0) - (cond - ((& (>= c 0x0D9A) (<= c 0x0DC6)) - (delete @+1) - (insert c) - (forward) - (set c @+0) - (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) (= @+1 0x0DD9)) - (delete @+2) - 0x200C 0x0DDB) - ((& (= @-1 0x0DD9) - (| (< @-2 0x0D9A) (> @-2 0x0DC6))) - (delete @-1) - 0x0DDB) - ((& (>= @-1 0x0D9A) (<= @-1 0x0DC6)) - 0x200C 0x0DD9) - (1 - 0x0DD9))) + (misc + ("x" "ං") ; 0D82 + ((A-x) "ඃ") ; 0D83 + ((G-x) "ඃ") ; 0D83 + + ("w" "අ") ; 0D85 + ("b" "ඉ") ; 0D89 + ("B" "ඊ") ; 0D8A + ("W" "උ") ; 0D8B + ("R" "ඍ") ; 0D8D + ((A-,) "ඏ") ; 0D8F + ((G-,) "ඏ") ; 0D8F + + ("T" "ඔ") ; 0D94 + + ("s" "ි") ; 0DD2 + ("S" "ී") ; 0DD3 + ("q" "ු") ; 0DD4 + + ("Q" "ූ") ; 0DD6 + + ((A-a) "ෳ") ; 0DF3 + ((G-a) "ෳ") ; 0DF3 + ((A-\') "෴") ; 0DF4 + ((G-\') "෴") ; 0DF4 + + ("\]" ";") + ("}" ":") + ("'" ".") + ("\"" ",") + ("z" "'") + ("Z" "\"") + + ("|" "‍්") ; touch (ZWJ 0DCA) + ("J" "ළු") ; muurdhaja lu (0DC5 0DD4) + ((S-\ ) " ") ; NBSP + ((A-\ ) "‌") ; ZWNJ + ((G-\ ) "‌") ; 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 @+0) + (cond + ((& (>= c 0x0D9A) (<= c 0x0DC6)) + (delete @+1) + (insert c) + (forward) + (set c @+0) + (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) (= @+1 0x0DD9)) + (delete @+2) + 0x200C 0x0DDB) + ((& (= @-1 0x0DD9) + (| (< @-2 0x0D9A) (> @-2 0x0DC6))) + (delete @-1) + 0x0DDB) + ((& (>= @-1 0x0D9A) (<= @-1 0x0DC6)) + 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 0x0D9A) (<= @-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 0x0D9A) (<= @-1 0x0DC6)) - 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 0x0D9A) (<= @-1 0x0DC6)) - (set c1 @-1) - (delete @-1) - (insert c1) - (move @<) - 0x0DBB 0x0DCA 0x200D)) - (cond - ((> c 0) - (move @>) - (insert c)))) - - ((BackSpace) - (delete-preceding-zw) - (set c @-1) - (cond - ((< c 0) - (unhandle))) - (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 0x0D9A) (<= @-1 0x0DC6)) 0x200C)) - 0x0DD9) - ((= c 0x0D95) - 0x0D94) - ((= c 0x0D96) - 0x0D94) - - ((& (>= c 0x0D9A) (<= c 0x0DC6) (= @-2 0x0DCA) (= @-1 0x200D)) - (cond - ((= @-3 0x0DBB) - (delete @-3) - (insert c)) - (1 - (delete @-2)))) - - ((= c 0x0DD9) - (cond - ((| (< @-1 0x0D9A) (> @-1 0x0DC6))) - ((= @+0 0x0D91) - (delete @-1) - (delete @+1) - 0x0D93) - ((& (>= @+0 0x0D9A) (<= @+0 0x0DC6)) - (set c1 @+0) - (cond - ((= @+1 0x0DD9) - (merge-kombuva) - 0x0DDB) - ((= @+1 0x0DCA) - (merge-kombuva) - 0x0DDA) - ((= @+1 0x0DCF) - (merge-kombuva) - 0x0DDC) - ((= @+1 0x0DDF) - (merge-kombuva) - 0x0DDE) - (1 - (delete @-1) - (delete @+1) - (insert c1) - 0x0DD9))) - ((& (>= @-2 0x0D9A) (<= @-2 0x0DC6)) - (delete @-1) - 0x200C - 0x0DD9) - ((& (= @-4 0x0DBB) (= @-3 0x0DCA) (= @-2 0x200D)) - (set c1 @-1) - (delete @-4) - (insert c1) - 0x0DD9) - ((& (>= @-4 0x0D9A) (<= @-4 0x0DC6) (= @-3 0x0DCA) (= @-2 0x200D)) - (delete @-3) - 0x0DD9) - (1 - (delete @-1) - 0x0DD9))) - - ((= c 0x0DDA) - 0x0DD9) - - ((= c 0x0DDB) - (cond - ((| (< @-1 0x0D9A) (> @-1 0x0DC6)) - 0x0DD9) - ((& (>= @-2 0x0D9A) (<= @-2 0x0DC6)) - (delete @-1) - 0x200C - 0x0DDB) - ((& (= @-4 0x0DBB) (= @-3 0x0DCA) (= @-2 0x200D)) - (set c1 @-1) - (delete @-4) - (insert c1) - 0x0DDB) - ((& (>= @-4 0x0D9A) (<= @-4 0x0DC6) (= @-3 0x0DCA) (= @-2 0x200D)) - (delete @-3) - 0x0DDB) - (1 - (delete @-1) - 0x0DDB))) - - ((= c 0x0DDC) - 0x0DD9) - ((= c 0x0DDD) - 0x0DDC) - ((= c 0x0DDE) - 0x0DD9) - ((= c 0x0DF2) - 0x0DD8)) - - (cond - ((& (>= @-1 0x0D9A) - (<= @-1 0x0DC6) - (| (= @+0 0x0DD9) (= @+0 0x0DDB))) - 0x200C))) - - ((Delete) - (delete-following-zw) - (set c @+0) - (cond - ((< c 0) - (unhandle))) - (delete @+1) - (cond - ((= c 0x0D86) - 0x0DCF) - ((= c 0x0D87) - 0x0DD0) - ((= c 0x0D88) - 0x0DD1) - ((= c 0x0D8C) - 0x0DDF) - ((= c 0x0D8E) - 0x0DD8) - ((= c 0x0D90) - 0x0DDF) - ((= c 0x0D92) - 0x0DCA) - ((= c 0x0D93) - 0x0D91) - ((& (>= c 0x0D9A) (<= c 0x0DC6)) - (forward) - (cond - ((= @+0 0x0DD9) - (delete @+1) - (move @<) - (insert c)) - ((= @+0 0x0DDB) - (delete @+1) - 0x0DD9 - (move @<) - (insert c)) - ((= @+0 0x0DDA) - (delete @+1) - 0x0DCA - (move @<) - (insert c)) - ((= @+0 0x0DDC) - (delete @+1) - 0x0DCF - (move @<) - (insert c)) - ((= @+0 0x0DDE) - (delete @+1) - 0x0DDF - (move @<) - (insert c)) - (1 - (delete @<)))) - ((= c 0x0DDB) - 0x0DD9)))) - - (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 + ;; 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))) + + ;; sanyaka letters + ((G-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 0x0D9A) (<= @-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 0x0D9A) (<= @-1 0x0DC6)) + 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 0x0D9A) (<= @-1 0x0DC6)) + (set c1 @-1) + (delete @-1) + (insert c1) + (move @<) + 0x0DBB 0x0DCA 0x200D)) + (cond + ((> c 0) + (move @>) + (insert c)))) + + ((BackSpace) + (delete-preceding-zw) + (set c @-1) + (cond + ((< c 0) + (unhandle))) + (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 0x0D9A) (<= @-1 0x0DC6)) 0x200C)) + 0x0DD9) + ((= c 0x0D95) + 0x0D94) + ((= c 0x0D96) + 0x0D94) + + ((& (>= c 0x0D9A) (<= c 0x0DC6) (= @-2 0x0DCA) (= @-1 0x200D)) + (cond + ((= @-3 0x0DBB) + (delete @-3) + (insert c)) + (1 + (delete @-2)))) + + ((= c 0x0DD9) + (cond + ((| (< @-1 0x0D9A) (> @-1 0x0DC6))) + ((= @+0 0x0D91) + (delete @-1) + (delete @+1) + 0x0D93) + ((& (>= @+0 0x0D9A) (<= @+0 0x0DC6)) + (set c1 @+0) + (cond + ((= @+1 0x0DD9) + (merge-kombuva) + 0x0DDB) + ((= @+1 0x0DCA) + (merge-kombuva) + 0x0DDA) + ((= @+1 0x0DCF) + (merge-kombuva) + 0x0DDC) + ((= @+1 0x0DDF) + (merge-kombuva) + 0x0DDE) + (1 + (delete @-1) + (delete @+1) + (insert c1) + 0x0DD9))) + ((& (>= @-2 0x0D9A) (<= @-2 0x0DC6)) + (delete @-1) + 0x200C + 0x0DD9) + ((& (= @-4 0x0DBB) (= @-3 0x0DCA) (= @-2 0x200D)) + (set c1 @-1) + (delete @-4) + (insert c1) + 0x0DD9) + ((& (>= @-4 0x0D9A) (<= @-4 0x0DC6) (= @-3 0x0DCA) (= @-2 0x200D)) + (delete @-3) + 0x0DD9) + (1 + (delete @-1) + 0x0DD9))) + + ((= c 0x0DDA) + 0x0DD9) + + ((= c 0x0DDB) + (cond + ((| (< @-1 0x0D9A) (> @-1 0x0DC6)) + 0x0DD9) + ((& (>= @-2 0x0D9A) (<= @-2 0x0DC6)) + (delete @-1) + 0x200C + 0x0DDB) + ((& (= @-4 0x0DBB) (= @-3 0x0DCA) (= @-2 0x200D)) + (set c1 @-1) + (delete @-4) + (insert c1) + 0x0DDB) + ((& (>= @-4 0x0D9A) (<= @-4 0x0DC6) (= @-3 0x0DCA) (= @-2 0x200D)) + (delete @-3) + 0x0DDB) + (1 + (delete @-1) + 0x0DDB))) + + ((= c 0x0DDC) + 0x0DD9) + ((= c 0x0DDD) + 0x0DDC) + ((= c 0x0DDE) + 0x0DD9) + ((= c 0x0DF2) + 0x0DD8)) + + (cond + ((& (>= @-1 0x0D9A) + (<= @-1 0x0DC6) + (| (= @+0 0x0DD9) (= @+0 0x0DDB))) + 0x200C))) + + ((Delete) + (delete-following-zw) + (set c @+0) + (cond + ((< c 0) + (unhandle))) + (delete @+1) + (cond + ((= c 0x0D86) + 0x0DCF) + ((= c 0x0D87) + 0x0DD0) + ((= c 0x0D88) + 0x0DD1) + ((= c 0x0D8C) + 0x0DDF) + ((= c 0x0D8E) + 0x0DD8) + ((= c 0x0D90) + 0x0DDF) + ((= c 0x0D92) + 0x0DCA) + ((= c 0x0D93) + 0x0D91) + ((& (>= c 0x0D9A) (<= c 0x0DC6)) + (forward) + (cond + ((= @+0 0x0DD9) + (delete @+1) + (move @<) + (insert c)) + ((= @+0 0x0DDB) + (delete @+1) + 0x0DD9 + (move @<) + (insert c)) + ((= @+0 0x0DDA) + (delete @+1) + 0x0DCA + (move @<) + (insert c)) + ((= @+0 0x0DDC) + (delete @+1) + 0x0DCF + (move @<) + (insert c)) + ((= @+0 0x0DDE) + (delete @+1) + 0x0DDF + (move @<) + (insert c)) + (1 + (delete @<)))) + ((= c 0x0DDB) + 0x0DD9)))) - ("H" ; yansaya (0DCA 200D 0DBA) - (cond - ((| (= @-1 0x0DD9) (= @-1 0x0DDB)) - (move @-) "්‍ය" (move @>)) - (1 - "්‍ය"))) + (independent + ("w" "අ") ; 0D85 + ("b" "ඉ") ; 0D89 + ("B" "ඊ") ; 0D8A + ("W" "උ") ; 0D8B + ("R" "ඍ") ; 0D8D + ((A-,) "ඏ") ; 0D8F + ((G-,) "ඏ") ; 0D8F + ("t" "එ") ; 0D91 + ("T" "ඔ") ; 0D94 + ("l" "ක") ; 0D9A + ("L" "ඛ") ; 0D9B + ("." "ග") ; 0D9C + (">" "ඝ") ; 0D9D + ("X" "ඞ") ; 0D9E + ((A-.) "ඟ") ((0x2E A-z) "ඟ") ; 0D9F + ((G-.) "ඟ") ((0x2E G-z) "ඟ") ; 0D9F + ("p" "ච") ; 0DA0 + ("P" "ඡ") ; 0DA1 + ("c" "ජ") ; 0DA2 + ("C" "ඣ") ; 0DA3 + ("\[" "ඤ") ; 0DA4 + ("{" "ඥ") ; 0DA5 + ((A-c) "ඦ") ((0x63 A-z) "ඦ") ; 0DA6 + ((G-c) "ඦ") ((0x63 G-z) "ඦ") ; 0DA6 + ("g" "ට") ; 0DA7 + ("G" "ඨ") ; 0DA8 + ("v" "ඩ") ; 0DA9 + ("V" "ඪ") ; 0DAA + ("K" "ණ") ; 0DAB + ((A-v) "ඬ") ((0x76 A-z) "ඬ") ; 0DAC + ((G-v) "ඬ") ((0x76 G-z) "ඬ") ; 0DAC + (";" "ත") ; 0DAD + (":" "ථ") ; 0DAE + ("o" "ද") ; 0DAF + ("O" "ධ") ; 0DB0 + ("k" "න") ; 0DB1 + ((A-o) "ඳ") ((0x6F A-z) "ඳ") ; 0DB3 + ((G-o) "ඳ") ((0x6F G-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 + ((G-\') "෴") ; 0DF4 + + ("J" "ළු") ; muurdhaja lu (0DC5 0DD4) + + ((S-\ ) " ") ; NBSP (00A0) + ((A-\ ) "‌") ; ZWNJ (200C) + ((G-\ ) "‌") ; ZWNJ (200C) + + ("\]" ";") + ("}" ":") + ("'" ".") + ("\"" ",") + ("z" "'") + ("Z" "\"") + ) - ("`" ; rakaransaya (0DCA 200D 0DBB) - (cond - ((| (= @-1 0x0DD2) (= @-1 0x0DD3) (= @-1 0x0DD9) (= @-1 0x0DDB)) - (move @-) "්‍ර" (move @>)) - (1 "්‍ර"))) + (dependent + ("x" "ං") ; 0D82 + ((A-x) "ඃ") ; 0D83 + ((G-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 + ((G-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 @>)) - ) + ("~" ; repaya (0DBB 0DCA 200D) + (move @<) + "ර්‍" + (move @>)) + ) - (kombuva - ("f" "ෙ")) ; 0DD9 + (kombuva + ("f" "ෙ")) ; 0DD9 - (join - ("\\")) + (join + ("\\")) - (backspace - ((BackSpace)))) + (backspace + ((BackSpace)))) (state (init