/usr/share/scim/kmfl/myWin2.1.kmn is in kmfl-keyboards-mywin 2.1.1-3.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
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
|