New file.
authorntakahas <ntakahas>
Tue, 22 Nov 2005 13:10:30 +0000 (13:10 +0000)
committerntakahas <ntakahas>
Tue, 22 Nov 2005 13:10:30 +0000 (13:10 +0000)
si-wijesekera.mim [new file with mode: 0644]

diff --git a/si-wijesekera.mim b/si-wijesekera.mim
new file mode 100644 (file)
index 0000000..4eb75eb
--- /dev/null
@@ -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.
+  <http://http://www.fonts.lk/doc/sin-kbd-layout4.pdf>
+")
+
+(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: