Add alt-gr mappings (G- ) to correspond to alt mappings (A- ).
authorntakahas <ntakahas>
Tue, 6 Dec 2011 04:16:49 +0000 (04:16 +0000)
committerntakahas <ntakahas>
Tue, 6 Dec 2011 04:16:49 +0000 (04:16 +0000)
MIM/si-wijesekera.mim

index 5465cdc..a0a8dc7 100644 (file)
@@ -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 @@ If 1, try to use surrounding text.  Otherwise, use preedit.")
   ("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)))
-
- (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)))
+  (",") ("<") (".") (">")
+  ((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)))
 
-  ("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
-
-  ("H"                                 ; yansaya (0DCA 200D 0DBA)
-   (cond
-    ((| (= @-1 0x0DD9) (= @-1 0x0DDB))
-     (move @-) "්‍ය" (move @>))
-    (1
-     "්‍ය")))
+   ;; 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))))
 
-  ("`"                                 ; rakaransaya (0DCA 200D 0DBB)
-   (cond
-    ((| (= @-1 0x0DD2) (= @-1 0x0DD3) (= @-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" "\"")
+   )
 
-  ("~"                                 ; repaya (0DBB 0DCA 200D)
-   (move @<)
-   "ර්‍"
-   (move @>))
-  )
+  (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 @>))
+   )
 
- (kombuva
-  ("f" "ෙ"))                         ; 0DD9
+  (kombuva
+   ("f" "ෙ"))                                ; 0DD9
 
- (join
-  ("\\"))
+  (join
+   ("\\"))
 
- (backspace
-  ((BackSpace))))
+  (backspace
+   ((BackSpace))))
 
 (state
  (init