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 #include <sys/types.h>
57 #include <dev/wscons/wsksymdef.h>
58 #include <dev/wscons/wsksymvar.h>
59
60 #define KC(n) KS_KEYCODE(n)
61
62 static const keysym_t ukbd_keydesc_us[] = {
63
64
65
66
67 KC(4), KS_a,
68 KC(5), KS_b,
69 KC(6), KS_c,
70 KC(7), KS_d,
71 KC(8), KS_e,
72 KC(9), KS_f,
73 KC(10), KS_g,
74 KC(11), KS_h,
75 KC(12), KS_i,
76 KC(13), KS_j,
77 KC(14), KS_k,
78 KC(15), KS_l,
79 KC(16), KS_m,
80 KC(17), KS_n,
81 KC(18), KS_o,
82 KC(19), KS_p,
83 KC(20), KS_q,
84 KC(21), KS_r,
85 KC(22), KS_s,
86 KC(23), KS_t,
87 KC(24), KS_u,
88 KC(25), KS_v,
89 KC(26), KS_w,
90 KC(27), KS_x,
91 KC(28), KS_y,
92 KC(29), KS_z,
93 KC(30), KS_1, KS_exclam,
94 KC(31), KS_2, KS_at,
95 KC(32), KS_3, KS_numbersign,
96 KC(33), KS_4, KS_dollar,
97 KC(34), KS_5, KS_percent,
98 KC(35), KS_6, KS_asciicircum,
99 KC(36), KS_7, KS_ampersand,
100 KC(37), KS_8, KS_asterisk,
101 KC(38), KS_9, KS_parenleft,
102 KC(39), KS_0, KS_parenright,
103 KC(40), KS_Return,
104 KC(41), KS_Cmd_Debugger,KS_Escape,
105 KC(42), KS_Cmd_ResetEmul,KS_Delete,
106 KC(43), KS_Tab,
107 KC(44), KS_space,
108 KC(45), KS_minus, KS_underscore,
109 KC(46), KS_equal, KS_plus,
110 KC(47), KS_bracketleft, KS_braceleft,
111 KC(48), KS_bracketright,KS_braceright,
112 KC(49), KS_backslash, KS_bar,
113 KC(50), KS_backslash, KS_bar,
114 KC(51), KS_semicolon, KS_colon,
115 KC(52), KS_apostrophe, KS_quotedbl,
116 KC(53), KS_grave, KS_asciitilde,
117 KC(54), KS_comma, KS_less,
118 KC(55), KS_period, KS_greater,
119 KC(56), KS_slash, KS_question,
120 KC(57), KS_Caps_Lock,
121 KC(58), KS_Cmd_Screen0, KS_f1,
122 KC(59), KS_Cmd_Screen1, KS_f2,
123 KC(60), KS_Cmd_Screen2, KS_f3,
124 KC(61), KS_Cmd_Screen3, KS_f4,
125 KC(62), KS_Cmd_Screen4, KS_f5,
126 KC(63), KS_Cmd_Screen5, KS_f6,
127 KC(64), KS_Cmd_Screen6, KS_f7,
128 KC(65), KS_Cmd_Screen7, KS_f8,
129 KC(66), KS_Cmd_Screen8, KS_f9,
130 KC(67), KS_Cmd_Screen9, KS_f10,
131 KC(68), KS_Cmd_Screen10,KS_f11,
132 KC(69), KS_Cmd_Screen11,KS_f12,
133 KC(70), KS_Print_Screen,
134 KC(71), KS_Hold_Screen,
135 KC(72), KS_Pause,
136 KC(73), KS_Insert,
137 KC(74), KS_Home,
138 KC(75), KS_Cmd_ScrollBack,KS_Prior,
139 KC(76), KS_Cmd_ResetEmul,KS_Delete,
140 KC(77), KS_End,
141 KC(78), KS_Cmd_ScrollFwd,KS_Next,
142 KC(79), KS_Right,
143 KC(80), KS_Left,
144 KC(81), KS_Down,
145 KC(82), KS_Up,
146 KC(83), KS_Num_Lock,
147 KC(84), KS_KP_Divide,
148 KC(85), KS_KP_Multiply,
149 KC(86), KS_KP_Subtract,
150 KC(87), KS_KP_Add,
151 KC(88), KS_KP_Enter,
152 KC(89), KS_KP_End, KS_KP_1,
153 KC(90), KS_KP_Down, KS_KP_2,
154 KC(91), KS_KP_Next, KS_KP_3,
155 KC(92), KS_KP_Left, KS_KP_4,
156 KC(93), KS_KP_Begin, KS_KP_5,
157 KC(94), KS_KP_Right, KS_KP_6,
158 KC(95), KS_KP_Home, KS_KP_7,
159 KC(96), KS_KP_Up, KS_KP_8,
160 KC(97), KS_KP_Prior, KS_KP_9,
161 KC(98), KS_KP_Insert, KS_KP_0,
162 KC(99), KS_Cmd_KbdReset,KS_KP_Delete,
163 KC(101), KS_Menu,
164 KC(224), KS_Cmd1, KS_Control_L,
165 KC(225), KS_Shift_L,
166 KC(226), KS_Cmd2, KS_Alt_L,
167 KC(227), KS_Meta_L,
168 KC(228), KS_Cmd1, KS_Control_R,
169 KC(229), KS_Shift_R,
170 KC(230), KS_Cmd2, KS_Alt_R, KS_Multi_key,
171 KC(231), KS_Meta_R,
172 };
173
174 #if !defined(SMALL_KERNEL) || !defined(__alpha__)
175
176 static const keysym_t ukbd_keydesc_de[] = {
177
178 KC(16), KS_m, KS_M, KS_mu,
179 KC(20), KS_q, KS_Q, KS_at,
180 KC(28), KS_z,
181 KC(29), KS_y,
182 KC(31), KS_2, KS_quotedbl, KS_twosuperior,
183 KC(32), KS_3, KS_section, KS_threesuperior,
184 KC(35), KS_6, KS_ampersand,
185 KC(36), KS_7, KS_slash, KS_braceleft,
186 KC(37), KS_8, KS_parenleft, KS_bracketleft,
187 KC(38), KS_9, KS_parenright, KS_bracketright,
188 KC(39), KS_0, KS_equal, KS_braceright,
189 KC(45), KS_ssharp, KS_question, KS_backslash,
190 KC(46), KS_dead_acute, KS_dead_grave,
191 KC(47), KS_udiaeresis,
192 KC(48), KS_plus, KS_asterisk, KS_dead_tilde,
193 KC(49), KS_numbersign, KS_apostrophe,
194 KC(50), KS_numbersign, KS_apostrophe,
195 KC(51), KS_odiaeresis,
196 KC(52), KS_adiaeresis,
197 KC(53), KS_dead_circumflex,KS_dead_abovering,
198 KC(54), KS_comma, KS_semicolon,
199 KC(55), KS_period, KS_colon,
200 KC(56), KS_minus, KS_underscore,
201 KC(100), KS_less, KS_greater, KS_bar, KS_brokenbar,
202 KC(230), KS_Mode_switch, KS_Multi_key,
203 };
204
205 static const keysym_t ukbd_keydesc_de_nodead[] = {
206
207 KC(46), KS_apostrophe, KS_grave,
208 KC(48), KS_plus, KS_asterisk, KS_asciitilde,
209 KC(53), KS_asciicircum, KS_degree,
210 };
211
212 static const keysym_t ukbd_keydesc_dk[] = {
213
214 KC(31), KS_2, KS_quotedbl, KS_at,
215 KC(32), KS_3, KS_numbersign, KS_sterling,
216 KC(33), KS_4, KS_currency, KS_dollar,
217 KC(35), KS_6, KS_ampersand,
218 KC(36), KS_7, KS_slash, KS_braceleft,
219 KC(37), KS_8, KS_parenleft, KS_bracketleft,
220 KC(38), KS_9, KS_parenright, KS_bracketright,
221 KC(39), KS_0, KS_equal, KS_braceright,
222 KC(45), KS_plus, KS_question,
223 KC(46), KS_dead_acute, KS_dead_grave, KS_bar,
224 KC(47), KS_aring,
225 KC(48), KS_dead_diaeresis,KS_dead_circumflex,KS_dead_tilde,
226 KC(49), KS_apostrophe, KS_asterisk,
227 KC(50), KS_apostrophe, KS_asterisk,
228 KC(51), KS_ae,
229 KC(52), KS_oslash,
230 KC(53), KS_onehalf, KS_paragraph,
231 KC(54), KS_comma, KS_semicolon,
232 KC(55), KS_period, KS_colon,
233 KC(56), KS_minus, KS_underscore,
234 KC(100), KS_less, KS_greater, KS_backslash,
235 KC(230), KS_Mode_switch, KS_Multi_key,
236 };
237
238 static const keysym_t ukbd_keydesc_dk_nodead[] = {
239
240 KC(46), KS_apostrophe, KS_grave, KS_bar,
241 KC(48), KS_diaeresis, KS_asciicircum, KS_asciitilde,
242 };
243
244 static const keysym_t ukbd_keydesc_sv[] = {
245
246 KC(45), KS_plus, KS_question, KS_backslash,
247 KC(48), KS_dead_diaeresis,KS_dead_circumflex,KS_dead_tilde,
248 KC(51), KS_odiaeresis,
249 KC(52), KS_adiaeresis,
250 KC(53), KS_section, KS_onehalf,
251 KC(100), KS_less, KS_greater, KS_bar,
252 KC(230), KS_Mode_switch, KS_Multi_key,
253 };
254
255 static const keysym_t ukbd_keydesc_sv_nodead[] = {
256
257 KC(46), KS_apostrophe, KS_grave, KS_bar,
258 KC(48), KS_diaeresis, KS_asciicircum, KS_asciitilde,
259 };
260
261 static const keysym_t ukbd_keydesc_no[] = {
262
263 KC(46), KS_backslash, KS_dead_grave, KS_dead_acute,
264 KC(48), KS_dead_diaeresis,KS_dead_circumflex,KS_dead_tilde,
265 KC(51), KS_oslash,
266 KC(52), KS_ae,
267 KC(53), KS_bar, KS_paragraph,
268 KC(100), KS_less, KS_greater,
269 };
270
271 static const keysym_t ukbd_keydesc_no_nodead[] = {
272
273 KC(46), KS_backslash, KS_grave, KS_acute,
274 KC(48), KS_diaeresis, KS_asciicircum, KS_asciitilde,
275 };
276
277 static const keysym_t ukbd_keydesc_fr[] = {
278
279 KC(4), KS_q,
280 KC(16), KS_comma, KS_question,
281 KC(20), KS_a,
282 KC(26), KS_z,
283 KC(29), KS_w,
284 KC(30), KS_ampersand, KS_1,
285 KC(31), KS_eacute, KS_2, KS_asciitilde,
286 KC(32), KS_quotedbl, KS_3, KS_numbersign,
287 KC(33), KS_apostrophe, KS_4, KS_braceleft,
288 KC(34), KS_parenleft, KS_5, KS_bracketleft,
289 KC(35), KS_minus, KS_6, KS_bar,
290 KC(36), KS_egrave, KS_7, KS_grave,
291 KC(37), KS_underscore, KS_8, KS_backslash,
292 KC(38), KS_ccedilla, KS_9, KS_asciicircum,
293 KC(39), KS_agrave, KS_0, KS_at,
294 KC(45), KS_parenright, KS_degree, KS_bracketright,
295 KC(46), KS_equal, KS_plus, KS_braceright,
296 KC(47), KS_dead_circumflex,KS_dead_diaeresis,
297 KC(48), KS_dollar, KS_sterling, KS_currency,
298 KC(49), KS_asterisk, KS_mu,
299 KC(50), KS_asterisk, KS_mu,
300 KC(51), KS_m,
301 KC(52), KS_ugrave, KS_percent,
302 KC(53), KS_twosuperior,
303 KC(54), KS_semicolon, KS_period,
304 KC(55), KS_colon, KS_slash,
305 KC(56), KS_exclam, KS_section,
306 KC(100), KS_less, KS_greater,
307 KC(230), KS_Mode_switch, KS_Multi_key,
308 };
309
310 static const keysym_t ukbd_keydesc_fr_apple[] = {
311 KC(5), KS_b, KS_B, KS_ssharp,
312 KC(8), KS_e, KS_E, KS_ecircumflex, KS_Ecircumflex,
313 KC(11), KS_h, KS_H, KS_Igrave, KS_Icircumflex,
314 KC(12), KS_i, KS_I, KS_icircumflex, KS_idiaeresis,
315 KC(13), KS_j, KS_J, KS_Idiaeresis, KS_Iacute,
316 KC(14), KS_k, KS_K, KS_Egrave, KS_Ediaeresis,
317 KC(15), KS_l, KS_L, KS_voidSymbol, KS_bar,
318 KC(16), KS_comma, KS_question, KS_voidSymbol, KS_questiondown,
319 KC(17), KS_n, KS_N, KS_asciitilde,
320 KC(20), KS_a, KS_A, KS_ae, KS_AE,
321 KC(21), KS_r, KS_R, KS_registered, KS_comma,
322 KC(22), KS_s, KS_S, KS_Ograve,
323 KC(26), KS_z, KS_Z, KS_Acircumflex, KS_Aring,
324 KC(28), KS_y, KS_Y, KS_Uacute,
325 KC(31), KS_eacute, KS_2, KS_ediaeresis,
326 KC(32), KS_quotedbl, KS_3,
327 KC(33), KS_apostrophe, KS_4,
328 KC(34), KS_parenleft, KS_5, KS_braceleft, KS_bracketleft,
329 KC(35), KS_section, KS_6,
330 KC(36), KS_egrave, KS_7, KS_guillemotleft,
331 KS_guillemotright,
332 KC(37), KS_exclam, KS_8,
333 KC(38), KS_ccedilla, KS_9, KS_Ccedilla, KS_Aacute,
334 KC(37), KS_exclam, KS_8, KS_exclamdown, KS_Ucircumflex,
335 KC(39), KS_agrave, KS_0, KS_oslash, KS_Ooblique,
336 KC(45), KS_parenright, KS_degree, KS_braceright, KS_bracketright,
337 KC(46), KS_minus, KS_underscore,
338 KC(47), KS_dead_circumflex, KS_dead_diaeresis,
339 KS_ocircumflex, KS_Ocircumflex,
340 KC(48), KS_dollar, KS_asterisk, KS_cent, KS_yen,
341 KC(50), KS_grave, KS_sterling, KS_at, KS_numbersign,
342 KC(51), KS_m, KS_M, KS_mu, KS_Oacute,
343 KC(52), KS_ugrave, KS_percent, KS_Ugrave,
344 KC(53), KS_at, KS_numbersign,
345 KC(55), KS_colon, KS_slash, KS_voidSymbol, KS_backslash,
346 KC(56), KS_equal, KS_plus,
347 KC(103), KS_KP_Equal,
348 KC(231), KS_Mode_switch, KS_Multi_key,
349 };
350
351 static const keysym_t ukbd_keydesc_it[] = {
352
353 KC(31), KS_2, KS_quotedbl, KS_twosuperior,
354 KC(32), KS_3, KS_sterling, KS_threesuperior,
355 KC(34), KS_5, KS_percent,
356 KC(35), KS_6, KS_ampersand,
357 KC(36), KS_7, KS_slash,
358 KC(37), KS_8, KS_parenleft,
359 KC(38), KS_9, KS_parenright,
360 KC(39), KS_0, KS_equal,
361 KC(45), KS_apostrophe, KS_question,
362 KC(46), KS_igrave, KS_asciicircum,
363 KC(47), KS_egrave, KS_eacute, KS_braceleft, KS_bracketleft,
364 KC(48), KS_plus, KS_asterisk, KS_braceright, KS_bracketright,
365 KC(49), KS_ugrave, KS_section,
366 KC(50), KS_ugrave, KS_section,
367 KC(51), KS_ograve, KS_Ccedilla, KS_at,
368 KC(52), KS_agrave, KS_degree, KS_numbersign,
369 KC(53), KS_backslash, KS_bar,
370 KC(54), KS_comma, KS_semicolon,
371 KC(55), KS_period, KS_colon,
372 KC(56), KS_minus, KS_underscore,
373 KC(100), KS_less, KS_greater,
374 KC(230), KS_Mode_switch, KS_Multi_key,
375 };
376
377 static const keysym_t ukbd_keydesc_uk[] = {
378
379 KC(30), KS_1, KS_exclam, KS_plusminus, KS_exclamdown,
380 KC(31), KS_2, KS_quotedbl, KS_twosuperior, KS_cent,
381 KC(32), KS_3, KS_sterling, KS_threesuperior,
382 KC(33), KS_4, KS_dollar, KS_acute, KS_currency,
383 KC(34), KS_5, KS_percent, KS_mu, KS_yen,
384 KC(35), KS_6, KS_asciicircum, KS_paragraph,
385 KC(36), KS_7, KS_ampersand, KS_periodcentered,KS_brokenbar,
386 KC(37), KS_8, KS_asterisk, KS_cedilla, KS_ordfeminine,
387 KC(38), KS_9, KS_parenleft, KS_onesuperior, KS_diaeresis,
388 KC(39), KS_0, KS_parenright, KS_masculine, KS_copyright,
389 KC(45), KS_minus, KS_underscore, KS_hyphen, KS_ssharp,
390 KC(46), KS_equal, KS_plus, KS_onehalf, KS_guillemotleft,
391 KC(49), KS_numbersign, KS_asciitilde, KS_sterling, KS_thorn,
392 KC(50), KS_numbersign, KS_asciitilde, KS_sterling, KS_thorn,
393 KC(52), KS_apostrophe, KS_at, KS_section, KS_Agrave,
394 KC(53), KS_grave, KS_grave, KS_agrave, KS_agrave,
395 KC(100), KS_backslash, KS_bar, KS_Udiaeresis,
396 };
397
398 static const keysym_t ukbd_keydesc_jp[] = {
399
400 KC(31), KS_2, KS_quotedbl,
401 KC(35), KS_6, KS_ampersand,
402 KC(36), KS_7, KS_apostrophe,
403 KC(37), KS_8, KS_parenleft,
404 KC(38), KS_9, KS_parenright,
405 KC(39), KS_0,
406 KC(45), KS_minus, KS_equal,
407 KC(46), KS_asciicircum, KS_asciitilde,
408 KC(47), KS_at, KS_grave,
409 KC(48), KS_bracketleft, KS_braceleft,
410 KC(49), KS_bracketright,KS_braceright,
411 KC(50), KS_bracketright,KS_braceright,
412 KC(51), KS_semicolon, KS_plus,
413 KC(52), KS_colon, KS_asterisk,
414 KC(53), KS_Zenkaku_Hankaku,
415 KC(135), KS_Hiragana_Katakana,
416 KC(136), KS_backslash, KS_underscore,
417 KC(137), KS_Henkan,
418 KC(138), KS_Muhenkan,
419 KC(139), KS_backslash, KS_bar,
420 };
421
422 static const keysym_t ukbd_keydesc_es[] = {
423
424 KC(30), KS_1, KS_exclam, KS_bar,
425 KC(31), KS_2, KS_quotedbl, KS_at,
426 KC(32), KS_3, KS_periodcentered,KS_numbersign,
427 KC(33), KS_4, KS_dollar, KS_asciitilde,
428 KC(35), KS_6, KS_ampersand,
429 KC(36), KS_7, KS_slash,
430 KC(37), KS_8, KS_parenleft,
431 KC(38), KS_9, KS_parenright,
432 KC(39), KS_0, KS_equal,
433 KC(45), KS_apostrophe, KS_question,
434 KC(46), KS_exclamdown, KS_questiondown,
435 KC(47), KS_dead_grave, KS_dead_circumflex,KS_bracketleft,
436 KC(48), KS_plus, KS_asterisk, KS_bracketright,
437 KC(49), KS_ccedilla, KS_Ccedilla, KS_braceright,
438 KC(50), KS_ccedilla, KS_Ccedilla, KS_braceright,
439 KC(51), KS_ntilde,
440 KC(52), KS_dead_acute, KS_dead_diaeresis,KS_braceleft,
441 KC(53), KS_degree, KS_ordfeminine, KS_backslash,
442 KC(54), KS_comma, KS_semicolon,
443 KC(55), KS_period, KS_colon,
444 KC(56), KS_minus, KS_underscore,
445 KC(100), KS_less, KS_greater,
446 KC(230), KS_Mode_switch, KS_Multi_key,
447 };
448
449 static const keysym_t ukbd_keydesc_lt[] = {
450
451 KC(8), KS_e, KS_E, KS_currency,
452 KC(9), KS_L7_scaron, KS_L7_Scaron,
453 KC(20), KS_L7_aogonek, KS_L7_Aogonek,
454 KC(26), KS_L7_zcaron, KS_L7_Zcaron,
455 KC(27), KS_L7_umacron, KS_L7_Umacron,
456 KC(30), KS_exclam, KS_1, KS_at,
457 KC(31), KS_minus, KS_2, KS_underscore,
458 KC(32), KS_slash, KS_3, KS_numbersign,
459 KC(33), KS_semicolon, KS_4, KS_dollar,
460 KC(34), KS_colon, KS_5, KS_paragraph,
461 KC(35), KS_comma, KS_6, KS_asciicircum,
462 KC(36), KS_period, KS_7, KS_ampersand,
463 KC(37), KS_equal, KS_8, KS_asterisk,
464 KC(38), KS_bracketleft, KS_9, KS_parenleft,
465 KC(39), KS_bracketright,KS_0, KS_parenright,
466 KC(44), KS_space, KS_space, KS_nobreakspace,
467 KC(45), KS_question, KS_plus, KS_apostrophe,
468 KC(46), KS_x, KS_X, KS_percent,
469 KC(47), KS_L7_iogonek, KS_L7_Iogonek, KS_braceleft,
470 KC(48), KS_w, KS_W, KS_braceright,
471 KC(49), KS_q, KS_Q, KS_bar,
472 KC(50), KS_q, KS_Q, KS_bar,
473 KC(51), KS_L7_uogonek, KS_L7_Uogonek,
474 KC(52), KS_L7_edot, KS_L7_Edot, KS_quotedbl,
475 KC(53), KS_grave, KS_asciitilde,
476 KC(54), KS_L7_ccaron, KS_L7_Ccaron, KS_L7_dbllow9quot,
477 KC(55), KS_f, KS_F, KS_L7_leftdblquot,
478 KC(56), KS_L7_eogonek, KS_L7_Eogonek, KS_backslash,
479 KC(230), KS_Mode_switch, KS_Multi_key,
480 };
481
482 static const keysym_t ukbd_keydesc_be[] = {
483
484 KC(4), KS_q,
485 KC(16), KS_comma, KS_question,
486 KC(20), KS_a,
487 KC(26), KS_z,
488 KC(29), KS_w,
489 KC(30), KS_ampersand, KS_1, KS_bar,
490 KC(31), KS_eacute, KS_2, KS_at,
491 KC(32), KS_quotedbl, KS_3, KS_numbersign,
492 KC(33), KS_apostrophe, KS_4,
493 KC(34), KS_parenleft, KS_5,
494 KC(35), KS_section, KS_6, KS_asciicircum,
495 KC(36), KS_egrave, KS_7,
496 KC(37), KS_exclam, KS_8,
497 KC(38), KS_ccedilla, KS_9, KS_braceleft,
498 KC(39), KS_agrave, KS_0, KS_braceright,
499 KC(45), KS_parenright, KS_degree,
500 KC(46), KS_minus, KS_underscore,
501 KC(47), KS_dead_circumflex,KS_dead_diaeresis,KS_bracketleft,
502 KC(48), KS_dollar, KS_asterisk, KS_bracketright,
503 KC(49), KS_mu, KS_sterling, KS_grave,
504 KC(50), KS_mu, KS_sterling, KS_grave,
505 KC(51), KS_m,
506 KC(52), KS_ugrave, KS_percent, KS_acute,
507 KC(53), KS_twosuperior, KS_threesuperior,
508 KC(54), KS_semicolon, KS_period,
509 KC(55), KS_colon, KS_slash,
510 KC(56), KS_equal, KS_plus, KS_asciitilde,
511 KC(100), KS_less, KS_greater, KS_backslash,
512 KC(230), KS_Mode_switch, KS_Multi_key,
513 };
514
515
516 static const keysym_t ukbd_keydesc_us_dvorak[] = {
517
518 KC(5), KS_x,
519 KC(6), KS_j,
520 KC(7), KS_e,
521 KC(8), KS_period, KS_greater,
522 KC(9), KS_u,
523 KC(10), KS_i,
524 KC(11), KS_d,
525 KC(12), KS_c,
526 KC(13), KS_h,
527 KC(14), KS_t,
528 KC(15), KS_n,
529 KC(17), KS_b,
530 KC(18), KS_r,
531 KC(19), KS_l,
532 KC(20), KS_apostrophe, KS_quotedbl,
533 KC(21), KS_p,
534 KC(22), KS_o,
535 KC(23), KS_y,
536 KC(24), KS_g,
537 KC(25), KS_k,
538 KC(26), KS_comma, KS_less,
539 KC(27), KS_q,
540 KC(28), KS_f,
541 KC(29), KS_semicolon, KS_colon,
542 KC(45), KS_bracketleft, KS_braceleft,
543 KC(46), KS_bracketright,KS_braceright,
544 KC(47), KS_slash, KS_question,
545 KC(48), KS_equal, KS_plus,
546 KC(51), KS_s,
547 KC(52), KS_minus, KS_underscore,
548 KC(54), KS_w,
549 KC(55), KS_v,
550 KC(56), KS_z,
551 };
552
553 static const keysym_t ukbd_keydesc_swapctrlcaps[] = {
554
555 KC(57), KS_Cmd1, KS_Control_L,
556 KC(224), KS_Caps_Lock,
557 };
558
559 static const keysym_t ukbd_keydesc_iopener[] = {
560
561 KC(58), KS_Cmd_Debugger,KS_Escape,
562 KC(59), KS_Cmd_Screen0, KS_f1,
563 KC(60), KS_Cmd_Screen1, KS_f2,
564 KC(61), KS_Cmd_Screen2, KS_f3,
565 KC(62), KS_Cmd_Screen3, KS_f4,
566 KC(63), KS_Cmd_Screen4, KS_f5,
567 KC(64), KS_Cmd_Screen5, KS_f6,
568 KC(65), KS_Cmd_Screen6, KS_f7,
569 KC(66), KS_Cmd_Screen7, KS_f8,
570 KC(67), KS_Cmd_Screen8, KS_f9,
571 KC(68), KS_Cmd_Screen9, KS_f10,
572 KC(69), KS_f11,
573 };
574
575 static const keysym_t ukbd_keydesc_ru[] = {
576
577 KC(4), KS_a, KS_A, KS_Cyrillic_ef, KS_Cyrillic_EF,
578 KC(5), KS_b, KS_B, KS_Cyrillic_i, KS_Cyrillic_I,
579 KC(6), KS_c, KS_C, KS_Cyrillic_es, KS_Cyrillic_ES,
580 KC(7), KS_d, KS_D, KS_Cyrillic_ve, KS_Cyrillic_VE,
581 KC(8), KS_e, KS_E, KS_Cyrillic_u, KS_Cyrillic_U,
582 KC(9), KS_f, KS_F, KS_Cyrillic_a, KS_Cyrillic_A,
583 KC(10), KS_g, KS_G, KS_Cyrillic_pe, KS_Cyrillic_PE,
584 KC(11), KS_h, KS_H, KS_Cyrillic_er, KS_Cyrillic_ER,
585 KC(12), KS_i, KS_I, KS_Cyrillic_sha,KS_Cyrillic_SHA,
586 KC(13), KS_j, KS_J, KS_Cyrillic_o, KS_Cyrillic_O,
587 KC(14), KS_k, KS_K, KS_Cyrillic_el, KS_Cyrillic_EL,
588 KC(15), KS_l, KS_L, KS_Cyrillic_de, KS_Cyrillic_DE,
589 KC(16), KS_m, KS_M, KS_Cyrillic_ssighn,KS_Cyrillic_SSIGHN,
590 KC(17), KS_n, KS_N, KS_Cyrillic_te, KS_Cyrillic_TE,
591 KC(18), KS_o, KS_O, KS_Cyrillic_scha,KS_Cyrillic_SCHA,
592 KC(19), KS_p, KS_P, KS_Cyrillic_ze, KS_Cyrillic_ZE,
593 KC(20), KS_q, KS_Q, KS_Cyrillic_ishort,KS_Cyrillic_ISHORT,
594 KC(21), KS_r, KS_R, KS_Cyrillic_ka, KS_Cyrillic_KA,
595 KC(22), KS_s, KS_S, KS_Cyrillic_yeru,KS_Cyrillic_YERU,
596 KC(23), KS_t, KS_T, KS_Cyrillic_ie, KS_Cyrillic_IE,
597 KC(24), KS_u, KS_U, KS_Cyrillic_ge, KS_Cyrillic_GE,
598 KC(25), KS_v, KS_V, KS_Cyrillic_em, KS_Cyrillic_EM,
599 KC(26), KS_w, KS_W, KS_Cyrillic_tse,KS_Cyrillic_TSE,
600 KC(27), KS_x, KS_X, KS_Cyrillic_che,KS_Cyrillic_CHE,
601 KC(28), KS_y, KS_Y, KS_Cyrillic_en, KS_Cyrillic_EN,
602 KC(29), KS_z, KS_Z, KS_Cyrillic_ya, KS_Cyrillic_YA,
603 KC(35), KS_6, KS_asciicircum, KS_6, KS_comma,
604 KC(36), KS_7, KS_ampersand, KS_7, KS_period,
605 KC(47), KS_bracketleft, KS_braceleft, KS_Cyrillic_ha, KS_Cyrillic_HA,
606 KC(48), KS_bracketright,KS_braceright, KS_Cyrillic_hsighn,KS_Cyrillic_HSIGHN,
607 KC(51), KS_semicolon, KS_colon, KS_Cyrillic_zhe,KS_Cyrillic_ZHE,
608 KC(52), KS_apostrophe, KS_quotedbl, KS_Cyrillic_e, KS_Cyrillic_E,
609 KC(54), KS_comma, KS_less, KS_Cyrillic_be, KS_Cyrillic_BE,
610 KC(55), KS_period, KS_greater, KS_Cyrillic_yu, KS_Cyrillic_YU,
611 KC(56), KS_slash, KS_question, KS_Cyrillic_yo, KS_Cyrillic_YO,
612 KC(230), KS_Mode_switch, KS_Multi_key,
613 };
614
615 static const keysym_t ukbd_keydesc_ua[] = {
616
617 KC(4), KS_a, KS_A, KS_Cyrillic_ef, KS_Cyrillic_EF,
618 KC(5), KS_b, KS_B, KS_Cyrillic_i, KS_Cyrillic_I,
619 KC(6), KS_c, KS_C, KS_Cyrillic_es, KS_Cyrillic_ES,
620 KC(7), KS_d, KS_D, KS_Cyrillic_ve, KS_Cyrillic_VE,
621 KC(8), KS_e, KS_E, KS_Cyrillic_u, KS_Cyrillic_U,
622 KC(9), KS_f, KS_F, KS_Cyrillic_a, KS_Cyrillic_A,
623 KC(10), KS_g, KS_G, KS_Cyrillic_pe, KS_Cyrillic_PE,
624 KC(11), KS_h, KS_H, KS_Cyrillic_er, KS_Cyrillic_ER,
625 KC(12), KS_i, KS_I, KS_Cyrillic_sha,KS_Cyrillic_SHA,
626 KC(13), KS_j, KS_J, KS_Cyrillic_o, KS_Cyrillic_O,
627 KC(14), KS_k, KS_K, KS_Cyrillic_el, KS_Cyrillic_EL,
628 KC(15), KS_l, KS_L, KS_Cyrillic_de, KS_Cyrillic_DE,
629 KC(16), KS_m, KS_M, KS_Cyrillic_ssighn,KS_Cyrillic_SSIGHN,
630 KC(17), KS_n, KS_N, KS_Cyrillic_te, KS_Cyrillic_TE,
631 KC(18), KS_o, KS_O, KS_Cyrillic_scha,KS_Cyrillic_SCHA,
632 KC(19), KS_p, KS_P, KS_Cyrillic_ze, KS_Cyrillic_ZE,
633 KC(20), KS_q, KS_Q, KS_Cyrillic_ishort,KS_Cyrillic_ISHORT,
634 KC(21), KS_r, KS_R, KS_Cyrillic_ka, KS_Cyrillic_KA,
635 KC(22), KS_s, KS_S, KS_Cyrillic_yeru,KS_Cyrillic_YERU,
636 KC(23), KS_t, KS_T, KS_Cyrillic_ie, KS_Cyrillic_IE,
637 KC(24), KS_u, KS_U, KS_Cyrillic_ge, KS_Cyrillic_GE,
638 KC(25), KS_v, KS_V, KS_Cyrillic_em, KS_Cyrillic_EM,
639 KC(26), KS_w, KS_W, KS_Cyrillic_tse,KS_Cyrillic_TSE,
640 KC(27), KS_x, KS_X, KS_Cyrillic_che,KS_Cyrillic_CHE,
641 KC(28), KS_y, KS_Y, KS_Cyrillic_en, KS_Cyrillic_EN,
642 KC(29), KS_z, KS_Z, KS_Cyrillic_ya, KS_Cyrillic_YA,
643 KC(35), KS_6, KS_asciicircum, KS_6, KS_comma,
644 KC(36), KS_7, KS_ampersand, KS_7, KS_period,
645 KC(45), KS_minus, KS_underscore, KS_Cyrillic_iukr,KS_Cyrillic_IUKR,
646 KC(46), KS_equal, KS_plus, KS_Cyrillic_yeukr,KS_Cyrillic_YEUKR,
647 KC(47), KS_bracketleft, KS_braceleft, KS_Cyrillic_ha, KS_Cyrillic_HA,
648 KC(48), KS_bracketright,KS_braceright, KS_Cyrillic_hsighn,KS_Cyrillic_HSIGHN,
649 KC(49), KS_backslash, KS_bar, KS_Cyrillic_yi, KS_Cyrillic_YI,
650 KC(50), KS_backslash, KS_bar, KS_Cyrillic_yi, KS_Cyrillic_YI,
651 KC(51), KS_semicolon, KS_colon, KS_Cyrillic_zhe,KS_Cyrillic_ZHE,
652 KC(52), KS_apostrophe, KS_quotedbl, KS_Cyrillic_e, KS_Cyrillic_E,
653 KC(53), KS_grave, KS_asciitilde, KS_Cyrillic_gheukr,KS_Cyrillic_GHEUKR,
654 KC(54), KS_comma, KS_less, KS_Cyrillic_be, KS_Cyrillic_BE,
655 KC(55), KS_period, KS_greater, KS_Cyrillic_yu, KS_Cyrillic_YU,
656 KC(56), KS_slash, KS_question, KS_Cyrillic_yo, KS_Cyrillic_YO,
657 KC(230), KS_Mode_switch, KS_Multi_key,
658 };
659
660 static const keysym_t ukbd_keydesc_sg[] = {
661
662 KC(8), KS_e, KS_E, KS_currency,
663 KC(28), KS_z,
664 KC(29), KS_y,
665 KC(30), KS_1, KS_plus, KS_bar,
666 KC(31), KS_2, KS_quotedbl, KS_at,
667 KC(32), KS_3, KS_asterisk, KS_numbersign,
668 KC(33), KS_4, KS_ccedilla,
669 KC(35), KS_6, KS_ampersand, KS_notsign,
670 KC(36), KS_7, KS_slash, KS_brokenbar,
671 KC(37), KS_8, KS_parenleft, KS_cent,
672 KC(38), KS_9, KS_parenright,
673 KC(39), KS_0, KS_equal,
674 KC(45), KS_apostrophe, KS_question, KS_dead_acute,
675 KC(46), KS_dead_circumflex,KS_dead_grave,KS_dead_tilde,
676 KC(47), KS_udiaeresis, KS_egrave, KS_bracketleft,
677 KC(48), KS_dead_diaeresis,KS_exclam, KS_bracketright,
678 KC(49), KS_dollar, KS_sterling, KS_braceright,
679 KC(50), KS_dollar, KS_sterling, KS_braceright,
680 KC(51), KS_odiaeresis, KS_eacute,
681 KC(52), KS_adiaeresis, KS_agrave, KS_braceleft,
682 KC(53), KS_section, KS_degree, KS_dead_abovering,
683 KC(54), KS_comma, KS_semicolon,
684 KC(55), KS_period, KS_colon,
685 KC(56), KS_minus, KS_underscore,
686 KC(100), KS_less, KS_greater, KS_backslash,
687 KC(230), KS_Mode_switch, KS_Multi_key,
688 };
689
690 static const keysym_t ukbd_keydesc_sg_nodead[] = {
691
692 KC(45), KS_apostrophe, KS_question, KS_acute,
693 KC(46), KS_asciicircum, KS_grave, KS_asciitilde,
694 KC(48), KS_diaeresis, KS_exclam, KS_bracketright,
695 };
696
697 static const keysym_t ukbd_keydesc_sf[] = {
698
699 KC(47), KS_egrave, KS_udiaeresis, KS_bracketleft,
700 KC(51), KS_eacute, KS_odiaeresis,
701 KC(52), KS_agrave, KS_adiaeresis, KS_braceleft,
702 };
703
704 static const keysym_t ukbd_keydesc_pt[] = {
705
706 KC(31), KS_2, KS_quotedbl, KS_at,
707 KC(32), KS_3, KS_numbersign, KS_sterling,
708 KC(35), KS_6, KS_ampersand,
709 KC(36), KS_7, KS_slash, KS_braceleft,
710 KC(37), KS_8, KS_parenleft, KS_bracketleft,
711 KC(38), KS_9, KS_parenright, KS_bracketright,
712 KC(39), KS_0, KS_equal, KS_braceright,
713 KC(45), KS_apostrophe, KS_question,
714 KC(46), KS_less, KS_greater,
715 KC(47), KS_plus, KS_asterisk,
716 KC(48), KS_dead_acute, KS_dead_grave,
717 KC(49), KS_dead_tilde, KS_dead_circumflex,
718 KC(50), KS_dead_tilde, KS_dead_circumflex,
719 KC(51), KS_ccedilla, KS_Ccedilla,
720 KC(52), KS_masculine, KS_ordfeminine,
721 KC(53), KS_backslash, KS_bar,
722 KC(54), KS_comma, KS_semicolon,
723 KC(55), KS_period, KS_colon,
724 KC(56), KS_minus, KS_underscore,
725 KC(100), KS_less, KS_greater,
726 KC(230), KS_Mode_switch, KS_Multi_key,
727 };
728
729 static const keysym_t ukbd_keydesc_pt_apple[] = {
730
731 KC(46), KS_plus, KS_asterisk,
732 KC(47), KS_masculine, KS_ordfeminine,
733 KC(50), KS_backslash, KS_bar,
734 KC(52), KS_dead_tilde, KS_dead_circumflex
735 };
736
737 static const keysym_t ukbd_keydesc_la[] = {
738
739 KC(20), KS_q, KS_Q, KS_at,
740 KC(30), KS_1, KS_exclam,
741 KC(31), KS_2, KS_quotedbl,
742 KC(32), KS_3, KS_numbersign,
743 KC(35), KS_6, KS_ampersand,
744 KC(36), KS_7, KS_slash,
745 KC(37), KS_8, KS_parenleft,
746 KC(38), KS_9, KS_parenright,
747 KC(39), KS_0, KS_equal,
748 KC(45), KS_apostrophe, KS_question, KS_backslash,
749 KC(46), KS_questiondown,KS_exclamdown,
750 KC(47), KS_dead_acute, KS_dead_diaeresis,
751 KC(48), KS_plus, KS_asterisk, KS_asciitilde,
752 KC(49), KS_braceright, KS_bracketright,KS_dead_grave,
753 KC(50), KS_braceright, KS_bracketright,KS_dead_grave,
754 KC(51), KS_ntilde,
755 KC(52), KS_braceleft, KS_bracketleft, KS_dead_circumflex,
756 KC(53), KS_bar, KS_degree, KS_notsign,
757 KC(54), KS_comma, KS_semicolon,
758 KC(55), KS_period, KS_colon,
759 KC(56), KS_minus, KS_underscore,
760 KC(100), KS_less, KS_greater,
761 KC(230), KS_Mode_switch, KS_Multi_key,
762 };
763
764 static const keysym_t ukbd_keydesc_br[] = {
765
766 KC(30), KS_1, KS_exclam, KS_onesuperior,
767 KC(31), KS_2, KS_at, KS_twosuperior,
768 KC(32), KS_3, KS_numbersign, KS_threesuperior,
769 KC(33), KS_4, KS_dollar, KS_sterling,
770 KC(34), KS_5, KS_percent, KS_cent,
771 KC(35), KS_6, KS_dead_diaeresis,KS_notsign,
772 KC(46), KS_equal, KS_plus, KS_section,
773 KC(47), KS_dead_acute, KS_dead_grave,
774 KC(48), KS_bracketleft, KS_braceleft, KS_ordfeminine,
775 KC(49), KS_bracketright,KS_braceright, KS_masculine,
776 KC(50), KS_bracketright,KS_braceright, KS_masculine,
777 KC(51), KS_ccedilla, KS_Ccedilla,
778 KC(52), KS_dead_tilde, KS_dead_circumflex,
779 KC(53), KS_apostrophe, KS_quotedbl,
780 KC(56), KS_semicolon, KS_colon,
781 KC(99), KS_KP_Delete, KS_KP_Decimal,
782 KC(100), KS_backslash, KS_bar,
783 KC(136), KS_slash, KS_question, KS_degree,
784 };
785
786 static const keysym_t ukbd_keydesc_tr[] = {
787
788 KC(12), KS_L5_idotless, KS_I,
789 KC(20), KS_q, KS_Q, KS_at,
790 KC(31), KS_2, KS_apostrophe, KS_sterling,
791 KC(32), KS_3, KS_asciicircum, KS_numbersign,
792 KC(33), KS_4, KS_plus, KS_dollar,
793 KC(34), KS_5, KS_percent, KS_onehalf,
794 KC(35), KS_6, KS_ampersand,
795 KC(36), KS_7, KS_slash, KS_braceleft,
796 KC(37), KS_8, KS_parenleft, KS_bracketleft,
797 KC(38), KS_9, KS_parenright, KS_bracketright,
798 KC(39), KS_0, KS_equal, KS_braceright,
799 KC(45), KS_asterisk, KS_question, KS_backslash,
800 KC(46), KS_minus, KS_underscore,
801 KC(47), KS_L5_gbreve, KS_L5_Gbreve, KS_dead_diaeresis,
802 KC(48), KS_udiaeresis, KS_Udiaeresis, KS_asciitilde,
803 KC(49), KS_comma, KS_semicolon, KS_dead_grave,
804 KC(50), KS_comma, KS_semicolon, KS_dead_grave,
805 KC(51), KS_L5_scedilla, KS_L5_Scedilla, KS_dead_acute,
806 KC(52), KS_i, KS_L5_Idotabove,
807 KC(53), KS_quotedbl, KS_eacute,
808 KC(54), KS_odiaeresis, KS_Odiaeresis,
809 KC(55), KS_ccedilla, KS_Ccedilla,
810 KC(56), KS_period, KS_colon,
811 KC(100), KS_less, KS_greater, KS_bar,
812 KC(230), KS_Mode_switch, KS_Multi_key,
813 };
814
815 static const keysym_t ukbd_keydesc_tr_nodead[] = {
816
817 KC(47), KS_L5_gbreve, KS_L5_Gbreve,
818 KC(49), KS_comma, KS_semicolon, KS_grave,
819 KC(50), KS_comma, KS_semicolon, KS_grave,
820 KC(51), KS_L5_scedilla, KS_L5_Scedilla, KS_apostrophe,
821 };
822
823 static const keysym_t ukbd_keydesc_pl[] = {
824
825 KC(4), KS_a, KS_A, KS_L2_aogonek, KS_L2_Aogonek,
826 KC(6), KS_c, KS_C, KS_L2_cacute, KS_L2_Cacute,
827 KC(8), KS_e, KS_E, KS_L2_eogonek, KS_L2_Eogonek,
828 KC(15), KS_l, KS_L, KS_L2_lstroke, KS_L2_Lstroke,
829 KC(17), KS_n, KS_N, KS_L2_nacute, KS_L2_Nacute,
830 KC(18), KS_o, KS_O, KS_oacute, KS_Oacute,
831 KC(22), KS_s, KS_S, KS_L2_sacute, KS_L2_Sacute,
832 KC(27), KS_x, KS_X, KS_L2_zacute, KS_L2_Zacute,
833 KC(29), KS_z, KS_Z, KS_L2_zdotabove,KS_L2_Zdotabove,
834 KC(230), KS_Mode_switch, KS_Multi_key,
835 };
836
837 static const keysym_t ukbd_keydesc_hu[] = {
838
839 KC(5), KS_b, KS_B, KS_braceleft,
840 KC(6), KS_c, KS_C, KS_ampersand,
841 KC(9), KS_f, KS_F, KS_bracketleft,
842 KC(10), KS_g, KS_G, KS_bracketright,
843 KC(12), KS_i, KS_I, KS_iacute,
844 KC(13), KS_j, KS_J, KS_iacute,
845 KC(17), KS_n, KS_N, KS_braceright,
846 KC(20), KS_q, KS_Q, KS_backslash,
847 KC(25), KS_v, KS_V, KS_at,
848 KC(26), KS_w, KS_W,KS_bar,
849 KC(27), KS_x, KS_X, KS_numbersign,
850 KC(28), KS_z, KS_Z,
851 KC(29), KS_y, KS_Y, KS_greater,
852 KC(30), KS_1, KS_apostrophe, KS_asciitilde,
853 KC(31), KS_2, KS_quotedbl,
854 KC(32), KS_3, KS_plus, KS_asciicircum,
855 KC(33), KS_4, KS_exclam,
856 KC(34), KS_5, KS_percent,
857 KC(35), KS_6, KS_slash,
858 KC(36), KS_7, KS_equal,KS_grave,
859 KC(37), KS_8, KS_parenleft,
860 KC(38), KS_9, KS_parenright, KS_acute,
861 KC(39), KS_odiaeresis, KS_Odiaeresis,
862 KC(45), KS_udiaeresis, KS_Udiaeresis,
863 KC(46), KS_oacute, KS_Oacute,
864 KC(47), KS_odoubleacute,KS_Odoubleacute,KS_division,
865 KC(48), KS_uacute, KS_Uacute, KS_multiply,
866 KC(49), KS_udoubleacute,KS_Udoubleacute,KS_currency,
867 KC(50), KS_udoubleacute,KS_Udoubleacute,KS_currency,
868 KC(51), KS_eacute, KS_Eacute, KS_dollar,
869 KC(52), KS_aacute, KS_Aacute, KS_ssharp,
870 KC(53), KS_0, KS_section,
871 KC(54), KS_comma, KS_question, KS_semicolon,
872 KC(55), KS_period, KS_colon,
873 KC(56), KS_minus, KS_underscore, KS_asterisk,
874 KC(100), KS_iacute, KS_Iacute, KS_less,
875 KC(230), KS_Mode_switch, KS_Multi_key,
876 };
877
878 static const keysym_t ukbd_keydesc_si[]=
879 {
880
881 KC(5), KS_b, KS_B, KS_braceleft,
882 KC(9), KS_f, KS_F, KS_bracketleft,
883 KC(10), KS_g, KS_G, KS_bracketright,
884 KC(14), KS_k, KS_K, KS_L2_lstroke,
885 KC(15), KS_l, KS_L, KS_L2_Lstroke,
886 KC(16), KS_m, KS_M, KS_section,
887 KC(17), KS_n, KS_N, KS_braceright,
888 KC(20), KS_q, KS_Q, KS_backslash,
889 KC(25), KS_v, KS_V, KS_at,
890 KC(26), KS_w, KS_W, KS_bar,
891 KC(28), KS_z, KS_Z,
892 KC(29), KS_y, KS_Y,
893 KC(30), KS_1, KS_exclam, KS_asciitilde,
894 KC(31), KS_2, KS_quotedbl, KS_L2_caron,
895 KC(32), KS_3, KS_numbersign, KS_asciicircum,
896 KC(33), KS_4, KS_dollar, KS_L2_breve,
897 KC(34), KS_5, KS_percent, KS_degree,
898 KC(35), KS_6, KS_ampersand, KS_L2_ogonek,
899 KC(36), KS_7, KS_slash, KS_grave,
900 KC(37), KS_8, KS_parenleft, KS_L2_dotabove,
901 KC(38), KS_9, KS_parenright, KS_acute,
902 KC(39), KS_0, KS_equal, KS_L2_dblacute,
903 KC(45), KS_apostrophe, KS_question, KS_diaeresis,
904 KC(46), KS_plus, KS_asterisk, KS_cedilla,
905 KC(47), KS_L2_scaron, KS_L2_Scaron, KS_division,
906 KC(48), KS_L2_dstroke, KS_L2_Dstroke, KS_multiply,
907 KC(49), KS_L2_zcaron, KS_L2_Zcaron, KS_currency,
908 KC(50), KS_L2_zcaron, KS_L2_Zcaron, KS_currency,
909 KC(51), KS_L2_ccaron, KS_L2_Ccaron,
910 KC(52), KS_L2_cacute, KS_L2_Cacute, KS_ssharp,
911 KC(53), KS_cedilla, KS_diaeresis,
912 KC(54), KS_comma, KS_semicolon,
913 KC(55), KS_period, KS_colon,
914 KC(56), KS_minus, KS_underscore,
915 KC(100), KS_less, KS_greater,
916 KC(230), KS_Mode_switch, KS_Multi_key,
917 };
918
919 static const keysym_t ukbd_keydesc_cf[] = {
920
921 KC(16), KS_m, KS_M, KS_mu,
922 KC(18), KS_o, KS_O, KS_section,
923 KC(19), KS_p, KS_P, KS_paragraph,
924 KC(30), KS_1, KS_exclam, KS_plusminus,
925 KC(31), KS_2, KS_quotedbl, KS_at,
926 KC(32), KS_3, KS_slash, KS_sterling,
927 KC(33), KS_4, KS_dollar, KS_cent,
928 KC(34), KS_5, KS_percent, KS_diaeresis,
929 KC(35), KS_6, KS_question, KS_macron,
930 KC(36), KS_7, KS_ampersand, KS_brokenbar,
931 KC(37), KS_8, KS_asterisk, KS_twosuperior,
932 KC(38), KS_9, KS_parenleft, KS_threesuperior,
933 KC(39), KS_0, KS_parenright, KS_onequarter,
934 KC(45), KS_minus, KS_underscore, KS_onehalf,
935 KC(46), KS_equal, KS_plus, KS_threequarters,
936 KC(47), KS_dead_circumflex,KS_dead_circumflex,KS_bracketleft,
937 KC(48), KS_dead_cedilla,KS_dead_diaeresis,KS_bracketright,
938 KC(49), KS_less, KS_greater, KS_braceright,
939 KC(50), KS_less, KS_greater, KS_braceright,
940 KC(51), KS_semicolon, KS_colon, KS_asciitilde,
941 KC(52), KS_dead_grave, KS_dead_grave, KS_braceleft,
942 KC(53), KS_numbersign, KS_bar, KS_backslash,
943 KC(54), KS_comma, KS_apostrophe, KS_hyphen,
944 KC(55), KS_period, KS_period,
945 KC(56), KS_eacute, KS_Eacute, KS_dead_acute,
946 KC(100), KS_guillemotleft,KS_guillemotright,KS_degree,
947 KC(230), KS_Mode_switch,KS_Multi_key,
948 };
949
950 static const keysym_t ukbd_keydesc_cf_nodead[] = {
951
952 KC(47), KS_asciicircum,KS_asciicircum,KS_bracketleft,
953 KC(48), KS_cedilla, KS_diaeresis, KS_bracketright,
954 KC(52), KS_grave, KS_grave, KS_braceleft,
955 KC(56), KS_eacute, KS_Eacute, KS_acute,
956 };
957
958 static const keysym_t ukbd_keydesc_lv[] = {
959
960 KC(4), KS_a, KS_A, KS_L7_amacron, KS_L7_Amacron,
961 KC(6), KS_c, KS_C, KS_L7_ccaron, KS_L7_Ccaron,
962 KC(8), KS_e, KS_E, KS_L7_emacron, KS_L7_Emacron,
963 KC(10), KS_g, KS_G, KS_L7_gcedilla, KS_L7_Gcedilla,
964 KC(12), KS_i, KS_I, KS_L7_imacron, KS_L7_Imacron,
965 KC(14), KS_k, KS_K, KS_L7_kcedilla, KS_L7_Kcedilla,
966 KC(15), KS_l, KS_L, KS_L7_lcedilla, KS_L7_Lcedilla,
967 KC(17), KS_n, KS_N, KS_L7_ncedilla, KS_L7_Ncedilla,
968 KC(18), KS_o, KS_O, KS_L7_omacron, KS_L7_Omacron,
969 KC(22), KS_s, KS_S, KS_L7_scaron, KS_L7_Scaron,
970 KC(24), KS_u, KS_U, KS_L7_umacron, KS_L7_Umacron,
971 KC(29), KS_z, KS_Z, KS_L7_zcaron, KS_L7_Zcaron,
972 KC(230), KS_Mode_switch, KS_Multi_key,
973 };
974
975 static const keysym_t ukbd_keydesc_nl[] = {
976
977 KC(6), KS_c, KS_C, KS_cent,
978 KC(16), KS_m, KS_M, KS_mu,
979 KC(21), KS_r, KS_R, KS_paragraph,
980 KC(22), KS_s, KS_S, KS_ssharp,
981 KC(27), KS_x, KS_X, KS_guillemotright,
982 KC(29), KS_z, KS_Z, KS_guillemotleft,
983 KC(30), KS_1, KS_exclam, KS_onesuperior,
984 KC(31), KS_2, KS_quotedbl, KS_twosuperior,
985 KC(32), KS_3, KS_numbersign, KS_threesuperior,
986 KC(33), KS_4, KS_dollar, KS_onequarter,
987 KC(34), KS_5, KS_percent, KS_onehalf,
988 KC(35), KS_6, KS_ampersand, KS_threequarters,
989 KC(36), KS_7, KS_underscore, KS_sterling,
990 KC(37), KS_8, KS_parenleft, KS_braceleft,
991 KC(38), KS_9, KS_parenright, KS_braceright,
992 KC(39), KS_0, KS_apostrophe,
993 KC(45), KS_slash, KS_question, KS_backslash,
994 KC(46), KS_degree, KS_dead_tilde, KS_dead_cedilla,
995 KC(47), KS_dead_diaeresis,KS_dead_circumflex,
996 KC(48), KS_asterisk, KS_bar,
997 KC(49), KS_less, KS_greater,
998 KC(50), KS_less, KS_greater,
999 KC(51), KS_plus, KS_plusminus,
1000 KC(52), KS_dead_acute, KS_dead_grave,
1001 KC(53), KS_at, KS_section, KS_notsign,
1002 KC(54), KS_comma, KS_semicolon,
1003 KC(55), KS_period, KS_colon, KS_periodcentered,
1004 KC(56), KS_minus, KS_equal,
1005 KC(100), KS_bracketright,KS_bracketleft, KS_brokenbar,
1006 KC(230), KS_Mode_switch, KS_Multi_key,
1007 };
1008
1009 static const keysym_t ukbd_keydesc_nl_nodead[] = {
1010
1011 KC(46), KS_degree, KS_asciitilde, KS_cedilla,
1012 KC(47), KS_quotedbl, KS_asciicircum,
1013 KC(52), KS_apostrophe, KS_grave,
1014 };
1015
1016 #endif
1017
1018 #define KBD_MAP(name, base, map) \
1019 { name, base, sizeof(map)/sizeof(keysym_t), map }
1020
1021 const struct wscons_keydesc ukbd_keydesctab[] = {
1022 KBD_MAP(KB_US, 0, ukbd_keydesc_us),
1023 #if !defined(SMALL_KERNEL) || !defined(__alpha__)
1024 KBD_MAP(KB_DE, KB_US, ukbd_keydesc_de),
1025 KBD_MAP(KB_DE | KB_NODEAD, KB_DE, ukbd_keydesc_de_nodead),
1026 KBD_MAP(KB_FR, KB_US, ukbd_keydesc_fr),
1027 KBD_MAP(KB_FR | KB_APPLE, KB_FR, ukbd_keydesc_fr_apple),
1028 KBD_MAP(KB_DK, KB_US, ukbd_keydesc_dk),
1029 KBD_MAP(KB_DK | KB_NODEAD, KB_DK, ukbd_keydesc_dk_nodead),
1030 KBD_MAP(KB_IT, KB_US, ukbd_keydesc_it),
1031 KBD_MAP(KB_UK, KB_US, ukbd_keydesc_uk),
1032 KBD_MAP(KB_JP, KB_US, ukbd_keydesc_jp),
1033 KBD_MAP(KB_SV, KB_DK, ukbd_keydesc_sv),
1034 KBD_MAP(KB_SV | KB_NODEAD, KB_SV, ukbd_keydesc_sv_nodead),
1035 KBD_MAP(KB_NO, KB_DK, ukbd_keydesc_no),
1036 KBD_MAP(KB_NO | KB_NODEAD, KB_NO, ukbd_keydesc_no_nodead),
1037 KBD_MAP(KB_US | KB_DVORAK, KB_US, ukbd_keydesc_us_dvorak),
1038 KBD_MAP(KB_US | KB_SWAPCTRLCAPS, KB_US, ukbd_keydesc_swapctrlcaps),
1039 KBD_MAP(KB_US | KB_IOPENER, KB_US, ukbd_keydesc_iopener),
1040 KBD_MAP(KB_JP | KB_SWAPCTRLCAPS, KB_JP, ukbd_keydesc_swapctrlcaps),
1041 KBD_MAP(KB_FR | KB_SWAPCTRLCAPS, KB_FR, ukbd_keydesc_swapctrlcaps),
1042 KBD_MAP(KB_FR | KB_APPLE | KB_SWAPCTRLCAPS, KB_FR | KB_APPLE,
1043 ukbd_keydesc_swapctrlcaps),
1044 KBD_MAP(KB_BE | KB_SWAPCTRLCAPS, KB_BE, ukbd_keydesc_swapctrlcaps),
1045 KBD_MAP(KB_US | KB_DVORAK | KB_SWAPCTRLCAPS, KB_US | KB_DVORAK,
1046 ukbd_keydesc_swapctrlcaps),
1047 KBD_MAP(KB_US | KB_IOPENER | KB_SWAPCTRLCAPS, KB_US | KB_IOPENER,
1048 ukbd_keydesc_swapctrlcaps),
1049 KBD_MAP(KB_ES, KB_US, ukbd_keydesc_es),
1050 KBD_MAP(KB_BE, KB_US, ukbd_keydesc_be),
1051 KBD_MAP(KB_RU, KB_US, ukbd_keydesc_ru),
1052 KBD_MAP(KB_UA, KB_US, ukbd_keydesc_ua),
1053 KBD_MAP(KB_SG, KB_US, ukbd_keydesc_sg),
1054 KBD_MAP(KB_SG | KB_NODEAD, KB_SG, ukbd_keydesc_sg_nodead),
1055 KBD_MAP(KB_SF, KB_SG, ukbd_keydesc_sf),
1056 KBD_MAP(KB_SF | KB_NODEAD, KB_SF, ukbd_keydesc_sg_nodead),
1057 KBD_MAP(KB_PT, KB_US, ukbd_keydesc_pt),
1058 KBD_MAP(KB_PT | KB_APPLE, KB_PT, ukbd_keydesc_pt_apple),
1059 KBD_MAP(KB_LT, KB_US, ukbd_keydesc_lt),
1060 KBD_MAP(KB_LA, KB_US, ukbd_keydesc_la),
1061 KBD_MAP(KB_BR, KB_US, ukbd_keydesc_br),
1062 KBD_MAP(KB_TR, KB_US, ukbd_keydesc_tr),
1063 KBD_MAP(KB_TR | KB_NODEAD, KB_TR, ukbd_keydesc_tr_nodead),
1064 KBD_MAP(KB_PL, KB_US, ukbd_keydesc_pl),
1065 KBD_MAP(KB_HU, KB_US, ukbd_keydesc_hu),
1066 KBD_MAP(KB_SI, KB_US, ukbd_keydesc_si),
1067 KBD_MAP(KB_CF, KB_US, ukbd_keydesc_cf),
1068 KBD_MAP(KB_CF | KB_NODEAD, KB_CF, ukbd_keydesc_cf_nodead),
1069 KBD_MAP(KB_LV, KB_US, ukbd_keydesc_lv),
1070 KBD_MAP(KB_NL, KB_US, ukbd_keydesc_nl),
1071 KBD_MAP(KB_NL | KB_NODEAD, KB_NL, ukbd_keydesc_nl_nodead),
1072 #endif
1073 {0, 0, 0, 0}
1074 };
1075
1076 #undef KBD_MAP
1077 #undef KC