winlayouts.h revision 6747b715
1/*
2 * Copyright (c) 2005 Alexander Gottwald
3 *
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:
10 *
11 * The above copyright notice and this permission notice shall be included in
12 * all copies or substantial portions of the Software.
13 *
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.
21 *
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.
25 */
26/* Definitions for various keyboard layouts from windows and their
27 * XKB settings.
28 */
29
30typedef struct
31{
32    unsigned int winlayout;
33    int winkbtype;
34    char *xkbmodel;
35    char *xkblayout;
36    char *xkbvariant;
37    char *xkboptions;
38    char *layoutname;
39} WinKBLayoutRec, *WinKBLayoutPtr;
40
41/*
42   This table is sorted by low byte of winlayout, then by next byte, etc.
43*/
44
45WinKBLayoutRec winKBLayouts[] =
46{
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}
86};
87
88/* Listing of language codes from MSDN */
89/*
90Support 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)
96        0x0801              Arabic (Iraq)
97        0x0c01              Arabic (Egypt)
98        0x1001              Arabic (Libya)
99        0x1401              Arabic (Algeria)
100        0x1801              Arabic (Morocco)
101        0x1c01              Arabic (Tunisia)
102        0x2001              Arabic (Oman)
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)
111                            Arabic (102) AZERTY
112        0x0402              Bulgarian
113        0x0403              Catalan
114        0x0404              Chinese (Taiwan)
115        0x0804              Chinese (PRC)
116        0x0c04              Chinese (Hong Kong SAR, PRC)
117        0x1004              Chinese (Singapore)
118        0x1404              Chinese (Macao SAR) (98/ME,2K/XP)
119   X    0x0405  cz          Czech
120   X            cz_qwerty   Czech (QWERTY)
121                            Czech (Programmers)
122   X    0x0406  dk          Danish
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)
128        0x0408              Greek
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)
162   X    0x040b  fi          Finnish
163                            Finnish (with Sami)
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)
172        0x040d              Hebrew
173   X    0x040e  hu          Hungarian
174   .    0x040f              Icelandic
175   X    0x0410  it          Italian (Standard)
176        0x0810              Italian (Switzerland)
177   X    0x0411  jp          Japanese
178        0x0412              Korean
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)
184   .    0x0415              Polish
185   X    0x0416  br          Portuguese (Brazil)
186   X    0x0816  pt          Portuguese (Portugal)
187   .    0x0418              Romanian
188        0x0419              Russian
189   .    0x041a              Croatian
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)
196   .    0x041b              Slovak
197   .    0x041c              Albanian
198   X    0x041d  se          Swedish
199        0x081d              Swedish (Finland)
200        0x041e              Thai
201        0x041f              Turkish
202        0x0420              Urdu (Pakistan) (98/ME,2K/XP)
203        0x0820              Urdu (India)
204        0x0421              Indonesian
205        0x0422              Ukrainian
206        0x0423              Belarusian
207   .    0x0424              Slovenian
208        0x0425              Estonian
209        0x0426              Latvian
210        0x0427              Lithuanian
211        0x0827              Lithuanian (Classic) (98)
212        0x0429              Farsi
213        0x042a              Vietnamese (98/ME,NT,2K/XP)
214        0x042b              Armenian. This is Unicode only. (2K/XP)
215                            Armenian Eastern
216                            Armenian Western
217        0x042c              Azeri (Latin)
218        0x082c              Azeri (Cyrillic)
219        0x042d              Basque
220        0x042f              Macedonian (FYROM)
221        0x0430              Sutu
222        0x0432              Setswana/Tswana (South Africa)
223        0x0434              isiXhosa/Xhosa (South Africa)
224        0x0435              isiZulu/Zulu (South Africa)
225        0x0436              Afrikaans
226        0x0437              Georgian. This is Unicode only. (2K/XP)
227   .    0x0438              Faeroese
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)
241        0x0440              Kyrgyz. (XP)
242        0x0441              Swahili (Kenya)
243        0x0443              Uzbek (Latin)
244        0x0843              Uzbek (Cyrillic)
245        0x0444              Tatar (Tatarstan)
246        0x0445              Bengali (India)
247                            Bengali (Inscript)
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)
258        0x0455              Burmese
259        0x0456              Galician (XP)
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)
263                            Divehi (Phonetic)
264                            Divehi (Typewriter)
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)
271*/
272
273
274