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
;
41 WinKBLayoutRec winKBLayouts
[] =
43 { 0x405, -1, "pc105", "cz", NULL
, NULL
, "Czech"},
44 {0x10405, -1, "pc105", "cz_qwerty", NULL
, NULL
, "Czech (QWERTY)"},
45 { 0x406, -1, "pc105", "dk", NULL
, NULL
, "Danish"},
46 { 0x407, -1, "pc105", "de", NULL
, NULL
, "German (Germany)"},
47 {0x10407, -1, "pc105", "de", NULL
, NULL
, "German (Germany, IBM)"},
48 { 0x807, -1, "pc105", "de_CH", NULL
, NULL
, "German (Switzerland)"},
49 { 0x409, -1, "pc105", "us", NULL
, NULL
, "English (USA)"},
50 {0x10409, -1, "pc105", "dvorak", NULL
, NULL
, "English (USA, Dvorak)"},
51 {0x20409, -1, "pc105", "us_intl", NULL
, NULL
, "English (USA, International)"},
52 { 0x809, -1, "pc105", "gb", NULL
, NULL
, "English (United Kingdom)"},
53 { 0x1809, -1, "pc105", "ie", NULL
, NULL
, "Irish"},
54 { 0x40a, -1, "pc105", "es", NULL
, NULL
, "Spanish (Spain, Traditional Sort)"},
55 { 0x40b, -1, "pc105", "fi", NULL
, NULL
, "Finnish"},
56 { 0x40c, -1, "pc105", "fr", NULL
, NULL
, "French (Standard)"},
57 { 0x80c, -1, "pc105", "be", NULL
, NULL
, "French (Belgian)"},
58 { 0xc0c, -1, "pc105", "ca_enhanced", NULL
, NULL
, "French (Canada)"},
59 { 0x100c, -1, "pc105", "fr_CH", NULL
, NULL
, "French (Switzerland)"},
60 { 0x40e, -1, "pc105", "hu", NULL
, NULL
, "Hungarian"},
61 { 0x410, -1, "pc105", "it", NULL
, NULL
, "Italian"},
62 { 0x411, 7, "jp106", "jp", NULL
, NULL
, "Japanese"},
63 { 0x813, -1, "pc105", "be", NULL
, NULL
, "Dutch (Belgian)"},
64 { 0x414, -1, "pc105", "no", NULL
, NULL
, "Norwegian"},
65 { 0x416, -1, "pc105", "br", NULL
, NULL
, "Portuguese (Brazil, ABNT)"},
66 {0x10416, -1, "abnt2", "br", NULL
, NULL
, "Portuguese (Brazil, ABNT2)"},
67 { 0x816, -1, "pc105", "pt", NULL
, NULL
, "Portuguese (Portugal)"},
68 { 0x41d, -1, "pc105", "se", NULL
, NULL
, "Swedish (Sweden)"},
69 { -1, -1, NULL
, NULL
, NULL
, NULL
, NULL
}
72 /* Listing of language codes from MSDN */
74 Support ID XKB Language
75 ====================================================================
76 ? 0x0000 Language Neutral
77 ? 0x0400 Process or User Default Language
78 ? 0x0800 System Default Language
79 0x0401 Arabic (Saudi Arabia)
83 0x1401 Arabic (Algeria)
84 0x1801 Arabic (Morocco)
85 0x1c01 Arabic (Tunisia)
89 0x2c01 Arabic (Jordan)
90 0x3001 Arabic (Lebanon)
91 0x3401 Arabic (Kuwait)
92 0x3801 Arabic (U.A.E.)
93 0x3c01 Arabic (Bahrain)
98 0x0404 Chinese (Taiwan)
100 0x0c04 Chinese (Hong Kong SAR, PRC)
101 0x1004 Chinese (Singapore)
102 0x1404 Chinese (Macao SAR) (98/ME,2K/XP)
104 X cz_qwerty Czech (QWERTY)
107 X 0x0407 de German (Standard)
108 X 0x0807 de_CH German (Switzerland)
109 0x0c07 German (Austria)
110 0x1007 German (Luxembourg)
111 0x1407 German (Liechtenstein)
113 X 0x0409 us English (United States)
114 X 0x0809 gb English (United Kingdom)
115 0x0c09 English (Australian)
116 0x1009 English (Canadian)
117 0x1409 English (New Zealand)
118 X 0x1809 ie English (Ireland)
119 0x1c09 English (South Africa)
120 0x2009 English (Jamaica)
121 0x2409 English (Caribbean)
122 0x2809 English (Belize)
123 0x2c09 English (Trinidad)
124 0x3009 English (Zimbabwe) (98/ME,2K/XP)
125 0x3409 English (Philippines) (98/ME,2K/XP)
126 X 0x040a es Spanish (Spain, Traditional Sort)
127 0x080a Spanish (Mexican)
128 0x0c0a Spanish (Spain, Modern Sort)
129 0x100a Spanish (Guatemala)
130 0x140a Spanish (Costa Rica)
131 0x180a Spanish (Panama)
132 0x1c0a Spanish (Dominican Republic)
133 0x200a Spanish (Venezuela)
134 0x240a Spanish (Colombia)
135 0x280a Spanish (Peru)
136 0x2c0a Spanish (Argentina)
137 0x300a Spanish (Ecuador)
138 0x340a Spanish (Chile)
139 0x380a Spanish (Uruguay)
140 0x3c0a Spanish (Paraguay)
141 0x400a Spanish (Bolivia)
142 0x440a Spanish (El Salvador)
143 0x480a Spanish (Honduras)
144 0x4c0a Spanish (Nicaragua)
145 0x500a Spanish (Puerto Rico)
148 X 0x040c fr French (Standard)
149 X 0x080c be French (Belgian)
150 . 0x0c0c French (Canadian)
151 French (Canadian, Legacy)
152 Canadian (Multilingual)
153 X 0x100c fr_CH French (Switzerland)
154 0x140c French (Luxembourg)
155 0x180c French (Monaco) (98/ME,2K/XP)
157 X 0x040e hu Hungarian
159 X 0x0410 it Italian (Standard)
160 0x0810 Italian (Switzerland)
163 0x0812 Korean (Johab) (95,NT)
164 . 0x0413 Dutch (Netherlands)
165 X 0x0813 be Dutch (Belgium)
166 X 0x0414 no Norwegian (Bokmal)
167 0x0814 Norwegian (Nynorsk)
169 X 0x0416 br Portuguese (Brazil)
170 X 0x0816 pt Portuguese (Portugal)
174 . 0x081a Serbian (Latin)
175 . 0x0c1a Serbian (Cyrillic)
176 0x101a Croatian (Bosnia and Herzegovina)
177 0x141a Bosnian (Bosnia and Herzegovina)
178 0x181a Serbian (Latin, Bosnia, and Herzegovina)
179 0x1c1a Serbian (Cyrillic, Bosnia, and Herzegovina)
183 0x081d Swedish (Finland)
186 0x0420 Urdu (Pakistan) (98/ME,2K/XP)
195 0x0827 Lithuanian (Classic) (98)
197 0x042a Vietnamese (98/ME,NT,2K/XP)
198 0x042b Armenian. This is Unicode only. (2K/XP)
202 0x082c Azeri (Cyrillic)
204 0x042f Macedonian (FYROM)
206 0x0432 Setswana/Tswana (South Africa)
207 0x0434 isiXhosa/Xhosa (South Africa)
208 0x0435 isiZulu/Zulu (South Africa)
210 0x0437 Georgian. This is Unicode only. (2K/XP)
212 0x0439 Hindi. This is Unicode only. (2K/XP)
213 0x043a Maltese (Malta)
214 0x043b Sami, Northern (Norway)
215 0x083b Sami, Northern (Sweden)
216 0x0c3b Sami, Northern (Finland)
217 0x103b Sami, Lule (Norway)
218 0x143b Sami, Lule (Sweden)
219 0x183b Sami, Southern (Norway)
220 0x1c3b Sami, Southern (Sweden)
221 0x203b Sami, Skolt (Finland)
222 0x243b Sami, Inari (Finland)
223 0x043e Malay (Malaysian)
224 0x083e Malay (Brunei Darussalam)
226 0x0441 Swahili (Kenya)
228 0x0843 Uzbek (Cyrillic)
229 0x0444 Tatar (Tatarstan)
230 0x0445 Bengali (India)
232 0x0446 Punjabi. This is Unicode only. (XP)
233 0x0447 Gujarati. This is Unicode only. (XP)
234 0x0449 Tamil. This is Unicode only. (2K/XP)
235 0x044a Telugu. This is Unicode only. (XP)
236 0x044b Kannada. This is Unicode only. (XP)
237 0x044c Malayalam (India)
238 0x044e Marathi. This is Unicode only. (2K/XP)
239 0x044f Sanskrit. This is Unicode only. (2K/XP)
240 0x0450 Mongolian (XP)
241 0x0452 Welsh (United Kingdom)
244 0x0457 Konkani. This is Unicode only. (2K/XP)
245 0x045a Syriac. This is Unicode only. (XP)
246 0x0465 Divehi. This is Unicode only. (XP)
249 0x046b Quechua (Bolivia)
250 0x086b Quechua (Ecuador)
251 0x0c6b Quechua (Peru)
252 0x046c Sesotho sa Leboa/Northern Sotho (South Africa)
253 0x007f LOCALE_INVARIANT. See MAKELCID.
254 0x0481 Maori (New Zealand)