Merge three map-lists into one.
[m17n/m17n-contrib.git] / im / si-phonetic-dynamic.mim
1 ;; si-phonetic-dynamic.mim -- Sinhala phonetic dynamic keymap
2 ;; m17n Keymap file for Sinhala (Sri Lanka) (2007-07-08)
3 ;; Maintainer: Harshula Jayasuriya <harshula@gmail.com>
4 ;; Last Updated: 2007-11-06
5 ;; This is a phonetic dynamic mapping for a standard US-English keyboard
6 ;; (qwerty)
7 ;; http://www.nongnu.org/sinhala/doc/keymaps/sinhala-keyboard_4.html
8
9
10 (input-method si phonetic-dynamic)
11
12 (description "Sinhala phonetic dynamic input method:
13   <http://www.nongnu.org/sinhala/doc/keymaps/sinhala-keyboard_4.html>"
14 )
15
16 (title "සි (Phonetic Dynamic)")
17
18 (map
19  (consonants
20   ("k" "ක")           ; 0x0d9a - alpapraana kayanna (ka)
21   ("K" "ඛ")           ; 0x0d9b - mahaapraana kayanna (kha)
22   ("g" "ග")           ; 0x0d9c - alpapraana gayanna (ga)
23   ("G" "ඝ")           ; 0x0d9d - mahaapraana gayanna (gha)
24   ((A-N) "ඞ")         ; 0x0d9e - kantaja naasikyaya (nga)
25   ((A-g) "ඟ")         ; 0x0d9f - sanyaka gayanna (nnga)
26   ("c" "ච")           ; 0x0da0 - alpapraana cayanna (ca)
27   ("C" "ඡ")           ; 0x0da1 - mahaapraana cayanna (cha)
28   ("j" "ජ")           ; 0x0da2 - alpapraana jayanna (ja)
29   ("J" "ඣ")           ; 0x0da3 - mahaapraana jayanna (jha)
30   ("z" "ඤ")           ; 0x0da4 - taaluja naasikyaya (nya)
31   ("Z" "ඥ")           ; 0x0da5 - taaluja sanyooga naasikyaya (jnya)
32   ((A-j) "ඦ")         ; 0x0da6 - sanyaka jayanna (nyja)
33   ((A-t) "ට")         ; 0x0da7 - alpapraana ttayanna (tta)
34   ((A-T) "ඨ")         ; 0x0da8 - mahaapraana ttayanna (ttha)
35   ((A-d) "ඩ")         ; 0x0da9 - alpapraana ddayanna (dda)
36   ((A-D) "ඪ")         ; 0x0daa - mahaapraana ddayanna (ddha)
37   ("N" "ණ")           ; 0x0dab - muurdhaja nayanna (nna)
38   ("X" "ඬ")           ; 0x0dac - sanyaka ddayanna (nndda)
39   ("t" "ත")           ; 0x0dad - alpapraana tayanna (ta)
40   ("T" "ථ")           ; 0x0dae - mahaapraana tayanna (tha)
41   ("d" "ද")           ; 0x0daf - alpapraana dayanna (da)
42   ("D" "ධ")           ; 0x0db0 - mahaapraana dayanna (dha)
43   ("n" "න")           ; 0x0db1 - dantaja nayanna (na)
44   ("x" "ඳ")           ; 0x0db3 - sanyaka dayanna (nda)
45   ("p" "ප")           ; 0x0db4 - alpapraana payanna (pa)
46   ("P" "ඵ")           ; 0x0db5 - mahaapraana payanna (pha)
47   ("b" "බ")           ; 0x0db6 - alpapraana bayanna (ba)
48   ("B" "භ")           ; 0x0db7 - mahaapraana bayanna (bha)
49   ("m" "ම")           ; 0x0db8 - mayanna (ma)
50   ("M" "ඹ")           ; 0x0db9 - amba bayanna (mba)
51   ("y" "ය")           ; 0x0dba - yayanna (ya)
52   ("r" "ර")           ; 0x0dbb - rayanna (ra)
53   ("l" "ල")           ; 0x0dbd - dantaja layanna (la)
54   ("v" "ව")           ; 0x0dc0 - vayanna (va)
55   ("S" "ශ")           ; 0x0dc1 - taaluja sayanna (sha)
56   ((A-s) "ෂ")         ; 0x0dc2 - muurdhaja sayanna (ssa)
57   ("s" "ස")           ; 0x0dc3 - dantaja sayanna (sa)
58   ("h" "හ")           ; 0x0dc4 - hayanna (ha)
59   ("L" "ළ")           ; 0x0dc5 - muurdhaja layanna (lla)
60   ("f" "ෆ")           ; 0x0dc6 - fayanna (fa)
61  )
62
63  (vowels
64   ("a" (set c 0x0D85) (insert-vowel))   ; 0x0d85 - ayanna (a)
65   ("A" (set c 0x0D86) (insert-vowel))   ; 0x0d86 - aayanna (aa)
66   ("w" (set c 0x0D87) (insert-vowel))   ; 0x0d87 - aeyanna (ae)
67   ("W" (set c 0x0D88) (insert-vowel))   ; 0x0d88 - aeeyanna (aee)
68   ("i" (set c 0x0D89) (insert-vowel))   ; 0x0d89 - iyanna (i)
69   ("I" (set c 0x0D8A) (insert-vowel))   ; 0x0d8a - iiyanna (ii)
70   ("u" (set c 0x0D8B) (insert-vowel))   ; 0x0d8b - uyanna (u)
71   ("U" (set c 0x0D8C) (insert-vowel))   ; 0x0d8c - uuyanna (uu)
72   ("q" (set c 0x0D8D) (insert-vowel))   ; 0x0d8d - iruyanna (iru)
73   ("Q" (set c 0x0D8E) (insert-vowel))   ; 0x0d8e - iruuyanna (iruu)
74   ((A-l) (set c 0x0D8F) (insert-vowel)) ; 0x0d8f - iluyanna (ilu)
75   ((A-L) (set c 0x0D90) (insert-vowel)) ; 0x0d90 - iluuyanna (iluu)
76   ("e" (set c 0x0D91) (insert-vowel))   ; 0x0d91 - eyanna (e)
77   ("E" (set c 0x0D92) (insert-vowel))   ; 0x0d92 - eeyanna (ee)
78   ((A-e) (set c 0x0D93) (insert-vowel)) ; 0x0d93 - aiyanna (ai)
79   ("o" (set c 0x0D94) (insert-vowel))   ; 0x0d94 - oyanna (o)
80   ("O" (set c 0x0D95) (insert-vowel))   ; 0x0d95 - ooyanna (oo)
81   ((A-o) (set c 0x0D96) (insert-vowel)) ; 0x0d96 - auyanna (au)
82  )
83
84  (remainder
85   ((A-n) "ං")         ; 0x0d82 - anusvaraya (anusvara)
86   ("H" "ඃ")           ; 0x0d83 - visargaya (visarga)
87   ((A-.) "෴")         ; 0x0df4 - kunddaliya (punctuation)
88   ("R" "්‍ර")             ;  0x0dca,0x200d,0x0dbb - rakaaranshaya
89   ("Y" "්‍ය")             ;  0x0dca,0x200d,0x0dba - yansaya
90   ((A-r) "ර්‍")           ;  0x0dbb,0x0dca,0x200d - repaya
91
92   ((A-,) "්‍")              ; 0x0dca,0x200d - join - conjunct letters cons 0DCA ZWJ cons
93   ((A-/) "‍්")              ; 0x200d,0x0dca - touch - cons ZWJ 0DCA cons
94
95   ;; Shift-space and Alt-space
96   ((S-\ ) " ")         ; 0x00a0 - no-break space
97   ((A-\ ) "‌")                ; 0x200c - ZWNJ
98
99   ((BackSpace)
100    (cond
101     ;; rakaaranshaya and yansaya
102     ((| (= @-1 0x0DBA) (= @-1 0x0DBB))
103      (delete @-1)
104      (delete-al-zwj)
105     )
106     ;; touch
107     ((& (= @-2 0x200D) (= @-1 0x0DCA))
108      (delete @-2)
109     )
110     ;; join
111     ((= @-1 0x200D)
112      (delete-al-zwj)
113     )
114     (1
115      (delete @-1)
116     )
117    )
118   )
119  )
120
121 )
122
123 (macro
124  (delete-al-zwj
125   (cond
126    ((& (= @-2 0x0DCA) (= @-1 0x200D))
127     (delete @-2)
128     ;; repaya
129     (cond
130      ((= @-1 0x0DBB)
131       (delete @-1)
132      )
133     )
134    )
135   )
136  )
137
138  (insert-vowel
139   (cond
140    ((& (>= @-1 0x0D9A) (<= @-1 0xDC6))
141     (cond
142      ((= c 0x0D85) "්")       ; 0x0dca - al-lakuna
143      ((= c 0x0D86) "ා")       ; 0x0dcf - aela-pilla (aa)
144      ((= c 0x0D87) "ැ")       ; 0x0dd0 - ketti aeda-pilla (ae)
145      ((= c 0x0D88) "ෑ")       ; 0x0dd1 - diga aeda-pilla (aae)
146      ((= c 0x0D89) "ි")       ; 0x0dd2 - ketti is-pilla (i)
147      ((= c 0x0D8A) "ී")       ; 0x0dd3 - diga is-pilla (ii)
148      ((= c 0x0D8B) "ු")       ; 0x0dd4 - ketti paa-pilla (u)
149      ((= c 0x0D8C) "ූ")       ; 0x0dd6 - diga paa-pilla (uu)
150      ((= c 0x0D8D) "ෘ")       ; 0x0dd8 - gaetta-pilla (r)
151      ((= c 0x0D8E) "ෲ")       ; 0x0df2 - diga gaetta-pilla (rr)
152      ((= c 0x0D8F) "ෟ")       ; 0x0ddf - gayanukitta (l)
153      ((= c 0x0D90) "ෳ")       ; 0x0df3 - diga gayanukitta (ll)
154      ((= c 0x0D91) "ෙ")       ; 0x0dd9 - kombuva (e)
155      ((= c 0x0D92) "ේ")       ; 0x0dda - diga kombuva (ee)
156      ((= c 0x0D93) "ෛ")       ; 0x0ddb - kombu deka (ai)
157      ((= c 0x0D94) "ො")       ; 0x0ddc - kombuva haa aela-pilla (o)
158      ((= c 0x0D95) "ෝ")       ; 0x0ddd - kombuva haa diga aela-pilla (oo)
159      ((= c 0x0D96) "ෞ")       ; 0x0dde - kombuva haa gayanukitta (au)
160     )
161    )
162    (1
163     (insert c)
164    )
165   )
166  )
167
168 )
169
170 (state
171  (init
172   (consonants)
173   (vowels)
174   (remainder)
175  )
176 )