File: myWin2.1.kmn

package info (click to toggle)
kmfl-keyboards-mywin 2.1.1-3
  • links: PTS, VCS
  • area: main
  • in suites: bullseye, buster, jessie, jessie-kfreebsd, sid, stretch
  • size: 100 kB
  • sloc: makefile: 2
file content (248 lines) | stat: -rw-r--r-- 10,693 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
c Burmese Keyboard for Unicode Encoding. 
c Derived from an original by MJP Hoskens (SIL)
c 
c This Layout has been designed to resemble that used by WinMyanmar Systems 
c in their non-Unicode fonts. However, it is much simplified because of the 
c advantages of Unicode technology. Some keys have changed as a result.
c 
c Copyright (C) 2004,2006 Keith Stribley, www.thanlwinsoft.org
c 			  Martin Hosken, SIL International
c Bugs/Comments: <mailto:devel@thanlwinsoft.org>
c Distributable under the terms of the GNU Lesser General Public License,
c either version 2.1 of the License, or (at your option) any later version.
c http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html
c 
c KRS   1.00    28-May-2004     Initial version
c KRS   1.01    31-May-2004     Added 25CC to consU   
c KRS   1.02    01-Jul-2004     Improved behaviour when deleting 1031
c                               Added option to type 1031 + stack key for Kinzi
c                               Shift+Space = ZNSP and ~ = WJ
c KRS   1.03    04-Sep-2004     Now uses U+200D with YRWH medials following U+1004
c MJPH  1.1     21-APR-2006     Convert to proposed new Unicode 5.1 model n3043
c KRS   2.1     22-Jul-2006     Correct handling of u102A when types as composite
c KRS	2.1.1	12-Dec-2007	Change references to Unicode 5.1
c                               Change filler to 200C, since 200B causes problems in OOo

NAME "my-Win2.1 Unicode 5.1"
VERSION 5.0   
c Comment out the line below to compile for SCIM
store(&Copyright) "© 2004-2006 SIL & ThanLwinSoft.org (License: LGPL)"
store( &Message ) "This keyboard implements the changes to the Myanmar block made in Unicode 5.1.0. "\
"<http://www.unicode.org/versions/Unicode5.1.0/>. "\
"This keyboard is freely redistributable under the terms of the GNU Lesser General Public License."


BITMAP myWin.bmp
HOTKEY  "^+W"

begin Unicode > use(Main)
c qwertyuiop[ is same as Win
c asdfghjkl; is same as Win
c zxcvbm is same as Win      
c currently _ is mapped to * but it is multiply in Win
c , is U101A in both Win and here. ',' is < here    
c in Win 'P' is U100F, here at 'E' - Win's E is not needed anymore
c W is now U101D - the symbol in Win at this position is not used
c and includes U101D anyway
c Duplicates/macros that aren't strictly necessary EKL:F$| 
c The medials are also can be created using stacking: GjsS
c Pali characters that might need a location: U1050-1059
c Some of the characters <.}]^ could be changed to make room
c Should U101B, U1002 be moved somewhere more accessible e.g. R,U rather than &,*?
store(baseK)    'qwertyui' \
                "op['zxc"  \
                'vbn,./' \
                'QWERTY' \
                'UIOP{A"' \
                'ZXCVBNM?' \
                '-=!@#%^&' \
                '*()_+' \
                '\]}<>`~'
                
store(baseU)    U+1006 U+1010 U+1014 U+1019 U+1021 U+1015 U+1000 U+1004 \
                U+101E U+1005 U+101F U+1012 U+1016 U+1011 U+1001 \
                U+101C U+1018 U+100A U+101A U+002E U+104B \
                U+1029 U+101D U+103F U+1023 U+1024 U+104C \
                U+1009 U+104D U+1025 U+100F U+1027 U+1017 U+1013 \
                U+1007 U+100C U+1003 U+1020 U+1026 U+1008 U+102A U+104A \
                U+002D U+003D U+100D U+100E U+100B U+0025 U+002F U+101B \
                U+1002 U+0028 U+0029 U+005F U+002B \
                U+104F U+2018 U+2019 U+002C U+104E U+25CC U+2060     
                
store(numK)     '1234567890' 
store(numU)     U+1041 U+1042 U+1043 U+1044 U+1045 U+1046 U+1047 U+1048 U+1049 \
                U+1040                
                
store(aftereK)  'mgh;'
store(aftereU)  U+102C U+102B U+1037 U+1038

c sub units of aftereK
store (aaK)     'mg'
store (aaU)     U+102C U+102B
store (lDotK)   'h'
store (lDotU)   U+1037
store (visargaK) ';'
store (visargaU) U+1038
                      
store(udiaK)    'dDJKL'
store(udiaU)    U+102D U+102E U+1032 U+102F U+1030
                  
store(ldiaK)    'kl'
store(ldiaU)    U+102F U+1030

store(aftereDK) 'f'
store(aftereDU) U+103A        

store(currencyK)    '$'       

c 25cc is added here to allow it to be used to show stand alone diacritics
store(consU)    U+1000 U+1001 U+1002 U+1003        U+1005 U+1006 U+1007 \
                U+1008 U+1009 U+100A U+100B U+100C U+100D U+100E U+100F \
                U+1010 U+1011 U+1012 U+1013 U+1014 U+1015 U+1016 U+1017 \
                U+1018 U+1019 U+101A U+101B U+101C U+101D U+101E U+101F \
                U+1020 U+1021 U+25CC


store(sdiaK)     'sjSG'
store(sdiaU)     U+103B U+103C U+103E U+103D  
store(diaU)      outs(sdiaU) outs(udiaU) outs(ldiaU) U+1031 U+1036    
    
c split up diacritics - user shouldn't need to know canonical order 
c Y/R should be first and can't come together               
store(yDiaU)    U+103B
store(rDiaU)    U+103C
store(wDiaU)    U+103D 
store(hDiaU)    U+103E

store(m1DiaK)   's'
store(m2DiaK)   'sj'
c store(m3DiaK)   'sj_'
store(m4DiaK)   'sjG'
store(m5DiaK)   'sjGS'
store(mDia)     U+103B U+103C U+103D U+103E

c this is a weired stacked combination of 100B,100C                      
store(ttatthaK) '|' 

c U+200B causes problems in OpenOffice
store(filler)   U+200C

c F is Kinzi - it should be possible to create a Kinzi   
store(kinziK)   'F'
store(kinziU)   U+1004    

store(vowelEK)  'a'
store(vowelEU)  U+1031  

c create some classes for diacritics that might have been 
c sensibly typed before the user types the medial
store(allDiaU)  U+1031 U+102F U+1030 U+102D U+1032 U+1036 U+1037
c only a subset can correctly occur together  
c (U+1031 U+1037) (U+102D U+102F) 
c (U+102F U+1036) (U+1032 U+1037) (U+102D U+1036)
store(firstDiaU) U+1031 U+102D U+102F U+1032 
store(secondDiaU) U+102F U+1036 U+1037    
c It is possible for U+102F U+102D U+1037 to occur,
c but in this case its fairly obvious to type the medials
c before the final U+1037    

store(stackK)   '`'
store(stackU)   U+1039


group(Main) using keys

c Deal with vowel E before consonant 
+ any(vowelEK) > outs(filler) outs(vowelEU)           
c stacker key
c U+101E U+101E + any(stackK) > U+103F
any(consU) + any(stackK) > outs(stackU) index(consU, 1)  
c rearrange vowel E to behind consonant in stacking situation
U+1031 U+101E U+101E + any(stackK) > U+103F U+1031
U+1031 any(consU) + any(stackK) > outs(stackU) index(consU, 2) U+1031

c modify space keys
 + [SHIFT K_SPACE] > U+200B      
 
c Convert sequences for composite vowels into single code point
U+101E U+103C U+1031 U+102c + any(aftereDK) > U+102A
U+101E + 'j' > U+1029
U+1025 + 'D' > U+1026          
c users usually type u-tha when they mean nya child tha
U+1025 + 'f' > U+1009 U+103A
 
 + any(numK) > index(numU, 1)     
 + any(baseK) > index(baseU, 1)                         
 + any(aftereK) > index(aftereU, 1)
any(filler) U+1031 + any(baseK) > index(baseU, 3) U+1031      
c any(filler) U+1031 + any(baseK) > U+1031 U+25CC index(baseU, 3) 

c these allow the user to type upper and lower diacritics in
c any order, but to still get the storage right
c any(udiaU) U+1037 + any(ldiaK) > index(ldiaU, 3) context
any(ldiaU) U+1037 + any(udiaK) > index(udiaU, 3) context
U+1037 + any(udiaK) > index(udiaU, 2) context
U+1037 + any(ldiaK) > index(ldiaU, 2) context

 + 'H' > U+1036
U+1036 + any(udiaK) > index(udiaU, 2) context
any(ldiaU) U+1036 + any(udiaK) > index(udiaU, 3) context
U+1036 + any(ldiaK) > index(ldiaU, 2) context
c it is unlikely that other combinations will occur with U1037 
c and aa so this rules are probably OK
U+1037 + any(aaK) > index(aaU, 2) context    
c allow tone marks to be typed in either order
U+1038 + any(lDotK) > index(lDotU, 2) context

c any(udiaU) + any(ldiaK) > index(ldiaU, 2) context
any(ldiaU) + any(udiaK) > index(udiaU, 2) context
 + any(ldiaK) > index(ldiaU, 1)
 + any(udiaK) > index(udiaU, 1)

 + any(ttatthaK) > U+100B U+1039 U+100C 
 + any(currencyK) > U+1000 U+103B U+1015 U+103A
 + ':' > U+102B U+103A
 
c now deal with the medials, need to arrange order appropriately
c most complicated is when all 3 medials are together but out of order 

any(rDiaU) any(lDiaU) any(wDiaU) any(hDiaU) any(firstDiaU) any(secondDiaU) + any(m1DiaK) > index(mDia, 7) context
any(rDiaU) any(lDiaU) any(wDiaU) any(hDiaU) any(firstDiaU) + any(m1DiaK) > index(mDia, 6) context
any(rDiaU) any(lDiaU) any(wDiaU) any(hDiaU) + any(m1DiaK) > index(mDia, 5) context
any(lDiaU) any(wDiaU) any(hDiaU) any(firstDiaU) any(secondDiaU) + any(m2DiaK) > index(mDia, 6) context
any(lDiaU) any(wDiaU) any(hDiaU) any(firstDiaU) + any(m2DiaK) > index(mDia, 5) context
any(lDiaU) any(wDiaU) any(hDiaU) + any(m2DiaK) > index(mDia, 4) context
any(wDiaU) any(hDiaU) any(firstDiaU) any(secondDiaU) + any(m2DiaK) > index(mDia, 5) context
any(wDiaU) any(hDiaU) any(firstDiaU) + any(m2DiaK) > index(mDia, 4) context
any(wDiaU) any(hDiaU) + any(m2DiaK) > index(mDia, 3) context
any(hDiaU) any(firstDiaU) any(secondDiaU) + any(m4DiaK) > index(mDia, 4) context
any(hDiaU) any(firstDiaU) + any(m4DiaK) > index(mDia, 3) context
any(hDiaU) + any(m4DiaK) > index(mDia, 2) context
any(firstDiaU) any(secondDiaU) + any(m5DiaK) > index(mDia, 3) context
any(firstDiaU) + any(m5DiaK) > index(mDia, 2) context
 + any(m5DiaK) > index(mDia, 1) context


any(firstDiaU) any(secondDiaU) + any(sdiaK) > index(sdiaU, 3) context
any(allDiaU) + any(sdiaK) > index(sdiaU, 2) context 

 + any(sdiaK) > index(sdiaU, 1) 
                          
 + any(aftereDK) > index(aftereDU, 1)

any(consU) + any(kinziK) > index(kinziU, 2) U+103A U+1039 context
any(numU) + any(kinziK) > index(kinziU, 2) U+103A U+1039 context
any(consU) U+1039 any(consU) + any(kinziK) > index(kinziU, 4) U+103A U+1039 context
any(consU) U+1039 any(consU) any(diaU) + any(kinziK) > index(kinziU, 5) U+103A U+1039 context
any(consU) U+1039 any(consU) any(diaU) any(diaU) + any(kinziK) > index(kinziU, 6) U+103A U+1039 context
any(consU) any(diaU) + any(kinziK) > index(kinziU, 3) U+103A U+1039 context
any(consU) any(diaU) any(diaU) + any(kinziK) > index(kinziU, 4) U+103A U+1039 context
any(consU) any(diaU) any(diaU) any(diaU) + any(kinziK) > index(kinziU, 5) U+103A U+1039 context
any(consU) any(diaU) any(diaU) any(diaU) any(diaU) + any(kinziK) > index(kinziU, 6) U+103A U+1039 context

any(filler) U+1031 + [K_BKSP] > nul
any(baseU) U+1031 + [K_BKSP] > outs(filler) U+1031

U+1004 U+103A U+1039 any(consU) U+1031 + [K_BKSP] > U+1004 U+103A U+1039 outs(filler) U+1031
U+1039 any(consU) U+1031 + [K_BKSP] > U+1031
U+1039 any(consU) + [K_BKSP] > nul