2 * Copyright (c) 2005 Alexander Gottwald
4 * Permission is hereby granted, free of charge, to any person obtaining a
5 * copy of this software and associated documentation files (the "Software"),
6 * to deal in the Software without restriction, including without limitation
7 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
8 * and/or sell copies of the Software, and to permit persons to whom the
9 * Software is furnished to do so, subject to the following conditions:
11 * The above copyright notice and this permission notice shall be included in
12 * all copies or substantial portions of the Software.
14 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
17 * THE ABOVE LISTED COPYRIGHT HOLDER(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
18 * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
19 * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
20 * DEALINGS IN THE SOFTWARE.
22 * Except as contained in this notice, the name(s) of the above copyright
23 * holders shall not be used in advertising or otherwise to promote the sale,
24 * use or other dealings in this Software without prior written authorization.
26 /* Definitions for various keyboard layouts from windows and their
32 unsigned int winlayout;
39 } WinKBLayoutRec, *WinKBLayoutPtr;
42 This table is sorted by low byte of winlayout, then by next byte, etc.
45 WinKBLayoutRec winKBLayouts[] =
47 { 0x404, -1, "pc105", "zh_TW", NULL, NULL, "Chinese (Taiwan)"},
48 { 0x405, -1, "pc105", "cz", NULL, NULL, "Czech"},
49 {0x10405, -1, "pc105", "cz_qwerty", NULL, NULL, "Czech (QWERTY)"},
50 { 0x406, -1, "pc105", "dk", NULL, NULL, "Danish"},
51 { 0x407, -1, "pc105", "de", NULL, NULL, "German (Germany)"},
52 {0x10407, -1, "pc105", "de", NULL, NULL, "German (Germany, IBM)"},
53 { 0x807, -1, "pc105", "ch", "de", NULL, "German (Switzerland)"},
54 { 0x409, -1, "pc105", "us", NULL, NULL, "English (USA)"},
55 {0x10409, -1, "pc105", "dvorak", NULL, NULL, "English (USA, Dvorak)"},
56 {0x20409, -1, "pc105", "us_intl", NULL, NULL, "English (USA, International)"},
57 { 0x809, -1, "pc105", "gb", NULL, NULL, "English (United Kingdom)"},
58 { 0x1809, -1, "pc105", "ie", NULL, NULL, "Irish"},
59 { 0x40a, -1, "pc105", "es", NULL, NULL, "Spanish (Spain, Traditional Sort)"},
60 { 0x80a, -1, "pc105", "latam", NULL, NULL, "Latin American"},
61 { 0x40b, -1, "pc105", "fi", NULL, NULL, "Finnish"},
62 { 0x40c, -1, "pc105", "fr", NULL, NULL, "French (Standard)"},
63 { 0x80c, -1, "pc105", "be", NULL, NULL, "French (Belgian)"},
64 { 0xc0c, -1, "pc105", "ca", "fr", NULL, "French (Canada)"},
65 { 0x100c, -1, "pc105", "ch", "fr", NULL, "French (Switzerland)"},
66 { 0x40d, -1, "pc105", "il", NULL, NULL, "Hebrew"},
67 { 0x40e, -1, "pc105", "hu", NULL, NULL, "Hungarian"},
68 { 0x40f, -1, "pc105", "is", NULL, NULL, "Icelandic"},
69 { 0x410, -1, "pc105", "it", NULL, NULL, "Italian"},
70 {0x10410, -1, "pc105", "it", NULL, NULL, "Italian (142)"},
71 {0xa0000410,-1, "macbook79","it", "mac",NULL, "Italiano (Apple)"},
72 { 0x411, 7, "jp106", "jp", NULL, NULL, "Japanese"},
73 { 0x413, -1, "pc105", "nl", NULL, NULL, "Dutch"},
74 { 0x813, -1, "pc105", "be", NULL, NULL, "Dutch (Belgian)"},
75 { 0x414, -1, "pc105", "no", NULL, NULL, "Norwegian"},
76 { 0x415, -1, "pc105", "pl", NULL, NULL, "Polish (Programmers)"},
77 { 0x416, -1, "pc105", "br", NULL, NULL, "Portuguese (Brazil, ABNT)"},
78 {0x10416, -1, "abnt2", "br", NULL, NULL, "Portuguese (Brazil, ABNT2)"},
79 { 0x816, -1, "pc105", "pt", NULL, NULL, "Portuguese (Portugal)"},
80 { 0x41a, -1, "pc105", "hr", NULL, NULL, "Croatian"},
81 { 0x41d, -1, "pc105", "se", NULL, NULL, "Swedish (Sweden)"},
82 { 0x424, -1, "pc105", "si", NULL, NULL, "Slovenian"},
83 { 0x425, -1, "pc105", "ee", NULL, NULL, "Estonian"},
84 { 0x452, -1, "pc105", "gb", "intl", NULL, "United Kingdom (Extended)"},
85 { -1, -1, NULL, NULL, NULL, NULL, NULL}
88 /* Listing of language codes from MSDN */
90 Support ID XKB Language
91 ====================================================================
92 ? 0x0000 Language Neutral
93 ? 0x0400 Process or User Default Language
94 ? 0x0800 System Default Language
95 0x0401 Arabic (Saudi Arabia)
99 0x1401 Arabic (Algeria)
100 0x1801 Arabic (Morocco)
101 0x1c01 Arabic (Tunisia)
103 0x2401 Arabic (Yemen)
104 0x2801 Arabic (Syria)
105 0x2c01 Arabic (Jordan)
106 0x3001 Arabic (Lebanon)
107 0x3401 Arabic (Kuwait)
108 0x3801 Arabic (U.A.E.)
109 0x3c01 Arabic (Bahrain)
110 0x4001 Arabic (Qatar)
114 0x0404 Chinese (Taiwan)
116 0x0c04 Chinese (Hong Kong SAR, PRC)
117 0x1004 Chinese (Singapore)
118 0x1404 Chinese (Macao SAR) (98/ME,2K/XP)
120 X cz_qwerty Czech (QWERTY)
123 X 0x0407 de German (Standard)
124 X 0x0807 de_CH German (Switzerland)
125 0x0c07 German (Austria)
126 0x1007 German (Luxembourg)
127 0x1407 German (Liechtenstein)
129 X 0x0409 us English (United States)
130 X 0x0809 gb English (United Kingdom)
131 0x0c09 English (Australian)
132 0x1009 English (Canadian)
133 0x1409 English (New Zealand)
134 X 0x1809 ie English (Ireland)
135 0x1c09 English (South Africa)
136 0x2009 English (Jamaica)
137 0x2409 English (Caribbean)
138 0x2809 English (Belize)
139 0x2c09 English (Trinidad)
140 0x3009 English (Zimbabwe) (98/ME,2K/XP)
141 0x3409 English (Philippines) (98/ME,2K/XP)
142 X 0x040a es Spanish (Spain, Traditional Sort)
143 0x080a Spanish (Mexican)
144 0x0c0a Spanish (Spain, Modern Sort)
145 0x100a Spanish (Guatemala)
146 0x140a Spanish (Costa Rica)
147 0x180a Spanish (Panama)
148 0x1c0a Spanish (Dominican Republic)
149 0x200a Spanish (Venezuela)
150 0x240a Spanish (Colombia)
151 0x280a Spanish (Peru)
152 0x2c0a Spanish (Argentina)
153 0x300a Spanish (Ecuador)
154 0x340a Spanish (Chile)
155 0x380a Spanish (Uruguay)
156 0x3c0a Spanish (Paraguay)
157 0x400a Spanish (Bolivia)
158 0x440a Spanish (El Salvador)
159 0x480a Spanish (Honduras)
160 0x4c0a Spanish (Nicaragua)
161 0x500a Spanish (Puerto Rico)
164 X 0x040c fr French (Standard)
165 X 0x080c be French (Belgian)
166 . 0x0c0c French (Canadian)
167 French (Canadian, Legacy)
168 Canadian (Multilingual)
169 X 0x100c fr_CH French (Switzerland)
170 0x140c French (Luxembourg)
171 0x180c French (Monaco) (98/ME,2K/XP)
173 X 0x040e hu Hungarian
175 X 0x0410 it Italian (Standard)
176 0x0810 Italian (Switzerland)
179 0x0812 Korean (Johab) (95,NT)
180 . 0x0413 Dutch (Netherlands)
181 X 0x0813 be Dutch (Belgium)
182 X 0x0414 no Norwegian (Bokmal)
183 0x0814 Norwegian (Nynorsk)
185 X 0x0416 br Portuguese (Brazil)
186 X 0x0816 pt Portuguese (Portugal)
190 . 0x081a Serbian (Latin)
191 . 0x0c1a Serbian (Cyrillic)
192 0x101a Croatian (Bosnia and Herzegovina)
193 0x141a Bosnian (Bosnia and Herzegovina)
194 0x181a Serbian (Latin, Bosnia, and Herzegovina)
195 0x1c1a Serbian (Cyrillic, Bosnia, and Herzegovina)
199 0x081d Swedish (Finland)
202 0x0420 Urdu (Pakistan) (98/ME,2K/XP)
211 0x0827 Lithuanian (Classic) (98)
213 0x042a Vietnamese (98/ME,NT,2K/XP)
214 0x042b Armenian. This is Unicode only. (2K/XP)
218 0x082c Azeri (Cyrillic)
220 0x042f Macedonian (FYROM)
222 0x0432 Setswana/Tswana (South Africa)
223 0x0434 isiXhosa/Xhosa (South Africa)
224 0x0435 isiZulu/Zulu (South Africa)
226 0x0437 Georgian. This is Unicode only. (2K/XP)
228 0x0439 Hindi. This is Unicode only. (2K/XP)
229 0x043a Maltese (Malta)
230 0x043b Sami, Northern (Norway)
231 0x083b Sami, Northern (Sweden)
232 0x0c3b Sami, Northern (Finland)
233 0x103b Sami, Lule (Norway)
234 0x143b Sami, Lule (Sweden)
235 0x183b Sami, Southern (Norway)
236 0x1c3b Sami, Southern (Sweden)
237 0x203b Sami, Skolt (Finland)
238 0x243b Sami, Inari (Finland)
239 0x043e Malay (Malaysian)
240 0x083e Malay (Brunei Darussalam)
242 0x0441 Swahili (Kenya)
244 0x0843 Uzbek (Cyrillic)
245 0x0444 Tatar (Tatarstan)
246 0x0445 Bengali (India)
248 0x0446 Punjabi. This is Unicode only. (XP)
249 0x0447 Gujarati. This is Unicode only. (XP)
250 0x0449 Tamil. This is Unicode only. (2K/XP)
251 0x044a Telugu. This is Unicode only. (XP)
252 0x044b Kannada. This is Unicode only. (XP)
253 0x044c Malayalam (India)
254 0x044e Marathi. This is Unicode only. (2K/XP)
255 0x044f Sanskrit. This is Unicode only. (2K/XP)
256 0x0450 Mongolian (XP)
257 0x0452 Welsh (United Kingdom)
260 0x0457 Konkani. This is Unicode only. (2K/XP)
261 0x045a Syriac. This is Unicode only. (XP)
262 0x0465 Divehi. This is Unicode only. (XP)
265 0x046b Quechua (Bolivia)
266 0x086b Quechua (Ecuador)
267 0x0c6b Quechua (Peru)
268 0x046c Sesotho sa Leboa/Northern Sotho (South Africa)
269 0x007f LOCALE_INVARIANT. See MAKELCID.
270 0x0481 Maori (New Zealand)