f236d6
--- si-wijesekera.mim	2010/07/16 11:18:58	1.10
f236d6
+++ si-wijesekera.mim	2011/12/06 04:16:49	1.11
f236d6
@@ -1,5 +1,5 @@
f236d6
 ;; si-wijesekera.mim -- Sinhala input method with wijesekera method
f236d6
-;; Copyright (C) 2005, 2006, 2008, 2009
f236d6
+;; Copyright (C) 2005, 2006, 2008, 2009, 2011
f236d6
 ;;   National Institute of Advanced Industrial Science and Technology (AIST)
f236d6
 ;;   Registration Number H15PRO112
f236d6
 
f236d6
@@ -83,613 +83,650 @@
f236d6
   ("a") ("b") ("c") ("d") ("e") ("f") ("g") ("h") ("i") ("j") ("k") ("l") ("m")
f236d6
   ("n") ("o") ("p") ("q") ("r") ("s") ("t") ("u") ("v") ("w") ("x") ("y") ("z") 
f236d6
   ("`") ("~") ("\[") ("{") ("\]") ("}") ("\\") ("|") (";") (":") ("'") ("\"")
f236d6
-  (",") ("<") (".") (">") ((A-o)) ((A-.)) ((A-v)) ((A-c)) ((A-x))
f236d6
-  ((S-\ )) ((A-\ )) ((A-,)) ((A-a)) ((A-\')) ((A-z)) ((BackSpace)) ((Delete)))
f236d6
+  (",") ("<") (".") (">")
f236d6
+  ((A-a)) ((A-c)) ((A-o)) ((A-v)) ((A-x)) ((A-z)) ((A-\ )) ((A-.)) ((A-,)) ((A-\'))
f236d6
+  ((G-a)) ((G-c)) ((G-o)) ((G-v)) ((G-x)) ((G-z)) ((G-\ )) ((G-.)) ((G-,)) ((G-\'))
f236d6
+  ((S-\ )) ((BackSpace)) ((Delete)))
f236d6
 
f236d6
- (consonant
f236d6
-  ("l" "ක")				; 0D9A
f236d6
-  ("L" "ඛ")				; 0D9B
f236d6
-  ("." "ග")				; 0D9C
f236d6
-  (">" "ඝ")				; 0D9D
f236d6
-  ("X" "ඞ")				; 0D9E
f236d6
-  ((A-.) "ඟ")				; 0D9F
f236d6
-  ("p" "ච")				; 0DA0
f236d6
-  ("P" "ඡ")				; 0DA1
f236d6
-  ("c" "ජ")				; 0DA2
f236d6
-  ("C" "ඣ")				; 0DA3
f236d6
-  ("\[" "ඤ")				; 0DA4
f236d6
-  ("{" "ඥ")				; 0DA5
f236d6
-  ((A-c) "ඦ")				; 0DA6
f236d6
-  ("g" "ට")				; 0DA7
f236d6
-  ("G" "ඨ")				; 0DA8
f236d6
-  ("v" "ඩ")				; 0DA9
f236d6
-  ("V" "ඪ")				; 0DAA
f236d6
-  ("K" "ණ")				; 0DAB
f236d6
-  ((A-v) "ඬ")				; 0DAC
f236d6
-  (";" "ත")				; 0DAD
f236d6
-  (":" "ථ")				; 0DAE
f236d6
-  ("o" "ද")				; 0DAF
f236d6
-  ("O" "ධ")				; 0DB0
f236d6
-  ("k" "න")				; 0DB1
f236d6
-  ((A-o) "ඳ")				; 0DB3
f236d6
-  ("m" "ප")				; 0DB4
f236d6
-  ("M" "ඵ")				; 0DB5
f236d6
-  ("n" "බ")				; 0DB6
f236d6
-  ("N" "භ")				; 0DB7
f236d6
-  ("u" "ම")				; 0DB8
f236d6
-  ("U" "ඹ")				; 0DB9
f236d6
-  ("h" "ය")				; 0DBA
f236d6
-  ("r" "ර")				; 0DBB
f236d6
-  ("," "ල")				; 0DBD
f236d6
-  ("j" "ව")				; 0DC0
f236d6
-  ("Y" "ශ")				; 0DC1
f236d6
-  ("I" "ෂ")				; 0DC2
f236d6
-  ("i" "ස")				; 0DC3
f236d6
-  ("y" "හ")				; 0DC4
f236d6
-  ("<" "ළ")				; 0DC5
f236d6
-  ("F" "ෆ")				; 0DC6
f236d6
-  )
f236d6
-
f236d6
- (misc
f236d6
-  ("x" "ං")				; 0D82
f236d6
-  ((A-x) "ඃ")				; 0D83
f236d6
-
f236d6
-  ("w" "අ")				; 0D85
f236d6
-  ("b" "ඉ")				; 0D89
f236d6
-  ("B" "ඊ")				; 0D8A
f236d6
-  ("W" "උ")				; 0D8B
f236d6
-  ("R" "ඍ")				; 0D8D
f236d6
-  ((A-,) "ඏ")				; 0D8F
f236d6
-
f236d6
-  ("T" "ඔ")				; 0D94
f236d6
-
f236d6
-  ("s" "ි")				; 0DD2
f236d6
-  ("S" "ී")				; 0DD3
f236d6
-  ("q" "ු")				; 0DD4
f236d6
-
f236d6
-  ("Q" "ූ")				; 0DD6
f236d6
-
f236d6
-  ((A-a) "ෳ")				; 0DF3
f236d6
-  ((A-\') "෴")				; 0DF4
f236d6
-
f236d6
-  ("\]" ";")
f236d6
-  ("}" ":")
f236d6
-  ("'" ".")
f236d6
-  ("\"" ",")
f236d6
-  ("z" "'")
f236d6
-  ("Z" "\"")
f236d6
-
f236d6
-  ("|" "‍්")				; touch (ZWJ 0DCA)
f236d6
-  ("J" "ළු")				; muurdhaja lu (0DC5 0DD4)
f236d6
-  ((S-\ ) " ")				; NBSP
f236d6
-  ((A-\ ) "‌")				; ZWNJ
f236d6
-
f236d6
-  ("t"
f236d6
-   (set c @-2)
f236d6
-   (cond
f236d6
-    ((= @-1 0x0DD9)
f236d6
-     (cond
f236d6
-      ((= c 0x200C)
f236d6
-       (delete @-2)
f236d6
-       0x0D93)
f236d6
-      ((| (< c 0x0D9A) (> c 0x0DC6))
f236d6
-       (delete @-1)
f236d6
-       0x0D93)
f236d6
-      (1
f236d6
-       0x0D91)))
f236d6
-    (1
f236d6
-     0x0D91)))
f236d6
-
f236d6
-  ("a"
f236d6
-   (set c @-1)
f236d6
-   (cond
f236d6
-    ((= c 0x0D91)
f236d6
-     (delete @-1)
f236d6
-     0x0D92)
f236d6
-    ((= c 0x0D94)
f236d6
-     (delete @-1)
f236d6
-     0x0D95)
f236d6
-    ((= c 0x0DD9)
f236d6
-     (delete @-1)
f236d6
-     0x0DDA)
f236d6
-    ((= c 0x0DDC)
f236d6
-     (delete @-1)
f236d6
-     0x0DDD)
f236d6
-    (1
f236d6
-     0x0DCA)))
f236d6
-
f236d6
-  ("d"
f236d6
-   (set c @-1)
f236d6
-   (cond
f236d6
-    ((= c 0x0D85)
f236d6
-     (delete @-1)
f236d6
-     0x0D86)
f236d6
-    ((= c 0x0DD9)
f236d6
-     (delete @-1)
f236d6
-     0x0DDC)
f236d6
-    (1
f236d6
-     0x0DCF)))
f236d6
-
f236d6
-  ("e"
f236d6
-   (cond
f236d6
-    ((= @-1 0x0D85)
f236d6
-     (delete @-1)
f236d6
-     0x0D87)
f236d6
-    (1
f236d6
-     0x0DD0)))
f236d6
-
f236d6
-  ("E"
f236d6
-   (set c @-1)
f236d6
-   (cond
f236d6
-    ((= c 0x0D85)
f236d6
-     (delete @-1)
f236d6
-     0x0D88)
f236d6
-    ((= c 0x0DD4)
f236d6
-     (cond
f236d6
-      ((= @-2 0x0DC5)
f236d6
-       (delete @-1)
f236d6
-       0x0DD6)
f236d6
-      (1
f236d6
-       0x0DD1)))
f236d6
-    (1
f236d6
-     0x0DD1)))     
f236d6
-
f236d6
-  ("D"
f236d6
-   (set c @-1)
f236d6
-   (cond
f236d6
-    ((= c 0x0D8D)
f236d6
-     (delete @-1)
f236d6
-     0x0D8E)
f236d6
-    ((= c 0x0DD8)
f236d6
-     (delete @-1)
f236d6
-     0x0DF2)
f236d6
-    (1
f236d6
-     0x0DD8)))
f236d6
-
f236d6
-  ("A"
f236d6
-   (set c @-1)
f236d6
-   (cond
f236d6
-    ((= c 0x0D8B)
f236d6
-     (delete @-1)
f236d6
-     0x0D8C)
f236d6
-    ((= c 0x0D8F)
f236d6
-     (delete @-1)
f236d6
-     0x0D90)
f236d6
-    ((= c 0x0D94)
f236d6
-     (delete @-1)
f236d6
-     0x0D96)
f236d6
-    ((= c 0x0DD9)
f236d6
-     (delete @-1)
f236d6
-     0x0DDE)
f236d6
-    (1
f236d6
-     0x0DDF)))
f236d6
+  (consonant
f236d6
+   ("l" "ක")				; 0D9A
f236d6
+   ("L" "ඛ")				; 0D9B
f236d6
+   ("." "ග")				; 0D9C
f236d6
+   (">" "ඝ")				; 0D9D
f236d6
+   ("X" "ඞ")				; 0D9E
f236d6
+   ((A-.) "ඟ")				; 0D9F
f236d6
+   ((G-.) "ඟ")				; 0D9F
f236d6
+   ("p" "ච")				; 0DA0
f236d6
+   ("P" "ඡ")				; 0DA1
f236d6
+   ("c" "ජ")				; 0DA2
f236d6
+   ("C" "ඣ")				; 0DA3
f236d6
+   ("\[" "ඤ")				; 0DA4
f236d6
+   ("{" "ඥ")				; 0DA5
f236d6
+   ((A-c) "ඦ")				; 0DA6
f236d6
+   ((G-c) "ඦ")				; 0DA6
f236d6
+   ("g" "ට")				; 0DA7
f236d6
+   ("G" "ඨ")				; 0DA8
f236d6
+   ("v" "ඩ")				; 0DA9
f236d6
+   ("V" "ඪ")				; 0DAA
f236d6
+   ("K" "ණ")				; 0DAB
f236d6
+   ((A-v) "ඬ")				; 0DAC
f236d6
+   ((G-v) "ඬ")				; 0DAC
f236d6
+   (";" "ත")				; 0DAD
f236d6
+   (":" "ථ")				; 0DAE
f236d6
+   ("o" "ද")				; 0DAF
f236d6
+   ("O" "ධ")				; 0DB0
f236d6
+   ("k" "න")				; 0DB1
f236d6
+   ((A-o) "ඳ")				; 0DB3
f236d6
+   ((G-o) "ඳ")				; 0DB3
f236d6
+   ("m" "ප")				; 0DB4
f236d6
+   ("M" "ඵ")				; 0DB5
f236d6
+   ("n" "බ")				; 0DB6
f236d6
+   ("N" "භ")				; 0DB7
f236d6
+   ("u" "ම")				; 0DB8
f236d6
+   ("U" "ඹ")				; 0DB9
f236d6
+   ("h" "ය")				; 0DBA
f236d6
+   ("r" "ර")				; 0DBB
f236d6
+   ("," "ල")				; 0DBD
f236d6
+   ("j" "ව")				; 0DC0
f236d6
+   ("Y" "ශ")				; 0DC1
f236d6
+   ("I" "ෂ")				; 0DC2
f236d6
+   ("i" "ස")				; 0DC3
f236d6
+   ("y" "හ")				; 0DC4
f236d6
+   ("<" "ළ")				; 0DC5
f236d6
+   ("F" "ෆ")				; 0DC6
f236d6
+   )
f236d6
 
f236d6
-  ("f"
f236d6
-   (set c @+0)
f236d6
-   (cond
f236d6
-    ((& (>= c 0x0D9A) (<= c 0x0DC6))
f236d6
-     (delete @+1)
f236d6
-     (insert c)
f236d6
-     (forward)
f236d6
-     (set c @+0)
f236d6
-     (cond
f236d6
-      ((= c 0x0DCA)
f236d6
-       (delete @+1)
f236d6
-       0x0DDA)
f236d6
-      ((= c 0x0DD9)
f236d6
-       (delete @+1)
f236d6
-       0x0DDB)
f236d6
-      ((= c 0x0DCF)
f236d6
-       (delete @+1)
f236d6
-       0x0DDC)
f236d6
-      ((= c 0x0DDF)
f236d6
-       (delete @+1)
f236d6
-       0x0DDE)
f236d6
-      (1
f236d6
-       0x0DD9)))
f236d6
-    ((= c 0x0D91)
f236d6
-     (delete @+1)
f236d6
-     0x0D93)
f236d6
-    ((= c 0x0DD9)
f236d6
-     (delete @+1)
f236d6
-     0x0DDB)
f236d6
-    ((& (= c 0x200C) (= @+1 0x0DD9))
f236d6
-     (delete @+2)
f236d6
-     0x200C 0x0DDB)
f236d6
-    ((& (= @-1 0x0DD9)
f236d6
-	(| (< @-2 0x0D9A) (> @-2 0x0DC6)))
f236d6
-     (delete @-1)
f236d6
-     0x0DDB)
f236d6
-    ((& (>= @-1 0x0D9A) (<= @-1 0x0DC6))
f236d6
-     0x200C 0x0DD9)
f236d6
-    (1
f236d6
-     0x0DD9)))
f236d6
+  (misc
f236d6
+   ("x" "ං")				; 0D82
f236d6
+   ((A-x) "ඃ")				; 0D83
f236d6
+   ((G-x) "ඃ")				; 0D83
f236d6
+
f236d6
+   ("w" "අ")				; 0D85
f236d6
+   ("b" "ඉ")				; 0D89
f236d6
+   ("B" "ඊ")				; 0D8A
f236d6
+   ("W" "උ")				; 0D8B
f236d6
+   ("R" "ඍ")				; 0D8D
f236d6
+   ((A-,) "ඏ")				; 0D8F
f236d6
+   ((G-,) "ඏ")				; 0D8F
f236d6
+
f236d6
+   ("T" "ඔ")				; 0D94
f236d6
+
f236d6
+   ("s" "ි")				; 0DD2
f236d6
+   ("S" "ී")				; 0DD3
f236d6
+   ("q" "ු")				; 0DD4
f236d6
+
f236d6
+   ("Q" "ූ")				; 0DD6
f236d6
+
f236d6
+   ((A-a) "ෳ")				; 0DF3
f236d6
+   ((G-a) "ෳ")				; 0DF3
f236d6
+   ((A-\') "෴")				; 0DF4
f236d6
+   ((G-\') "෴")				; 0DF4
f236d6
+
f236d6
+   ("\]" ";")
f236d6
+   ("}" ":")
f236d6
+   ("'" ".")
f236d6
+   ("\"" ",")
f236d6
+   ("z" "'")
f236d6
+   ("Z" "\"")
f236d6
+
f236d6
+   ("|" "‍්")				; touch (ZWJ 0DCA)
f236d6
+   ("J" "ළු")				; muurdhaja lu (0DC5 0DD4)
f236d6
+   ((S-\ ) " ")				; NBSP
f236d6
+   ((A-\ ) "‌")				; ZWNJ
f236d6
+   ((G-\ ) "‌")				; ZWNJ
f236d6
+
f236d6
+   ("t"
f236d6
+    (set c @-2)
f236d6
+    (cond
f236d6
+     ((= @-1 0x0DD9)
f236d6
+      (cond
f236d6
+       ((= c 0x200C)
f236d6
+	(delete @-2)
f236d6
+	0x0D93)
f236d6
+       ((| (< c 0x0D9A) (> c 0x0DC6))
f236d6
+	(delete @-1)
f236d6
+	0x0D93)
f236d6
+       (1
f236d6
+	0x0D91)))
f236d6
+     (1
f236d6
+      0x0D91)))
f236d6
+
f236d6
+   ("a"
f236d6
+    (set c @-1)
f236d6
+    (cond
f236d6
+     ((= c 0x0D91)
f236d6
+      (delete @-1)
f236d6
+      0x0D92)
f236d6
+     ((= c 0x0D94)
f236d6
+      (delete @-1)
f236d6
+      0x0D95)
f236d6
+     ((= c 0x0DD9)
f236d6
+      (delete @-1)
f236d6
+      0x0DDA)
f236d6
+     ((= c 0x0DDC)
f236d6
+      (delete @-1)
f236d6
+      0x0DDD)
f236d6
+     (1
f236d6
+      0x0DCA)))
f236d6
+
f236d6
+   ("d"
f236d6
+    (set c @-1)
f236d6
+    (cond
f236d6
+     ((= c 0x0D85)
f236d6
+      (delete @-1)
f236d6
+      0x0D86)
f236d6
+     ((= c 0x0DD9)
f236d6
+      (delete @-1)
f236d6
+      0x0DDC)
f236d6
+     (1
f236d6
+      0x0DCF)))
f236d6
+
f236d6
+   ("e"
f236d6
+    (cond
f236d6
+     ((= @-1 0x0D85)
f236d6
+      (delete @-1)
f236d6
+      0x0D87)
f236d6
+     (1
f236d6
+      0x0DD0)))
f236d6
+
f236d6
+   ("E"
f236d6
+    (set c @-1)
f236d6
+    (cond
f236d6
+     ((= c 0x0D85)
f236d6
+      (delete @-1)
f236d6
+      0x0D88)
f236d6
+     ((= c 0x0DD4)
f236d6
+      (cond
f236d6
+       ((= @-2 0x0DC5)
f236d6
+	(delete @-1)
f236d6
+	0x0DD6)
f236d6
+       (1
f236d6
+	0x0DD1)))
f236d6
+     (1
f236d6
+      0x0DD1)))     
f236d6
+
f236d6
+   ("D"
f236d6
+    (set c @-1)
f236d6
+    (cond
f236d6
+     ((= c 0x0D8D)
f236d6
+      (delete @-1)
f236d6
+      0x0D8E)
f236d6
+     ((= c 0x0DD8)
f236d6
+      (delete @-1)
f236d6
+      0x0DF2)
f236d6
+     (1
f236d6
+      0x0DD8)))
f236d6
+
f236d6
+   ("A"
f236d6
+    (set c @-1)
f236d6
+    (cond
f236d6
+     ((= c 0x0D8B)
f236d6
+      (delete @-1)
f236d6
+      0x0D8C)
f236d6
+     ((= c 0x0D8F)
f236d6
+      (delete @-1)
f236d6
+      0x0D90)
f236d6
+     ((= c 0x0D94)
f236d6
+      (delete @-1)
f236d6
+      0x0D96)
f236d6
+     ((= c 0x0DD9)
f236d6
+      (delete @-1)
f236d6
+      0x0DDE)
f236d6
+     (1
f236d6
+      0x0DDF)))
f236d6
+
f236d6
+   ("f"
f236d6
+    (set c @+0)
f236d6
+    (cond
f236d6
+     ((& (>= c 0x0D9A) (<= c 0x0DC6))
f236d6
+      (delete @+1)
f236d6
+      (insert c)
f236d6
+      (forward)
f236d6
+      (set c @+0)
f236d6
+      (cond
f236d6
+       ((= c 0x0DCA)
f236d6
+	(delete @+1)
f236d6
+	0x0DDA)
f236d6
+       ((= c 0x0DD9)
f236d6
+	(delete @+1)
f236d6
+	0x0DDB)
f236d6
+       ((= c 0x0DCF)
f236d6
+	(delete @+1)
f236d6
+	0x0DDC)
f236d6
+       ((= c 0x0DDF)
f236d6
+	(delete @+1)
f236d6
+	0x0DDE)
f236d6
+       (1
f236d6
+	0x0DD9)))
f236d6
+     ((= c 0x0D91)
f236d6
+      (delete @+1)
f236d6
+      0x0D93)
f236d6
+     ((= c 0x0DD9)
f236d6
+      (delete @+1)
f236d6
+      0x0DDB)
f236d6
+     ((& (= c 0x200C) (= @+1 0x0DD9))
f236d6
+      (delete @+2)
f236d6
+      0x200C 0x0DDB)
f236d6
+     ((& (= @-1 0x0DD9)
f236d6
+	 (| (< @-2 0x0D9A) (> @-2 0x0DC6)))
f236d6
+      (delete @-1)
f236d6
+      0x0DDB)
f236d6
+     ((& (>= @-1 0x0D9A) (<= @-1 0x0DC6))
f236d6
+      0x200C 0x0DD9)
f236d6
+     (1
f236d6
+      0x0DD9)))
f236d6
    
f236d6
-  ;; sanyaka letters
f236d6
-  ((A-z)
f236d6
-   (set c @-1)
f236d6
-   (cond
f236d6
-    ((= c 0x0DAF)
f236d6
-     (delete @-1)
f236d6
-     0x0DB3)
f236d6
-    ((= c 0x0D9C)
f236d6
-     (delete @-1)
f236d6
-     0x0D9F)
f236d6
-    ((= c 0x0DA9)
f236d6
-     (delete @-1)
f236d6
-     0x0DAC)
f236d6
-    ((= c 0x0DA2)
f236d6
-     (delete @-1)
f236d6
-     0x0DA6)))
f236d6
-
f236d6
-  ;; yansaya
f236d6
-  ("H"
f236d6
-   (set c @-1)
f236d6
-   (cond
f236d6
-    ((= c 0x0DD9)
f236d6
-     (delete @-1))
f236d6
-    ((= c 0x0DDB)
f236d6
-     (delete @-1))
f236d6
-    (1
f236d6
-     (set c 0)))
f236d6
-   (cond
f236d6
-    ((& (>= @-1 0x0D9A) (<= @-1 0x0DC6))
f236d6
-     0x0DCA 0x200D 0x0DBA))
f236d6
-   (cond
f236d6
-    ((> c 0)
f236d6
-     (insert c))))
f236d6
-
f236d6
-  ;; rakaransaya
f236d6
-  ("`"
f236d6
-   (set c @-1)
f236d6
-   (cond
f236d6
-    ((| (= c 0x0DD9) (= c 0x0DDB) (= c 0x0DD2) (= c 0x0DD3))
f236d6
-     (delete @-1))
f236d6
-    (1
f236d6
-     (set c 0)))
f236d6
-   (cond
f236d6
-    ((& (>= @-1 0x0D9A) (<= @-1 0x0DC6))
f236d6
-     0x0DCA 0x200D 0x0DBB))
f236d6
-   (cond
f236d6
-    ((> c 0)
f236d6
-     (insert c))))
f236d6
-
f236d6
-  ;; repaya
f236d6
-  ("~"
f236d6
-   (set c @-1)
f236d6
-   (cond
f236d6
-    ((| (= c 0x0DD9) (= c 0x0DDB))
f236d6
-     (delete @-1))
f236d6
-    (1
f236d6
-     (set c 0)))
f236d6
-   (backward)
f236d6
-   (cond
f236d6
-    ((& (>= @-1 0x0D9A) (<= @-1 0x0DC6))
f236d6
-     (set c1 @-1)
f236d6
-     (delete @-1)
f236d6
-     (insert c1)
f236d6
-     (move @<)
f236d6
-     0x0DBB 0x0DCA 0x200D))
f236d6
-   (cond
f236d6
-    ((> c 0)
f236d6
-     (move @>)
f236d6
-     (insert c))))
f236d6
-
f236d6
-  ((BackSpace)
f236d6
-   (delete-preceding-zw)
f236d6
-   (set c @-1)
f236d6
-   (cond
f236d6
-    ((< c 0)
f236d6
-     (unhandle)))
f236d6
-   (delete @-1)
f236d6
-   (cond
f236d6
-    ((= c 0x0D86)
f236d6
-     0x0D85)
f236d6
-    ((= c 0x0D87)
f236d6
-     0x0D85)
f236d6
-    ((= c 0x0D88)
f236d6
-     0x0D85)
f236d6
-    ((= c 0x0D8C)
f236d6
-     0x0D8B)
f236d6
-    ((= c 0x0D8E)
f236d6
-     0x0D8D)
f236d6
-    ((= c 0x0D90)
f236d6
-     0x0D8F)
f236d6
-    ((= c 0x0D92)
f236d6
-     0x0D8F)
f236d6
-    ((= c 0x0D93)
f236d6
-     (cond ((& (>= @-1 0x0D9A) (<= @-1 0x0DC6)) 0x200C))
f236d6
-     0x0DD9)
f236d6
-    ((= c 0x0D95)
f236d6
-     0x0D94)
f236d6
-    ((= c 0x0D96)
f236d6
-     0x0D94)
f236d6
-
f236d6
-    ((& (>= c 0x0D9A) (<= c 0x0DC6) (= @-2 0x0DCA) (= @-1 0x200D))
f236d6
-     (cond
f236d6
-      ((= @-3 0x0DBB)
f236d6
-       (delete @-3)
f236d6
-       (insert c))
f236d6
-      (1
f236d6
-       (delete @-2))))
f236d6
-
f236d6
-    ((= c 0x0DD9)
f236d6
-     (cond
f236d6
-      ((| (< @-1 0x0D9A) (> @-1 0x0DC6)))
f236d6
-      ((= @+0 0x0D91)
f236d6
-       (delete @-1)
f236d6
-       (delete @+1)
f236d6
-       0x0D93)
f236d6
-      ((& (>= @+0 0x0D9A) (<= @+0 0x0DC6))
f236d6
-       (set c1 @+0)
f236d6
-       (cond
f236d6
-	((= @+1 0x0DD9)
f236d6
-	 (merge-kombuva)
f236d6
-	 0x0DDB)
f236d6
-	((= @+1 0x0DCA)
f236d6
-	 (merge-kombuva)
f236d6
-	 0x0DDA)
f236d6
-	((= @+1 0x0DCF)
f236d6
-	 (merge-kombuva)
f236d6
-	 0x0DDC)
f236d6
-	((= @+1 0x0DDF)
f236d6
-	 (merge-kombuva)
f236d6
-	 0x0DDE)
f236d6
-	(1
f236d6
-	 (delete @-1)
f236d6
-	 (delete @+1)
f236d6
-	 (insert c1)
f236d6
-	 0x0DD9)))
f236d6
-      ((& (>= @-2 0x0D9A) (<= @-2 0x0DC6))
f236d6
-       (delete @-1)
f236d6
-       0x200C
f236d6
-       0x0DD9)
f236d6
-      ((& (= @-4 0x0DBB) (= @-3 0x0DCA) (= @-2 0x200D))
f236d6
-       (set c1 @-1)
f236d6
-       (delete @-4)
f236d6
-       (insert c1)
f236d6
-       0x0DD9)
f236d6
-      ((& (>= @-4 0x0D9A) (<= @-4 0x0DC6) (= @-3 0x0DCA) (= @-2 0x200D))
f236d6
-       (delete @-3)
f236d6
-       0x0DD9)
f236d6
-      (1
f236d6
-       (delete @-1)
f236d6
-       0x0DD9)))
f236d6
-
f236d6
-    ((= c 0x0DDA)
f236d6
-     0x0DD9)
f236d6
-
f236d6
-    ((= c 0x0DDB)
f236d6
-     (cond
f236d6
-      ((| (< @-1 0x0D9A) (> @-1 0x0DC6))
f236d6
-       0x0DD9)
f236d6
-      ((& (>= @-2 0x0D9A) (<= @-2 0x0DC6))
f236d6
-       (delete @-1)
f236d6
-       0x200C
f236d6
-       0x0DDB)
f236d6
-      ((& (= @-4 0x0DBB) (= @-3 0x0DCA) (= @-2 0x200D))
f236d6
-       (set c1 @-1)
f236d6
-       (delete @-4)
f236d6
-       (insert c1)
f236d6
-       0x0DDB)
f236d6
-      ((& (>= @-4 0x0D9A) (<= @-4 0x0DC6) (= @-3 0x0DCA) (= @-2 0x200D))
f236d6
-       (delete @-3)
f236d6
-       0x0DDB)
f236d6
-      (1
f236d6
-       (delete @-1)
f236d6
-       0x0DDB)))
f236d6
-
f236d6
-    ((= c 0x0DDC)
f236d6
-     0x0DD9)
f236d6
-    ((= c 0x0DDD)
f236d6
-     0x0DDC)
f236d6
-    ((= c 0x0DDE)
f236d6
-     0x0DD9)
f236d6
-    ((= c 0x0DF2)
f236d6
-     0x0DD8))
f236d6
-
f236d6
-   (cond
f236d6
-    ((& (>= @-1 0x0D9A)
f236d6
-	(<= @-1 0x0DC6)
f236d6
-	(| (= @+0 0x0DD9) (= @+0 0x0DDB)))
f236d6
-     0x200C)))
f236d6
-
f236d6
-  ((Delete)
f236d6
-   (delete-following-zw)
f236d6
-   (set c @+0)
f236d6
-   (cond
f236d6
-    ((< c 0)
f236d6
-     (unhandle)))
f236d6
-   (delete @+1)
f236d6
-   (cond
f236d6
-    ((= c 0x0D86)
f236d6
-     0x0DCF)
f236d6
-    ((= c 0x0D87)
f236d6
-     0x0DD0)
f236d6
-    ((= c 0x0D88)
f236d6
-     0x0DD1)
f236d6
-    ((= c 0x0D8C)
f236d6
-     0x0DDF)
f236d6
-    ((= c 0x0D8E)
f236d6
-     0x0DD8)
f236d6
-    ((= c 0x0D90)
f236d6
-     0x0DDF)
f236d6
-    ((= c 0x0D92)
f236d6
-     0x0DCA)
f236d6
-    ((= c 0x0D93)
f236d6
-     0x0D91)
f236d6
-    ((& (>= c 0x0D9A) (<= c 0x0DC6))
f236d6
-     (forward)
f236d6
-     (cond
f236d6
-      ((= @+0 0x0DD9)
f236d6
-       (delete @+1)
f236d6
-       (move @<)
f236d6
-       (insert c))
f236d6
-      ((= @+0 0x0DDB)
f236d6
-       (delete @+1)
f236d6
-       0x0DD9
f236d6
-       (move @<)
f236d6
-       (insert c))
f236d6
-      ((= @+0 0x0DDA)
f236d6
-       (delete @+1)
f236d6
-       0x0DCA
f236d6
-       (move @<)
f236d6
-       (insert c))
f236d6
-      ((= @+0 0x0DDC)
f236d6
-       (delete @+1)
f236d6
-       0x0DCF
f236d6
-       (move @<)
f236d6
-       (insert c))
f236d6
-      ((= @+0 0x0DDE)
f236d6
-       (delete @+1)
f236d6
-       0x0DDF
f236d6
-       (move @<)
f236d6
-       (insert c))
f236d6
-      (1
f236d6
-       (delete @<))))
f236d6
-    ((= c 0x0DDB)
f236d6
-     0x0DD9))))
f236d6
-
f236d6
- (independent
f236d6
-  ("w" "අ")				; 0D85
f236d6
-  ("b" "ඉ")				; 0D89
f236d6
-  ("B" "ඊ")				; 0D8A
f236d6
-  ("W" "උ")				; 0D8B
f236d6
-  ("R" "ඍ")				; 0D8D
f236d6
-  ((A-,) "ඏ")				; 0D8F
f236d6
-  ("t" "එ")				; 0D91
f236d6
-  ("T" "ඔ")				; 0D94
f236d6
-  ("l" "ක")				; 0D9A
f236d6
-  ("L" "ඛ")				; 0D9B
f236d6
-  ("." "ග")				; 0D9C
f236d6
-  (">" "ඝ")				; 0D9D
f236d6
-  ("X" "ඞ")				; 0D9E
f236d6
-  ((A-.) "ඟ") ((0x2E A-z) "ඟ")		; 0D9F
f236d6
-  ("p" "ච")				; 0DA0
f236d6
-  ("P" "ඡ")				; 0DA1
f236d6
-  ("c" "ජ")				; 0DA2
f236d6
-  ("C" "ඣ")				; 0DA3
f236d6
-  ("\[" "ඤ")				; 0DA4
f236d6
-  ("{" "ඥ")				; 0DA5
f236d6
-  ((A-c) "ඦ") ((0x63 A-z) "ඦ")		; 0DA6
f236d6
-  ("g" "ට")				; 0DA7
f236d6
-  ("G" "ඨ")				; 0DA8
f236d6
-  ("v" "ඩ")				; 0DA9
f236d6
-  ("V" "ඪ")				; 0DAA
f236d6
-  ("K" "ණ")				; 0DAB
f236d6
-  ((A-v) "ඬ") ((0x76 A-z) "ඬ")		; 0DAC
f236d6
-  (";" "ත")				; 0DAD
f236d6
-  (":" "ථ")				; 0DAE
f236d6
-  ("o" "ද")				; 0DAF
f236d6
-  ("O" "ධ")				; 0DB0
f236d6
-  ("k" "න")				; 0DB1
f236d6
-  ((A-o) "ඳ") ((0x6F A-z) "ඳ")		; 0DB3
f236d6
-  ("m" "ප")				; 0DB4
f236d6
-  ("M" "ඵ")				; 0DB5
f236d6
-  ("n" "බ")				; 0DB6
f236d6
-  ("N" "භ")				; 0DB7
f236d6
-  ("u" "ම")				; 0DB8
f236d6
-  ("U" "ඹ")				; 0DB9
f236d6
-  ("h" "ය")				; 0DBA
f236d6
-  ("r" "ර")				; 0DBB
f236d6
-  ("," "ල")				; 0DBD
f236d6
-  ("j" "ව")				; 0DC0
f236d6
-  ("Y" "ශ")				; 0DC1
f236d6
-  ("I" "ෂ")				; 0DC2
f236d6
-  ("i" "ස")				; 0DC3
f236d6
-  ("y" "හ")				; 0DC4
f236d6
-  ("<" "ළ")				; 0DC5
f236d6
-  ("F" "ෆ")				; 0DC6
f236d6
-  ((A-\') "෴")				; 0DF4
f236d6
-
f236d6
-  ("J" "ළු")				; muurdhaja lu (0DC5 0DD4)
f236d6
-
f236d6
-  ((S-\ ) " ")				; NBSP (00A0)
f236d6
-  ((A-\ ) "‌")				; ZWNJ (200C)
f236d6
-
f236d6
-  ("\]" ";")
f236d6
-  ("}" ":")
f236d6
-  ("'" ".")
f236d6
-  ("\"" ",")
f236d6
-  ("z" "'")
f236d6
-  ("Z" "\"")
f236d6
-  )
f236d6
-
f236d6
- (dependent
f236d6
-  ("x" "ං")				; 0D82
f236d6
-  ((A-x) "ඃ")				; 0D83
f236d6
-  ("a"
f236d6
-   (cond
f236d6
-    ((= @-1 0x0D91) (delete @-) "ඒ")	; 0D92
f236d6
-    ((= @-1 0x0D94) (delete @-) "ඕ")	; 0D95
f236d6
-    ((= @-1 0x0DD9) (delete @-) "ේ")	; 0DDA
f236d6
-    ((= @-1 0x0DDC) (delete @-) "ෝ")	; 0DDD
f236d6
-    (1 "්")))				; 0DCA
f236d6
-  ("d"
f236d6
-   (cond
f236d6
-    ((= @-1 0x0D85) (delete @-) "ආ")	; 0D86
f236d6
-    ((= @-1 0x0DD9) (delete @-) "ො")	; 0DDC
f236d6
-    (1 "ා")))				; 0DCF
f236d6
-  ("e"
f236d6
-   (cond
f236d6
-    ((= @-1 0x0D85) (delete @-) "ඇ")	; 0D87
f236d6
-    (1 "ැ")))				; 0DD0
f236d6
-  ("E"
f236d6
-   (cond
f236d6
-    ((= @-1 0x0D85) (delete @-) "ඈ")	; 0D88
f236d6
-    ((& (= @-2 0x0DC5) (= @-1 0x0DD4))
f236d6
-     (delete @-) "ූ")			; 0DD6
f236d6
-    (1 "ෑ")))				; 0DD1
f236d6
-  ("s" "ි")				; 0DD2
f236d6
-  ("S" "ී")				; 0DD3
f236d6
-  ("q" "ු")				; 0DD4
f236d6
-  ("Q" "ූ")				; 0DD6
f236d6
-
f236d6
-  ("D"
f236d6
-   (cond
f236d6
-    ((= @-1 0x0D8D) (delete @-) "ඎ")	; 0D8E
f236d6
-;; The following line does not work when no consonant proceeds.
f236d6
-;;    ((= @-1 0x0DD8) (delete @-) "ෲ")	; 0DF2
f236d6
-    (1 "ෘ")))				; 0DD8
f236d6
-;; This one works with or without a preceeding consonant.
f236d6
-  ("DD" "ෲ") 				; 0DF2
f236d6
-
f236d6
-  ("A"
f236d6
-   (cond
f236d6
-    ((= @-1 0x0D8B) (delete @-) "ඌ")	; 0D8C
f236d6
-    ((= @-1 0x0D8F) (delete @-) "ඐ")	; 0D90
f236d6
-    ((= @-1 0x0D94) (delete @-) "ඖ")	; 0D96
f236d6
-    ((= @-1 0x0DD9) (delete @-) "ෞ")	; 0DDE
f236d6
-    (1 "ෟ")))				; 0DDF
f236d6
-  ((A-a) "ෳ")				; 0DF3
f236d6
+   ;; sanyaka letters
f236d6
+   ((A-z)
f236d6
+    (set c @-1)
f236d6
+    (cond
f236d6
+     ((= c 0x0DAF)
f236d6
+      (delete @-1)
f236d6
+      0x0DB3)
f236d6
+     ((= c 0x0D9C)
f236d6
+      (delete @-1)
f236d6
+      0x0D9F)
f236d6
+     ((= c 0x0DA9)
f236d6
+      (delete @-1)
f236d6
+      0x0DAC)
f236d6
+     ((= c 0x0DA2)
f236d6
+      (delete @-1)
f236d6
+      0x0DA6)))
f236d6
+   
f236d6
+   ;; sanyaka letters
f236d6
+   ((G-z)
f236d6
+    (set c @-1)
f236d6
+    (cond
f236d6
+     ((= c 0x0DAF)
f236d6
+      (delete @-1)
f236d6
+      0x0DB3)
f236d6
+     ((= c 0x0D9C)
f236d6
+      (delete @-1)
f236d6
+      0x0D9F)
f236d6
+     ((= c 0x0DA9)
f236d6
+      (delete @-1)
f236d6
+      0x0DAC)
f236d6
+     ((= c 0x0DA2)
f236d6
+      (delete @-1)
f236d6
+      0x0DA6)))
f236d6
+
f236d6
+   ;; yansaya
f236d6
+   ("H"
f236d6
+    (set c @-1)
f236d6
+    (cond
f236d6
+     ((= c 0x0DD9)
f236d6
+      (delete @-1))
f236d6
+     ((= c 0x0DDB)
f236d6
+      (delete @-1))
f236d6
+     (1
f236d6
+      (set c 0)))
f236d6
+    (cond
f236d6
+     ((& (>= @-1 0x0D9A) (<= @-1 0x0DC6))
f236d6
+      0x0DCA 0x200D 0x0DBA))
f236d6
+    (cond
f236d6
+     ((> c 0)
f236d6
+      (insert c))))
f236d6
+
f236d6
+   ;; rakaransaya
f236d6
+   ("`"
f236d6
+    (set c @-1)
f236d6
+    (cond
f236d6
+     ((| (= c 0x0DD9) (= c 0x0DDB) (= c 0x0DD2) (= c 0x0DD3))
f236d6
+      (delete @-1))
f236d6
+     (1
f236d6
+      (set c 0)))
f236d6
+    (cond
f236d6
+     ((& (>= @-1 0x0D9A) (<= @-1 0x0DC6))
f236d6
+      0x0DCA 0x200D 0x0DBB))
f236d6
+    (cond
f236d6
+     ((> c 0)
f236d6
+      (insert c))))
f236d6
+
f236d6
+   ;; repaya
f236d6
+   ("~"
f236d6
+    (set c @-1)
f236d6
+    (cond
f236d6
+     ((| (= c 0x0DD9) (= c 0x0DDB))
f236d6
+      (delete @-1))
f236d6
+     (1
f236d6
+      (set c 0)))
f236d6
+    (backward)
f236d6
+    (cond
f236d6
+     ((& (>= @-1 0x0D9A) (<= @-1 0x0DC6))
f236d6
+      (set c1 @-1)
f236d6
+      (delete @-1)
f236d6
+      (insert c1)
f236d6
+      (move @<)
f236d6
+      0x0DBB 0x0DCA 0x200D))
f236d6
+    (cond
f236d6
+     ((> c 0)
f236d6
+      (move @>)
f236d6
+      (insert c))))
f236d6
+
f236d6
+   ((BackSpace)
f236d6
+    (delete-preceding-zw)
f236d6
+    (set c @-1)
f236d6
+    (cond
f236d6
+     ((< c 0)
f236d6
+      (unhandle)))
f236d6
+    (delete @-1)
f236d6
+    (cond
f236d6
+     ((= c 0x0D86)
f236d6
+      0x0D85)
f236d6
+     ((= c 0x0D87)
f236d6
+      0x0D85)
f236d6
+     ((= c 0x0D88)
f236d6
+      0x0D85)
f236d6
+     ((= c 0x0D8C)
f236d6
+      0x0D8B)
f236d6
+     ((= c 0x0D8E)
f236d6
+      0x0D8D)
f236d6
+     ((= c 0x0D90)
f236d6
+      0x0D8F)
f236d6
+     ((= c 0x0D92)
f236d6
+      0x0D8F)
f236d6
+     ((= c 0x0D93)
f236d6
+      (cond ((& (>= @-1 0x0D9A) (<= @-1 0x0DC6)) 0x200C))
f236d6
+      0x0DD9)
f236d6
+     ((= c 0x0D95)
f236d6
+      0x0D94)
f236d6
+     ((= c 0x0D96)
f236d6
+      0x0D94)
f236d6
+
f236d6
+     ((& (>= c 0x0D9A) (<= c 0x0DC6) (= @-2 0x0DCA) (= @-1 0x200D))
f236d6
+      (cond
f236d6
+       ((= @-3 0x0DBB)
f236d6
+	(delete @-3)
f236d6
+	(insert c))
f236d6
+       (1
f236d6
+	(delete @-2))))
f236d6
+
f236d6
+     ((= c 0x0DD9)
f236d6
+      (cond
f236d6
+       ((| (< @-1 0x0D9A) (> @-1 0x0DC6)))
f236d6
+       ((= @+0 0x0D91)
f236d6
+	(delete @-1)
f236d6
+	(delete @+1)
f236d6
+	0x0D93)
f236d6
+       ((& (>= @+0 0x0D9A) (<= @+0 0x0DC6))
f236d6
+	(set c1 @+0)
f236d6
+	(cond
f236d6
+	 ((= @+1 0x0DD9)
f236d6
+	  (merge-kombuva)
f236d6
+	  0x0DDB)
f236d6
+	 ((= @+1 0x0DCA)
f236d6
+	  (merge-kombuva)
f236d6
+	  0x0DDA)
f236d6
+	 ((= @+1 0x0DCF)
f236d6
+	  (merge-kombuva)
f236d6
+	  0x0DDC)
f236d6
+	 ((= @+1 0x0DDF)
f236d6
+	  (merge-kombuva)
f236d6
+	  0x0DDE)
f236d6
+	 (1
f236d6
+	  (delete @-1)
f236d6
+	  (delete @+1)
f236d6
+	  (insert c1)
f236d6
+	  0x0DD9)))
f236d6
+       ((& (>= @-2 0x0D9A) (<= @-2 0x0DC6))
f236d6
+	(delete @-1)
f236d6
+	0x200C
f236d6
+	0x0DD9)
f236d6
+       ((& (= @-4 0x0DBB) (= @-3 0x0DCA) (= @-2 0x200D))
f236d6
+	(set c1 @-1)
f236d6
+	(delete @-4)
f236d6
+	(insert c1)
f236d6
+	0x0DD9)
f236d6
+       ((& (>= @-4 0x0D9A) (<= @-4 0x0DC6) (= @-3 0x0DCA) (= @-2 0x200D))
f236d6
+	(delete @-3)
f236d6
+	0x0DD9)
f236d6
+       (1
f236d6
+	(delete @-1)
f236d6
+	0x0DD9)))
f236d6
+
f236d6
+     ((= c 0x0DDA)
f236d6
+      0x0DD9)
f236d6
+
f236d6
+     ((= c 0x0DDB)
f236d6
+      (cond
f236d6
+       ((| (< @-1 0x0D9A) (> @-1 0x0DC6))
f236d6
+	0x0DD9)
f236d6
+       ((& (>= @-2 0x0D9A) (<= @-2 0x0DC6))
f236d6
+	(delete @-1)
f236d6
+	0x200C
f236d6
+	0x0DDB)
f236d6
+       ((& (= @-4 0x0DBB) (= @-3 0x0DCA) (= @-2 0x200D))
f236d6
+	(set c1 @-1)
f236d6
+	(delete @-4)
f236d6
+	(insert c1)
f236d6
+	0x0DDB)
f236d6
+       ((& (>= @-4 0x0D9A) (<= @-4 0x0DC6) (= @-3 0x0DCA) (= @-2 0x200D))
f236d6
+	(delete @-3)
f236d6
+	0x0DDB)
f236d6
+       (1
f236d6
+	(delete @-1)
f236d6
+	0x0DDB)))
f236d6
+
f236d6
+     ((= c 0x0DDC)
f236d6
+      0x0DD9)
f236d6
+     ((= c 0x0DDD)
f236d6
+      0x0DDC)
f236d6
+     ((= c 0x0DDE)
f236d6
+      0x0DD9)
f236d6
+     ((= c 0x0DF2)
f236d6
+      0x0DD8))
f236d6
+
f236d6
+    (cond
f236d6
+     ((& (>= @-1 0x0D9A)
f236d6
+	 (<= @-1 0x0DC6)
f236d6
+	 (| (= @+0 0x0DD9) (= @+0 0x0DDB)))
f236d6
+      0x200C)))
f236d6
+
f236d6
+   ((Delete)
f236d6
+    (delete-following-zw)
f236d6
+    (set c @+0)
f236d6
+    (cond
f236d6
+     ((< c 0)
f236d6
+      (unhandle)))
f236d6
+    (delete @+1)
f236d6
+    (cond
f236d6
+     ((= c 0x0D86)
f236d6
+      0x0DCF)
f236d6
+     ((= c 0x0D87)
f236d6
+      0x0DD0)
f236d6
+     ((= c 0x0D88)
f236d6
+      0x0DD1)
f236d6
+     ((= c 0x0D8C)
f236d6
+      0x0DDF)
f236d6
+     ((= c 0x0D8E)
f236d6
+      0x0DD8)
f236d6
+     ((= c 0x0D90)
f236d6
+      0x0DDF)
f236d6
+     ((= c 0x0D92)
f236d6
+      0x0DCA)
f236d6
+     ((= c 0x0D93)
f236d6
+      0x0D91)
f236d6
+     ((& (>= c 0x0D9A) (<= c 0x0DC6))
f236d6
+      (forward)
f236d6
+      (cond
f236d6
+       ((= @+0 0x0DD9)
f236d6
+	(delete @+1)
f236d6
+	(move @<)
f236d6
+	(insert c))
f236d6
+       ((= @+0 0x0DDB)
f236d6
+	(delete @+1)
f236d6
+	0x0DD9
f236d6
+	(move @<)
f236d6
+	(insert c))
f236d6
+       ((= @+0 0x0DDA)
f236d6
+	(delete @+1)
f236d6
+	0x0DCA
f236d6
+	(move @<)
f236d6
+	(insert c))
f236d6
+       ((= @+0 0x0DDC)
f236d6
+	(delete @+1)
f236d6
+	0x0DCF
f236d6
+	(move @<)
f236d6
+	(insert c))
f236d6
+       ((= @+0 0x0DDE)
f236d6
+	(delete @+1)
f236d6
+	0x0DDF
f236d6
+	(move @<)
f236d6
+	(insert c))
f236d6
+       (1
f236d6
+	(delete @<))))
f236d6
+     ((= c 0x0DDB)
f236d6
+      0x0DD9))))
f236d6
 
f236d6
-  ("H"					; yansaya (0DCA 200D 0DBA)
f236d6
-   (cond
f236d6
-    ((| (= @-1 0x0DD9) (= @-1 0x0DDB))
f236d6
-     (move @-) "්‍ය" (move @>))
f236d6
-    (1
f236d6
-     "්‍ය")))
f236d6
+  (independent
f236d6
+   ("w" "අ")				; 0D85
f236d6
+   ("b" "ඉ")				; 0D89
f236d6
+   ("B" "ඊ")				; 0D8A
f236d6
+   ("W" "උ")				; 0D8B
f236d6
+   ("R" "ඍ")				; 0D8D
f236d6
+   ((A-,) "ඏ")				; 0D8F
f236d6
+   ((G-,) "ඏ")				; 0D8F
f236d6
+   ("t" "එ")				; 0D91
f236d6
+   ("T" "ඔ")				; 0D94
f236d6
+   ("l" "ක")				; 0D9A
f236d6
+   ("L" "ඛ")				; 0D9B
f236d6
+   ("." "ග")				; 0D9C
f236d6
+   (">" "ඝ")				; 0D9D
f236d6
+   ("X" "ඞ")				; 0D9E
f236d6
+   ((A-.) "ඟ") ((0x2E A-z) "ඟ")		; 0D9F
f236d6
+   ((G-.) "ඟ") ((0x2E G-z) "ඟ")		; 0D9F
f236d6
+   ("p" "ච")				; 0DA0
f236d6
+   ("P" "ඡ")				; 0DA1
f236d6
+   ("c" "ජ")				; 0DA2
f236d6
+   ("C" "ඣ")				; 0DA3
f236d6
+   ("\[" "ඤ")				; 0DA4
f236d6
+   ("{" "ඥ")				; 0DA5
f236d6
+   ((A-c) "ඦ") ((0x63 A-z) "ඦ")		; 0DA6
f236d6
+   ((G-c) "ඦ") ((0x63 G-z) "ඦ")		; 0DA6
f236d6
+   ("g" "ට")				; 0DA7
f236d6
+   ("G" "ඨ")				; 0DA8
f236d6
+   ("v" "ඩ")				; 0DA9
f236d6
+   ("V" "ඪ")				; 0DAA
f236d6
+   ("K" "ණ")				; 0DAB
f236d6
+   ((A-v) "ඬ") ((0x76 A-z) "ඬ")		; 0DAC
f236d6
+   ((G-v) "ඬ") ((0x76 G-z) "ඬ")		; 0DAC
f236d6
+   (";" "ත")				; 0DAD
f236d6
+   (":" "ථ")				; 0DAE
f236d6
+   ("o" "ද")				; 0DAF
f236d6
+   ("O" "ධ")				; 0DB0
f236d6
+   ("k" "න")				; 0DB1
f236d6
+   ((A-o) "ඳ") ((0x6F A-z) "ඳ")		; 0DB3
f236d6
+   ((G-o) "ඳ") ((0x6F G-z) "ඳ")		; 0DB3
f236d6
+   ("m" "ප")				; 0DB4
f236d6
+   ("M" "ඵ")				; 0DB5
f236d6
+   ("n" "බ")				; 0DB6
f236d6
+   ("N" "භ")				; 0DB7
f236d6
+   ("u" "ම")				; 0DB8
f236d6
+   ("U" "ඹ")				; 0DB9
f236d6
+   ("h" "ය")				; 0DBA
f236d6
+   ("r" "ර")				; 0DBB
f236d6
+   ("," "ල")				; 0DBD
f236d6
+   ("j" "ව")				; 0DC0
f236d6
+   ("Y" "ශ")				; 0DC1
f236d6
+   ("I" "ෂ")				; 0DC2
f236d6
+   ("i" "ස")				; 0DC3
f236d6
+   ("y" "හ")				; 0DC4
f236d6
+   ("<" "ළ")				; 0DC5
f236d6
+   ("F" "ෆ")				; 0DC6
f236d6
+   ((A-\') "෴")				; 0DF4
f236d6
+   ((G-\') "෴")				; 0DF4
f236d6
+
f236d6
+   ("J" "ළු")				; muurdhaja lu (0DC5 0DD4)
f236d6
+
f236d6
+   ((S-\ ) " ")				; NBSP (00A0)
f236d6
+   ((A-\ ) "‌")				; ZWNJ (200C)
f236d6
+   ((G-\ ) "‌")				; ZWNJ (200C)
f236d6
+
f236d6
+   ("\]" ";")
f236d6
+   ("}" ":")
f236d6
+   ("'" ".")
f236d6
+   ("\"" ",")
f236d6
+   ("z" "'")
f236d6
+   ("Z" "\"")
f236d6
+   )
f236d6
 
f236d6
-  ("`"					; rakaransaya (0DCA 200D 0DBB)
f236d6
-   (cond
f236d6
-    ((| (= @-1 0x0DD2) (= @-1 0x0DD3) (= @-1 0x0DD9) (= @-1 0x0DDB))
f236d6
-     (move @-) "්‍ර" (move @>))
f236d6
-    (1 "්‍ර")))
f236d6
+  (dependent
f236d6
+   ("x" "ං")				; 0D82
f236d6
+   ((A-x) "ඃ")				; 0D83
f236d6
+   ((G-x) "ඃ")				; 0D83
f236d6
+   ("a"
f236d6
+    (cond
f236d6
+     ((= @-1 0x0D91) (delete @-) "ඒ")	; 0D92
f236d6
+     ((= @-1 0x0D94) (delete @-) "ඕ")	; 0D95
f236d6
+     ((= @-1 0x0DD9) (delete @-) "ේ")	; 0DDA
f236d6
+     ((= @-1 0x0DDC) (delete @-) "ෝ")	; 0DDD
f236d6
+     (1 "්")))				; 0DCA
f236d6
+   ("d"
f236d6
+    (cond
f236d6
+     ((= @-1 0x0D85) (delete @-) "ආ")	; 0D86
f236d6
+     ((= @-1 0x0DD9) (delete @-) "ො")	; 0DDC
f236d6
+     (1 "ා")))				; 0DCF
f236d6
+   ("e"
f236d6
+    (cond
f236d6
+     ((= @-1 0x0D85) (delete @-) "ඇ")	; 0D87
f236d6
+     (1 "ැ")))				; 0DD0
f236d6
+   ("E"
f236d6
+    (cond
f236d6
+     ((= @-1 0x0D85) (delete @-) "ඈ")	; 0D88
f236d6
+     ((& (= @-2 0x0DC5) (= @-1 0x0DD4))
f236d6
+      (delete @-) "ූ")			; 0DD6
f236d6
+     (1 "ෑ")))				; 0DD1
f236d6
+   ("s" "ි")				; 0DD2
f236d6
+   ("S" "ී")				; 0DD3
f236d6
+   ("q" "ු")				; 0DD4
f236d6
+   ("Q" "ූ")				; 0DD6
f236d6
+
f236d6
+   ("D"
f236d6
+    (cond
f236d6
+     ((= @-1 0x0D8D) (delete @-) "ඎ")	; 0D8E
f236d6
+     ;; The following line does not work when no consonant proceeds.
f236d6
+     ;;    ((= @-1 0x0DD8) (delete @-) "ෲ")	; 0DF2
f236d6
+     (1 "ෘ")))				; 0DD8
f236d6
+   ;; This one works with or without a preceeding consonant.
f236d6
+   ("DD" "ෲ") 				; 0DF2
f236d6
+
f236d6
+   ("A"
f236d6
+    (cond
f236d6
+     ((= @-1 0x0D8B) (delete @-) "ඌ")	; 0D8C
f236d6
+     ((= @-1 0x0D8F) (delete @-) "ඐ")	; 0D90
f236d6
+     ((= @-1 0x0D94) (delete @-) "ඖ")	; 0D96
f236d6
+     ((= @-1 0x0DD9) (delete @-) "ෞ")	; 0DDE
f236d6
+     (1 "ෟ")))				; 0DDF
f236d6
+   ((A-a) "ෳ")				; 0DF3
f236d6
+   ((G-a) "ෳ")				; 0DF3
f236d6
+
f236d6
+   ("H"					; yansaya (0DCA 200D 0DBA)
f236d6
+    (cond
f236d6
+     ((| (= @-1 0x0DD9) (= @-1 0x0DDB))
f236d6
+      (move @-) "්‍ය" (move @>))
f236d6
+     (1
f236d6
+      "්‍ය")))
f236d6
+
f236d6
+   ("`"					; rakaransaya (0DCA 200D 0DBB)
f236d6
+    (cond
f236d6
+     ((| (= @-1 0x0DD2) (= @-1 0x0DD3) (= @-1 0x0DD9) (= @-1 0x0DDB))
f236d6
+      (move @-) "්‍ර" (move @>))
f236d6
+     (1 "්‍ර")))
f236d6
 
f236d6
-  ("~"					; repaya (0DBB 0DCA 200D)
f236d6
-   (move @<)
f236d6
-   "ර්‍"
f236d6
-   (move @>))
f236d6
-  )
f236d6
+   ("~"					; repaya (0DBB 0DCA 200D)
f236d6
+    (move @<)
f236d6
+    "ර්‍"
f236d6
+    (move @>))
f236d6
+   )
f236d6
 
f236d6
- (kombuva
f236d6
-  ("f" "ෙ"))				; 0DD9
f236d6
+  (kombuva
f236d6
+   ("f" "ෙ"))				; 0DD9
f236d6
 
f236d6
- (join
f236d6
-  ("\\"))
f236d6
+  (join
f236d6
+   ("\\"))
f236d6
 
f236d6
- (backspace
f236d6
-  ((BackSpace))))
f236d6
+  (backspace
f236d6
+   ((BackSpace))))
f236d6
 
f236d6
 (state
f236d6
  (init