-;; Copyright (C) 2005
+;; si-wijesekera.mim -- Sinhala input method with wijesekera method
+;; Copyright (C) 2005, 2006
;; National Institute of Advanced Industrial Science and Technology (AIST)
;; Registration Number H15PRO112
(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>
+ <http://www.fonts.lk/doc/sin-kbd-layout4.pdf>
+This input method requires surrounding text support.
")
-(title "Wijesekera")
+(title "සි")
(map
(consonant
("f"
(set c @+1)
(cond
- ((& (> c 0x0D99) (< c 0x0DC7))
+ ((& (>= c 0x0D9A) (<= c 0x0DC6))
(delete @+1)
(insert c)
(forward)
(| (< @-2 0x0D9A) (> @-2 0x0DC6)))
(delete @-1)
0x0DDB)
- ((& (> @-1 0x0D99) (< @-1 0xDC7))
+ ((& (>= @-1 0x0D9A) (<= @-1 0x0DC6))
0x200C 0x0DD9)
(1
0x0DD9)))
(1
(set c 0)))
(cond
- ((& (> @-1 0x0D99) (< @-1 0x0DC6))
+ ((& (>= @-1 0x0D9A) (<= @-1 0x0DC6))
0x0DCA 0x200D 0x0DBA))
(cond
((> c 0)
(1
(set c 0)))
(cond
- ((& (> @-1 0x0D99) (< @-1 0x0DC7))
+ ((& (>= @-1 0x0D9A) (<= @-1 0x0DC6))
0x0DCA 0x200D 0x0DBB))
(cond
((> c 0)
;; (set c 0)))
;; (backward)
;; (cond
-;; ((& (> @-1 0x0D99) (< @-1 0x0DC7))
+;; ((& (>= @-1 0x0D9A) (<= @-1 0x0DC6))
;; (set c1 @-1)
;; (delete @-1)
;; (insert c1)
(set c @-1)
(cond
((< c 0)
- (unhandle))
+ (unhandle)))
(delete @-1)
(cond
((= c 0x0D86)
((= c 0x0D92)
0x0D8F)
((= c 0x0D93)
- (cond ((& (> @-1 0x0D99) (< @-1 0x0DC7)) 0x200C))
+ (cond ((& (>= @-1 0x0D9A) (<= @-1 0x0DC6)) 0x200C))
0x0DD9)
((= c 0x0D95)
0x0D94)
((= c 0x0D96)
0x0D94)
+ ((& (>= c 0x0D9A) (<= c 0x0DC6) (= @-2 0x0DCA) (= @-1 0x200D))
+ (delete @-2))
+
((= c 0x0DD9)
(cond
((| (< @-1 0x0D9A) (> @-1 0x0DC6)))
- ((& (> @-2 0x0D99) (< @-2 0x0DC7))
+ ((= @+1 0x0D91)
+ (delete @-1)
+ (delete @+1)
+ 0x0D93)
+ ((& (>= @+1 0x0D9A) (<= @+1 0x0DC6))
+ (set c1 @+1)
+ (cond
+ ((= @+2 0x0DD9)
+ (merge-kombuva)
+ 0x0DDB)
+ ((= @+2 0x0DCA)
+ (merge-kombuva)
+ 0x0DDA)
+ ((= @+2 0x0DCF)
+ (merge-kombuva)
+ 0x0DDC)
+ ((= @+2 0x0DDF)
+ (merge-kombuva)
+ 0x0DDE)
+ (1
+ (delete @-1)
+ (delete @+1)
+ (insert c1)
+ 0x0DD9)))
+ ((& (>= @-2 0x0D9A) (<= @-2 0x0DC6))
(delete @-1)
0x200C
0x0DD9)
- ((& (> @-4 0x0D99) (< @-1 0x0DC7) (= @-3 0x0DCA) (= @-2 0x200D))
+ ((& (>= @-4 0x0D9A) (<= @-4 0x0DC6) (= @-3 0x0DCA) (= @-2 0x200D))
(delete @-3)
0x0DD9)
(1
(cond
((| (< @-1 0x0D9A) (> @-1 0x0DC6))
0x0DD9)
- ((& (> @-2 0x0D99) (< @-2 0x0DC7))
+ ((& (>= @-2 0x0D9A) (<= @-2 0x0DC6))
(delete @-1)
0x200C
0x0DDB)
- ((& (> @-4 0x0D99) (< @-1 0x0DC7) (= @-3 0x0DCA) (= @-2 0x200D))
+ ((& (>= @-4 0x0D9A) (<= @-4 0x0DC6) (= @-3 0x0DCA) (= @-2 0x200D))
(delete @-3)
0x0DDB)
(1
((= c 0x0DDE)
0x0DD9)
((= c 0x0DF2)
- 0x0DD8)
- ((& (> c 0x0D99) (< c 0x0DC7) (= @-2 0x0DCA) (= @-1 0x200D))
- (delete @-2)))
+ 0x0DD8))
(cond
- ((& (> @-1 0x0D99)
- (< @-1 0x0DC7)
+ ((& (>= @-1 0x0D9A)
+ (<= @-1 0x0DC6)
(| (= @+1 0x0DD9) (= @+1 0x0DDB)))
0x200C)))
+ ((Delete)
+ (delete-following-zw)
+ (set c @+1)
+ (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
+ ((= @+1 0x0DD9)
+ (delete @+1)
+ (move @<)
+ (insert c))
+ ((= @+1 0x0DDB)
+ (delete @+1)
+ 0x0DD9
+ (move @<)
+ (insert c))
+ ((= @+1 0x0DDA)
+ (delete @+1)
+ 0x0DCA
+ (move @<)
+ (insert c))
+ ((= @+1 0x0DDC)
+ (delete @+1)
+ 0x0DCF
+ (move @<)
+ (insert c))
+ ((= @+1 0x0DDE)
+ (delete @+1)
+ 0x0DDF
+ (move @<)
+ (insert c))
+ (1
+ (delete @<))))
+ ((= c 0x0DDB)
+ 0x0DD9)))
+
("\\" (shift join))))
(macro
(forward (set x 0))
(backward (set x 0))
(delete-preceding-zw (set x 0))
+ (delete-following-zw (set x 0))
;; skip following (virama zwj consonant)* sequence
(forward
(set cc3 @+3)
(cond
- ((& (= @+1 0x0DCA) (= @+2 0x200D) (> cc3 0x0D99) (< cc3 0x0DC7))
+ ((& (= @+1 0x0DCA) (= @+2 0x200D) (>= cc3 0x0D9A) (<= cc3 0x0DC6))
(delete @+3)
0x0DCA 0x200D
(insert cc3)
(backward
(set cc1 @-1)
(cond
- ((& (= @-3 0x0DCA) (= @-2 0x200D) (> cc1 0x0D99) (< cc1 0x0DC7))
+ ((& (= @-3 0x0DCA) (= @-2 0x200D) (>= cc1 0x0D9A) (<= cc1 0x0DC6))
(delete @-3)
0x0DCA
0x200D
(cond
((| (= @-1 0x200C) (= @-1 0x200D))
(delete @-1)
- (delete-preceding-zw)))))
+ (delete-preceding-zw))))
+
+ (delete-following-zw
+ (cond
+ ((| (= @+1 0x200C) (= @+1 0x200D))
+ (delete @+1)
+ (delete-following-zw))))
+
+ (merge-kombuva
+ (delete @-1)
+ (delete @+2)
+ (insert c1)))
(state
(init
(cond
((| (= c 0x0DD9) (= c 0x0DDB))
(cond
- ((& (> @-2 0x0D99) (< @-2 0x0DC7))
+ ((& (>= @-2 0x0D9A) (<= @-2 0x0DC6))
(delete @-1)
(move @<)
0x0DCA 0x200D
(move @>)
(insert c))))
- ((& (> c 0x0D99) (< c 0x0DC7))
+ ((& (>= c 0x0D9A) (<= c 0x0DC6))
(move @<)
0x0DCA 0x200D))
(shift init))