+++ /dev/null
-;; si-wijesekera-preedit.mim -- Sinhala input method with wijesekera method
-;; Copyright (C) 2006, 2007
-;; 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., 51 Franklin Street, Fifth Floor,
-;; Boston, MA 02110-1301, USA.
-
-(input-method si wijesekera-preedit)
-
-(description "Sinhala input method based on SLS 1134 Rev. 2:2004.
- <http://www.fonts.lk/doc/sin-kbd-layout4.pdf>
-This input method uses preedit rather than surrounding text.
-")
-
-(title "සි")
-
-(map
- (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
- "්ය")))
-
- ("`" ; 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
-
- (join
- ("\\"))
-
- (backspace
- ((BackSpace)))
- )
-
-(state
- (init-state
- (independent
- (shift independent-state))
- (kombuva
- (shift kombuva-state))
- (dependent))
-
- (independent-state
- (dependent)
- (join
- (cond
- ((| (= @-1 0x0DD9) (= @-1 0x0DDB))
- (shift join-state))
- ((| (< @-1 0x0D9A) (> @-1 0x0DC6))
- (undo -1))
- (1
- (shift join-state))))
- (backspace
- (undo)))
-
- (join-state
- (t
- (mark p))
- (independent
- (move p)
- (set c @-1)
- (cond
- ((| (= c 0x0DD9) (= c 0x0DDB))
- (delete @-)
- "්" ; 0DCA 200D
- (move @>)
- (insert c))
- (1
- "්" ; 0DCA 200D
- (move @>)))
- (shift independent-state))
- (backspace
- (undo)))
-
- (kombuva-state
- (t
- (mark p))
- (independent
- (cond
- ((& (= @0 0x0DD9) (= @1 0x0D91))
- (delete @<)
- "ඓ" ; 0D93
- (shift independent-state))
- ((& (= @0 0x0DD9) (< @2 0))
- (move @0)
- (delete @+)
- (move @>)
- "ෙ" ; 0DD9
- (shift independent-state))
- ((& (= @0 0x0DDB) (< @2 0))
- (move @0)
- (delete @+)
- (move @>)
- "ෛ" ; 0DDB
- (shift independent-state))
- (1
- (delete p)
- (pushback 1)
- (shift init-state))))
- (kombuva
- (mark p)
- (cond
- ((& (= @0 0x0DD9) (< @2 0))
- (delete @<)
- "ෛ") ; 0DDB
- (1
- (delete @-)
- (pushback 1)
- (shift init-state))))
- (dependent
- (mark p))
- (backspace
- (undo))))
-
-;; Local Variables:
-;; coding: utf-8
-;; mode: emacs-lisp
-;; End: