Annotation of sys/dev/sun/sunkbdmap.c, Revision 1.1.1.1
1.1 nbrk 1: /* $OpenBSD: sunkbdmap.c,v 1.1 2005/05/14 15:25:20 miod Exp $ */
2:
3: /*
4: * Copyright (c) 2002, 2003 Miodrag Vallat.
5: * Copyright (c) 2002 Jason L. Wright (jason@thought.net)
6: * All rights reserved.
7: *
8: * Redistribution and use in source and binary forms, with or without
9: * modification, are permitted provided that the following conditions
10: * are met:
11: * 1. Redistributions of source code must retain the above copyright
12: * notice, this list of conditions and the following disclaimer.
13: * 2. Redistributions in binary form must reproduce the above copyright
14: * notice, this list of conditions and the following disclaimer in the
15: * documentation and/or other materials provided with the distribution.
16: *
17: * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
18: * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
19: * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
20: * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
21: * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
22: * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
23: * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
24: * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
25: * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
26: * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
27: * POSSIBILITY OF SUCH DAMAGE.
28: *
29: * Effort sponsored in part by the Defense Advanced Research Projects
30: * Agency (DARPA) and Air Force Research Laboratory, Air Force
31: * Materiel Command, USAF, under agreement number F30602-01-2-0537.
32: *
33: */
34:
35: #include <sys/param.h>
36: #include <sys/systm.h>
37: #include <sys/device.h>
38: #include <sys/kernel.h>
39: #include <sys/timeout.h>
40:
41: #include <dev/wscons/wsconsio.h>
42: #include <dev/wscons/wskbdvar.h>
43: #include <dev/wscons/wsksymdef.h>
44: #include <dev/wscons/wsksymvar.h>
45:
46: #include <dev/sun/sunkbdreg.h>
47: #include <dev/sun/sunkbdvar.h>
48:
49: #define KC(n) KS_KEYCODE(n)
50:
51: /* 000/021/022 US English type 4/5 keyboard */
52: const keysym_t sunkbd_keydesc_us[] = {
53: KC(0x01), KS_Cmd,
54: KC(0x02), KS_Cmd_BrightnessDown,
55: KC(0x03), KS_Again,
56: KC(0x04), KS_Cmd_BrightnessUp,
57: KC(0x05), KS_f1,
58: KC(0x06), KS_f2,
59: KC(0x07), KS_f10,
60: KC(0x08), KS_f3,
61: KC(0x09), KS_f11,
62: KC(0x0a), KS_f4,
63: KC(0x0b), KS_f12,
64: KC(0x0c), KS_f5,
65: KC(0x0d), KS_Alt_R,
66: KC(0x0e), KS_f6,
67: KC(0x10), KS_f7,
68: KC(0x11), KS_f8,
69: KC(0x12), KS_f9,
70: KC(0x13), KS_Alt_L,
71: KC(0x14), KS_Up,
72: KC(0x15), KS_Pause,
73: KC(0x16), KS_Print_Screen,
74: KC(0x17), KS_Hold_Screen,
75: KC(0x18), KS_Left,
76: KC(0x19), KS_Props,
77: KC(0x1a), KS_Undo,
78: KC(0x1b), KS_Down,
79: KC(0x1c), KS_Right,
80: KC(0x1d), KS_Escape,
81: KC(0x1e), KS_1, KS_exclam,
82: KC(0x1f), KS_2, KS_at,
83: KC(0x20), KS_3, KS_numbersign,
84: KC(0x21), KS_4, KS_dollar,
85: KC(0x22), KS_5, KS_percent,
86: KC(0x23), KS_6, KS_asciicircum,
87: KC(0x24), KS_7, KS_ampersand,
88: KC(0x25), KS_8, KS_asterisk,
89: KC(0x26), KS_9, KS_parenleft,
90: KC(0x27), KS_0, KS_parenright,
91: KC(0x28), KS_minus, KS_underscore,
92: KC(0x29), KS_equal, KS_plus,
93: KC(0x2a), KS_grave, KS_asciitilde,
94: KC(0x2b), KS_Delete,
95: KC(0x2c), KS_Insert,
96: KC(0x2d), KS_KP_Equal,
97: KC(0x2e), KS_KP_Divide,
98: KC(0x2f), KS_KP_Multiply,
99: KC(0x31), KS_Front,
100: KC(0x32), KS_KP_Delete, KS_KP_Decimal,
101: KC(0x33), KS_Copy,
102: KC(0x34), KS_Home,
103: KC(0x35), KS_Tab,
104: KC(0x36), KS_q,
105: KC(0x37), KS_w,
106: KC(0x38), KS_e,
107: KC(0x39), KS_r,
108: KC(0x3a), KS_t,
109: KC(0x3b), KS_y,
110: KC(0x3c), KS_u,
111: KC(0x3d), KS_i,
112: KC(0x3e), KS_o,
113: KC(0x3f), KS_p,
114: KC(0x40), KS_bracketleft, KS_braceleft,
115: KC(0x41), KS_bracketright,KS_braceright,
116: KC(0x42), KS_Delete,
117: KC(0x43), KS_Multi_key,
118: KC(0x44), KS_KP_Home, KS_KP_7,
119: KC(0x45), KS_KP_Up, KS_KP_8,
120: KC(0x46), KS_KP_Prior, KS_KP_9,
121: KC(0x47), KS_KP_Subtract,
122: KC(0x48), KS_Open,
123: KC(0x49), KS_Paste,
124: KC(0x4a), KS_End,
125: KC(0x4c), KS_Control_L,
126: KC(0x4d), KS_Cmd_Debugger, KS_a,
127: KC(0x4e), KS_s,
128: KC(0x4f), KS_d,
129: KC(0x50), KS_f,
130: KC(0x51), KS_g,
131: KC(0x52), KS_h,
132: KC(0x53), KS_j,
133: KC(0x54), KS_k,
134: KC(0x55), KS_l,
135: KC(0x56), KS_semicolon, KS_colon,
136: KC(0x57), KS_apostrophe, KS_quotedbl,
137: KC(0x58), KS_backslash, KS_bar,
138: KC(0x59), KS_Return,
139: KC(0x5a), KS_KP_Enter,
140: KC(0x5b), KS_KP_Left, KS_KP_4,
141: KC(0x5c), KS_KP_Begin, KS_KP_5,
142: KC(0x5d), KS_KP_Right, KS_KP_6,
143: KC(0x5e), KS_KP_Insert, KS_KP_0,
144: KC(0x5f), KS_Find,
145: KC(0x60), KS_Prior,
146: KC(0x61), KS_Cut,
147: KC(0x62), KS_Num_Lock,
148: KC(0x63), KS_Shift_L,
149: KC(0x64), KS_z,
150: KC(0x65), KS_x,
151: KC(0x66), KS_c,
152: KC(0x67), KS_v,
153: KC(0x68), KS_b,
154: KC(0x69), KS_n,
155: KC(0x6a), KS_m,
156: KC(0x6b), KS_comma, KS_less,
157: KC(0x6c), KS_period, KS_greater,
158: KC(0x6d), KS_slash, KS_question,
159: KC(0x6e), KS_Shift_R,
160: KC(0x6f), KS_Linefeed,
161: KC(0x70), KS_KP_End, KS_KP_1,
162: KC(0x71), KS_KP_Down, KS_KP_2,
163: KC(0x72), KS_KP_Next, KS_KP_3,
164: KC(0x76), KS_Help,
165: KC(0x77), KS_Caps_Lock,
166: KC(0x78), KS_Meta_L,
167: KC(0x79), KS_space,
168: KC(0x7a), KS_Meta_R,
169: KC(0x7b), KS_Next,
170: KC(0x7d), KS_KP_Add,
171: };
172:
173: /* 002 French/Belgian type 4 keyboard */
174: const keysym_t sunkbd_keydesc_befr[] = {
175: KC(0x0d), KS_Caps_Lock,
176: KC(0x0f), KS_bracketright,KS_braceright, KS_guillemotright,
177: KC(0x1e), KS_ampersand, KS_1,
178: KC(0x1f), KS_eacute, KS_2, KS_twosuperior,
179: KC(0x20), KS_quotedbl, KS_3, KS_threesuperior,
180: KC(0x21), KS_apostrophe, KS_4,
181: KC(0x22), KS_parenleft, KS_5,
182: KC(0x23), KS_section, KS_6,
183: KC(0x24), KS_egrave, KS_7,
184: KC(0x25), KS_exclam, KS_8, KS_sterling,
185: KC(0x26), KS_ccedilla, KS_9, KS_backslash,
186: KC(0x27), KS_agrave, KS_0,
187: KC(0x28), KS_parenright, KS_degree, KS_asciitilde,
188: KC(0x29), KS_minus, KS_underscore, KS_numbersign,
189: KC(0x2a), KS_asterisk, KS_bar, KS_currency,
190: KC(0x36), KS_a,
191: KC(0x37), KS_z,
192: KC(0x40), KS_dead_circumflex,KS_dead_diaeresis,
193: KC(0x41), KS_grave, KS_dollar, KS_at,
194: KC(0x4d), KS_Cmd_Debugger, KS_q,
195: KC(0x56), KS_m, KS_M, KS_mu,
196: KC(0x57), KS_ugrave, KS_percent,
197: KC(0x58), KS_bracketleft, KS_braceleft, KS_guillemotleft,
198: KC(0x64), KS_w,
199: KC(0x6a), KS_comma, KS_question,
200: KC(0x6b), KS_semicolon, KS_period,
201: KC(0x6c), KS_colon, KS_slash,
202: KC(0x6d), KS_equal, KS_plus,
203: KC(0x77), KS_Mode_switch,
204: KC(0x7c), KS_less, KS_greater,
205: };
206:
207: /* 023 French type 5 keyboard */
208: const keysym_t sunkbd5_keydesc_fr[] = {
209: KC(0x0d), KS_Mode_switch,
210: KC(0x1e), KS_ampersand, KS_1,
211: KC(0x1f), KS_eacute, KS_2, KS_asciitilde,
212: KC(0x20), KS_quotedbl, KS_3, KS_numbersign,
213: KC(0x21), KS_apostrophe, KS_4, KS_braceleft,
214: KC(0x22), KS_parenleft, KS_5, KS_bracketleft,
215: KC(0x23), KS_minus, KS_6, KS_bar,
216: KC(0x24), KS_egrave, KS_7, KS_grave,
217: KC(0x25), KS_underscore, KS_8, KS_backslash,
218: KC(0x26), KS_ccedilla, KS_9, KS_asciicircum,
219: KC(0x27), KS_agrave, KS_0, KS_at,
220: KC(0x28), KS_parenright, KS_degree, KS_bracketright,
221: KC(0x29), KS_equal, KS_plus, KS_braceright,
222: KC(0x2a), KS_twosuperior,
223: KC(0x36), KS_a,
224: KC(0x37), KS_z,
225: KC(0x40), KS_dead_circumflex,KS_dead_diaeresis,
226: KC(0x41), KS_dollar, KS_sterling, KS_currency,
227: KC(0x4d), KS_Cmd_Debugger, KS_q,
228: KC(0x56), KS_m,
229: KC(0x57), KS_ugrave, KS_percent,
230: KC(0x58), KS_asterisk, KS_mu,
231: KC(0x64), KS_w,
232: KC(0x6a), KS_comma, KS_question,
233: KC(0x6b), KS_semicolon, KS_period,
234: KC(0x6c), KS_colon, KS_slash,
235: KC(0x6d), KS_exclam, KS_section,
236: KC(0x7c), KS_less, KS_greater,
237: };
238:
239: /* 004 Danish type 4 keyboard */
240: const keysym_t sunkbd_keydesc_dk[] = {
241: KC(0x0d), KS_Multi_key,
242: KC(0x0f), KS_asciitilde, KS_asciicircum,
243: KC(0x1f), KS_2, KS_quotedbl, KS_at,
244: KC(0x20), KS_3, KS_numbersign, KS_sterling,
245: KC(0x21), KS_4, KS_currency, KS_dollar,
246: KC(0x23), KS_6, KS_ampersand,
247: KC(0x24), KS_7, KS_slash, KS_braceleft,
248: KC(0x25), KS_8, KS_parenleft, KS_bracketleft,
249: KC(0x26), KS_9, KS_parenright, KS_bracketright,
250: KC(0x27), KS_0, KS_equal, KS_braceright,
251: KC(0x28), KS_plus, KS_question,
252: KC(0x29), KS_dead_acute, KS_dead_grave, KS_bar,
253: KC(0x2a), KS_apostrophe, KS_asterisk, KS_grave,
254: KC(0x40), KS_aring,
255: KC(0x41), KS_dead_diaeresis,KS_dead_circumflex,KS_dead_tilde,
256: KC(0x43), KS_Mode_switch,
257: KC(0x4c), KS_Caps_Lock,
258: KC(0x56), KS_ae,
259: KC(0x57), KS_oslash,
260: KC(0x58), KS_onehalf, KS_section,
261: KC(0x6b), KS_comma, KS_semicolon,
262: KC(0x6c), KS_period, KS_colon,
263: KC(0x6d), KS_minus, KS_underscore,
264: KC(0x77), KS_Control_L,
265: KC(0x7c), KS_less, KS_greater, KS_backslash,
266: };
267:
268: /* 024 Danish type 5 keyboard */
269: const keysym_t sunkbd5_keydesc_dk[] = {
270: KC(0x0d), KS_Mode_switch,
271: KC(0x1f), KS_2, KS_quotedbl, KS_at,
272: KC(0x20), KS_3, KS_numbersign, KS_sterling,
273: KC(0x21), KS_4, KS_currency, KS_dollar,
274: KC(0x22), KS_5, KS_percent, KS_asciitilde,
275: KC(0x23), KS_6, KS_ampersand, KS_asciicircum,
276: KC(0x24), KS_7, KS_slash, KS_braceleft,
277: KC(0x25), KS_8, KS_parenleft, KS_bracketleft,
278: KC(0x26), KS_9, KS_parenright, KS_bracketright,
279: KC(0x27), KS_0, KS_equal, KS_braceright,
280: KC(0x28), KS_plus, KS_question,
281: KC(0x29), KS_dead_acute, KS_dead_grave, KS_bar,
282: KC(0x2a), KS_onehalf, KS_asterisk, KS_grave,
283: KC(0x40), KS_aring,
284: KC(0x41), KS_dead_diaeresis,KS_dead_circumflex,KS_dead_tilde,
285: KC(0x56), KS_ae,
286: KC(0x57), KS_oslash,
287: KC(0x58), KS_backslash, KS_asterisk, KS_grave,
288: KC(0x6b), KS_comma, KS_semicolon,
289: KC(0x6c), KS_period, KS_colon,
290: KC(0x6d), KS_minus, KS_underscore,
291: KC(0x7c), KS_less, KS_greater, KS_backslash,
292: };
293:
294: /* 005 German type 4 keyboard */
295: const keysym_t sunkbd_keydesc_de[] = {
296: KC(0x0d), KS_Alt_L,
297: KC(0x0f), KS_bracketright,KS_braceright, KS_guillemotright,
298: KC(0x13), KS_Mode_switch,
299: KC(0x1f), KS_2, KS_quotedbl, KS_twosuperior,
300: KC(0x20), KS_3, KS_section, KS_threesuperior,
301: KC(0x23), KS_6, KS_ampersand,
302: KC(0x24), KS_7, KS_slash, KS_degree,
303: KC(0x25), KS_8, KS_parenleft, KS_grave,
304: KC(0x26), KS_9, KS_parenright, KS_apostrophe,
305: KC(0x27), KS_0, KS_equal, KS_bar,
306: KC(0x28), KS_ssharp, KS_question, KS_backslash,
307: KC(0x29), KS_dead_acute, KS_dead_grave,
308: KC(0x2a), KS_numbersign, KS_asciicircum, KS_at,
309: KC(0x3b), KS_z,
310: KC(0x40), KS_udiaeresis,
311: KC(0x41), KS_plus, KS_multiply, KS_asciitilde,
312: KC(0x4c), KS_Caps_Lock,
313: KC(0x56), KS_odiaeresis,
314: KC(0x57), KS_adiaeresis,
315: KC(0x58), KS_bracketleft, KS_braceleft, KS_guillemotleft,
316: KC(0x64), KS_y,
317: KC(0x6a), KS_m, KS_M, KS_mu,
318: KC(0x6b), KS_comma, KS_semicolon,
319: KC(0x6c), KS_period, KS_colon,
320: KC(0x6d), KS_minus, KS_underscore,
321: KC(0x77), KS_Control_L,
322: KC(0x7c), KS_less, KS_greater,
323: };
324:
325: /* 025 German type 5 keyboard */
326: const keysym_t sunkbd5_keydesc_de[] = {
327: KC(0x0d), KS_Mode_switch,
328: KC(0x1f), KS_2, KS_quotedbl, KS_twosuperior,
329: KC(0x20), KS_3, KS_section, KS_threesuperior,
330: KC(0x23), KS_6, KS_ampersand,
331: KC(0x24), KS_7, KS_slash, KS_braceleft,
332: KC(0x25), KS_8, KS_parenleft, KS_bracketleft,
333: KC(0x26), KS_9, KS_parenright, KS_bracketright,
334: KC(0x27), KS_0, KS_equal, KS_braceright,
335: KC(0x28), KS_ssharp, KS_question, KS_backslash,
336: KC(0x29), KS_dead_acute, KS_dead_grave,
337: KC(0x2a), KS_asciicircum, KS_degree,
338: KC(0x36), KS_q, KS_Q, KS_at,
339: KC(0x3b), KS_z,
340: KC(0x40), KS_udiaeresis,
341: KC(0x41), KS_plus, KS_multiply, KS_asciitilde,
342: KC(0x56), KS_odiaeresis,
343: KC(0x57), KS_adiaeresis,
344: KC(0x58), KS_numbersign, KS_apostrophe, KS_grave,
345: KC(0x64), KS_y,
346: KC(0x6a), KS_m, KS_M, KS_mu,
347: KC(0x6b), KS_comma, KS_semicolon,
348: KC(0x6c), KS_period, KS_colon,
349: KC(0x6d), KS_minus, KS_underscore,
350: KC(0x7c), KS_less, KS_greater, KS_bar,
351: };
352:
353: /* 006 Italian type 4 keyboard */
354: const keysym_t sunkbd_keydesc_it[] = {
355: KC(0x0d), KS_Mode_switch,
356: KC(0x0f), KS_bracketright,KS_braceright, KS_guillemotright,
357: KC(0x1f), KS_2, KS_quotedbl, KS_twosuperior,
358: KC(0x20), KS_3, KS_sterling, KS_threesuperior,
359: KC(0x23), KS_6, KS_ampersand, KS_notsign,
360: KC(0x24), KS_7, KS_slash,
361: KC(0x25), KS_8, KS_parenleft,
362: KC(0x26), KS_9, KS_parenright, KS_backslash,
363: KC(0x27), KS_0, KS_equal, KS_bar,
364: KC(0x28), KS_apostrophe, KS_question, KS_grave,
365: KC(0x29), KS_igrave, KS_asciicircum,
366: KC(0x2a), KS_ugrave, KS_section,
367: KC(0x40), KS_egrave, KS_eacute,
368: KC(0x41), KS_plus, KS_asterisk, KS_asciitilde,
369: KC(0x4c), KS_Caps_Lock,
370: KC(0x56), KS_ograve, KS_ccedilla, KS_at,
371: KC(0x57), KS_agrave, KS_degree, KS_numbersign,
372: KC(0x58), KS_bracketleft, KS_braceleft, KS_guillemotleft,
373: KC(0x6b), KS_comma, KS_semicolon,
374: KC(0x6c), KS_period, KS_colon,
375: KC(0x6d), KS_minus, KS_underscore,
376: KC(0x77), KS_Control_L,
377: KC(0x7c), KS_less, KS_greater,
378: };
379:
380: /* 026 Italian type 5 keyboard */
381: const keysym_t sunkbd5_keydesc_it[] = {
382: KC(0x0d), KS_Mode_switch,
383: KC(0x1f), KS_2, KS_quotedbl,
384: KC(0x20), KS_3, KS_sterling,
385: KC(0x23), KS_6, KS_ampersand,
386: KC(0x24), KS_7, KS_slash,
387: KC(0x25), KS_8, KS_parenleft, KS_braceleft,
388: KC(0x26), KS_9, KS_parenright, KS_braceright,
389: KC(0x27), KS_0, KS_equal,
390: KC(0x28), KS_apostrophe, KS_question, KS_grave,
391: KC(0x29), KS_igrave, KS_asciicircum,
392: KC(0x2a), KS_backslash, KS_bar,
393: KC(0x40), KS_egrave, KS_eacute, KS_bracketleft,
394: KC(0x41), KS_plus, KS_asterisk, KS_bracketright,
395: KC(0x56), KS_ograve, KS_ccedilla, KS_at,
396: KC(0x57), KS_agrave, KS_degree, KS_numbersign,
397: KC(0x58), KS_ugrave, KS_section, KS_asciitilde,
398: KC(0x6b), KS_comma, KS_semicolon,
399: KC(0x6c), KS_period, KS_colon,
400: KC(0x6d), KS_minus, KS_underscore,
401: KC(0x7c), KS_less, KS_greater,
402: };
403:
404: /* 007 Dutch type 4 keyboard */
405: const keysym_t sunkbd_keydesc_nl[] = {
406: KC(0x0d), KS_Caps_Lock,
407: KC(0x0f), KS_backslash, KS_bar,
408: KC(0x1e), KS_1, KS_exclam, KS_onesuperior,
409: KC(0x1f), KS_2, KS_quotedbl, KS_twosuperior,
410: KC(0x20), KS_3, KS_numbersign, KS_threesuperior,
411: KC(0x21), KS_4, KS_dollar, KS_onequarter,
412: KC(0x22), KS_5, KS_percent, KS_onehalf,
413: KC(0x23), KS_6, KS_ampersand, KS_threequarters,
414: KC(0x24), KS_7, KS_underscore, KS_sterling,
415: KC(0x25), KS_8, KS_parenleft, KS_braceleft,
416: KC(0x26), KS_9, KS_parenright, KS_braceright,
417: KC(0x27), KS_0, KS_apostrophe, KS_grave,
418: KC(0x28), KS_slash, KS_question,
419: KC(0x29), KS_degree, KS_dead_tilde, KS_dead_abovering,
420: KC(0x2a), KS_less, KS_greater,
421: KC(0x40), KS_dead_diaeresis,KS_dead_circumflex,
422: KC(0x41), KS_asterisk, KS_brokenbar, KS_asciitilde,
423: KC(0x4e), KS_s, KS_S, KS_ssharp,
424: KC(0x56), KS_plus, KS_plusminus,
425: KC(0x57), KS_dead_acute, KS_dead_grave,
426: KC(0x58), KS_at, KS_section, KS_notsign,
427: KC(0x64), KS_z, KS_Z, KS_guillemotleft,
428: KC(0x65), KS_x, KS_X, KS_guillemotright,
429: KC(0x66), KS_c, KS_C, KS_cent,
430: KC(0x6a), KS_m, KS_M, KS_mu,
431: KC(0x6b), KS_comma, KS_semicolon,
432: KC(0x6c), KS_period, KS_colon,
433: KC(0x6d), KS_minus, KS_equal,
434: KC(0x77), KS_Mode_switch,
435: KC(0x7d), KS_bracketright,KS_bracketleft,
436: };
437:
438: /* 027 Dutch type 5 keyboard */
439: const keysym_t sunkbd5_keydesc_nl[] = {
440: KC(0x0d), KS_Mode_switch,
441: KC(0x1e), KS_1, KS_exclam, KS_onesuperior,
442: KC(0x1f), KS_2, KS_quotedbl, KS_twosuperior,
443: KC(0x20), KS_3, KS_numbersign, KS_threesuperior,
444: KC(0x21), KS_4, KS_dollar, KS_onequarter,
445: KC(0x22), KS_5, KS_percent, KS_onehalf,
446: KC(0x23), KS_6, KS_ampersand, KS_threequarters,
447: KC(0x24), KS_7, KS_underscore, KS_sterling,
448: KC(0x25), KS_8, KS_parenleft, KS_braceleft,
449: KC(0x26), KS_9, KS_parenright, KS_braceright,
450: KC(0x27), KS_0, KS_apostrophe, KS_grave,
451: KC(0x28), KS_slash, KS_question, KS_backslash,
452: KC(0x29), KS_degree, KS_dead_tilde, KS_dead_abovering,
453: KC(0x2a), KS_at, KS_section, KS_notsign,
454: KC(0x40), KS_dead_diaeresis,KS_dead_circumflex,
455: KC(0x41), KS_asterisk, KS_bar, KS_asciitilde,
456: KC(0x4e), KS_s, KS_S, KS_ssharp,
457: KC(0x56), KS_plus, KS_plusminus,
458: KC(0x57), KS_dead_acute, KS_dead_grave,
459: KC(0x58), KS_less, KS_greater, KS_asciicircum,
460: KC(0x64), KS_z, KS_Z, KS_guillemotleft,
461: KC(0x65), KS_x, KS_X, KS_guillemotright,
462: KC(0x66), KS_c, KS_C, KS_cent,
463: KC(0x6a), KS_m, KS_M, KS_mu,
464: KC(0x6b), KS_comma, KS_semicolon,
465: KC(0x6c), KS_period, KS_colon, KS_hyphen,
466: KC(0x6d), KS_minus, KS_equal,
467: KC(0x7d), KS_bracketright,KS_bracketleft, KS_brokenbar,
468: };
469:
470: /* 008 Norwegian type 4 keyboard */
471: const keysym_t sunkbd_keydesc_no[] = {
472: KC(0x0d), KS_Mode_switch,
473: KC(0x0f), KS_asciitilde, KS_asciicircum,
474: KC(0x1f), KS_2, KS_quotedbl, KS_at,
475: KC(0x20), KS_3, KS_numbersign, KS_sterling,
476: KC(0x21), KS_4, KS_currency, KS_dollar,
477: KC(0x23), KS_6, KS_ampersand,
478: KC(0x24), KS_7, KS_slash, KS_braceleft,
479: KC(0x25), KS_8, KS_parenleft, KS_bracketleft,
480: KC(0x26), KS_9, KS_parenright, KS_bracketright,
481: KC(0x27), KS_0, KS_equal, KS_braceright,
482: KC(0x28), KS_plus, KS_question,
483: KC(0x29), KS_backslash, KS_dead_grave, KS_dead_acute,
484: KC(0x2a), KS_apostrophe, KS_asterisk, KS_grave,
485: KC(0x40), KS_aring,
486: KC(0x41), KS_dead_diaeresis,KS_dead_circumflex,KS_dead_tilde,
487: KC(0x4c), KS_Caps_Lock,
488: KC(0x56), KS_oslash,
489: KC(0x57), KS_ae,
490: KC(0x58), KS_bar, KS_section,
491: KC(0x6b), KS_comma, KS_semicolon,
492: KC(0x6c), KS_period, KS_colon,
493: KC(0x6d), KS_minus, KS_underscore,
494: KC(0x77), KS_Control_L,
495: KC(0x7d), KS_less, KS_greater,
496: };
497:
498: /* 028 Norwegian type 5 keyboard */
499: const keysym_t sunkbd5_keydesc_no[] = {
500: KC(0x0d), KS_Mode_switch,
501: KC(0x1f), KS_2, KS_quotedbl, KS_at,
502: KC(0x20), KS_3, KS_numbersign, KS_sterling,
503: KC(0x21), KS_4, KS_currency, KS_dollar,
504: KC(0x22), KS_5, KS_percent, KS_asciitilde,
505: KC(0x23), KS_6, KS_ampersand, KS_asciicircum,
506: KC(0x24), KS_7, KS_slash, KS_braceleft,
507: KC(0x25), KS_8, KS_parenleft, KS_bracketleft,
508: KC(0x26), KS_9, KS_parenright, KS_bracketright,
509: KC(0x27), KS_0, KS_equal, KS_braceright,
510: KC(0x28), KS_plus, KS_question,
511: KC(0x29), KS_backslash, KS_dead_grave, KS_dead_acute,
512: KC(0x2a), KS_bar, KS_section,
513: KC(0x40), KS_aring,
514: KC(0x41), KS_dead_diaeresis,KS_dead_circumflex,KS_dead_tilde,
515: KC(0x56), KS_oslash,
516: KC(0x57), KS_ae,
517: KC(0x58), KS_apostrophe, KS_asterisk, KS_grave,
518: KC(0x6b), KS_comma, KS_semicolon,
519: KC(0x6c), KS_period, KS_colon,
520: KC(0x6d), KS_minus, KS_underscore,
521: KC(0x7d), KS_less, KS_greater,
522: };
523:
524: /* 009 Portuguese type 4 keyboard */
525: const keysym_t sunkbd_keydesc_pt[] = {
526: KC(0x0d), KS_Mode_switch,
527: KC(0x0f), KS_bracketright,KS_braceright, KS_guillemotright,
528: KC(0x1f), KS_2, KS_quotedbl, KS_at,
529: KC(0x20), KS_3, KS_numbersign, KS_sterling,
530: KC(0x21), KS_4, KS_dollar, KS_section,
531: KC(0x23), KS_6, KS_ampersand, KS_notsign,
532: KC(0x24), KS_7, KS_slash,
533: KC(0x25), KS_8, KS_parenleft,
534: KC(0x26), KS_9, KS_parenright, KS_backslash,
535: KC(0x27), KS_0, KS_equal, KS_bar,
536: KC(0x28), KS_apostrophe, KS_question, KS_grave,
537: KC(0x29), KS_exclamdown, KS_questiondown,
538: KC(0x2a), KS_dead_tilde, KS_dead_circumflex,KS_asciicircum,
539: KC(0x40), KS_dead_diaeresis,KS_asterisk, KS_plus,
540: KC(0x41), KS_dead_acute, KS_dead_grave, KS_asciitilde,
541: KC(0x4c), KS_Caps_Lock,
542: KC(0x56), KS_ccedilla,
543: KC(0x57), KS_masculine, KS_ordfeminine,
544: KC(0x58), KS_bracketleft, KS_braceleft, KS_guillemotleft,
545: KC(0x6b), KS_comma, KS_semicolon,
546: KC(0x6c), KS_period, KS_colon,
547: KC(0x6d), KS_minus, KS_underscore,
548: KC(0x77), KS_Control_L,
549: KC(0x7d), KS_less, KS_greater,
550: };
551:
552: /* 029 Portuguese type 4 keyboard */
553: const keysym_t sunkbd5_keydesc_pt[] = {
554: KC(0x0d), KS_Mode_switch,
555: KC(0x1f), KS_2, KS_quotedbl, KS_at,
556: KC(0x20), KS_3, KS_numbersign, KS_sterling,
557: KC(0x21), KS_4, KS_dollar, KS_section,
558: KC(0x22), KS_5, KS_percent, KS_asciitilde,
559: KC(0x23), KS_6, KS_ampersand, KS_asciicircum,
560: KC(0x24), KS_7, KS_slash, KS_braceleft,
561: KC(0x25), KS_8, KS_parenleft, KS_bracketleft,
562: KC(0x26), KS_9, KS_parenright, KS_bracketright,
563: KC(0x27), KS_0, KS_equal, KS_braceright,
564: KC(0x28), KS_apostrophe, KS_question, KS_grave,
565: KC(0x29), KS_guillemotleft,KS_guillemotright,
566: KC(0x2a), KS_backslash, KS_bar,
567: KC(0x40), KS_plus, KS_asterisk, KS_dead_diaeresis,
568: KC(0x41), KS_dead_acute, KS_dead_grave,
569: KC(0x56), KS_ccedilla,
570: KC(0x57), KS_masculine, KS_ordfeminine,
571: KC(0x58), KS_dead_tilde, KS_dead_circumflex,
572: KC(0x6b), KS_comma, KS_semicolon,
573: KC(0x6c), KS_period, KS_colon,
574: KC(0x6d), KS_minus, KS_underscore,
575: KC(0x7d), KS_less, KS_greater,
576: };
577:
578: /* 00a Spanish type 4 keyboard */
579: const keysym_t sunkbd_keydesc_es[] = {
580: KC(0x0d), KS_Mode_switch,
581: KC(0x0f), KS_bracketright,KS_braceright, KS_guillemotright,
582: KC(0x1f), KS_2, KS_quotedbl, KS_at,
583: KC(0x20), KS_3, KS_hyphen, KS_numbersign,
584: KC(0x22), KS_5, KS_percent, KS_degree,
585: KC(0x23), KS_6, KS_ampersand, KS_notsign,
586: KC(0x24), KS_7, KS_slash,
587: KC(0x25), KS_8, KS_parenleft,
588: KC(0x26), KS_9, KS_parenright, KS_backslash,
589: KC(0x27), KS_0, KS_equal, KS_bar,
590: KC(0x28), KS_apostrophe, KS_question, KS_grave,
591: KC(0x29), KS_exclamdown, KS_questiondown,
592: KC(0x2a), KS_ccedilla,
593: KC(0x3e), KS_o, KS_O, KS_masculine,
594: KC(0x40), KS_dead_grave, KS_dead_circumflex,KS_asciicircum,
595: KC(0x41), KS_plus, KS_asterisk, KS_asciitilde,
596: KC(0x4c), KS_Caps_Lock,
597: KC(0x4d), KS_a, KS_A, KS_ordfeminine,
598: KC(0x56), KS_ntilde,
599: KC(0x57), KS_dead_acute, KS_dead_diaeresis,
600: KC(0x58), KS_bracketleft, KS_braceleft, KS_guillemotleft,
601: KC(0x6b), KS_comma, KS_semicolon,
602: KC(0x6c), KS_period, KS_colon,
603: KC(0x6d), KS_minus, KS_underscore,
604: KC(0x77), KS_Control_L,
605: KC(0x7d), KS_less, KS_greater,
606: };
607:
608: /* 02a Spanish type 5 keyboard */
609: const keysym_t sunkbd5_keydesc_es[] = {
610: KC(0x0d), KS_Mode_switch,
611: KC(0x1e), KS_1, KS_exclam, KS_bar,
612: KC(0x1f), KS_2, KS_quotedbl, KS_at,
613: KC(0x20), KS_3, KS_hyphen, KS_numbersign,
614: KC(0x21), KS_4, KS_dollar, KS_asciicircum,
615: KC(0x22), KS_5, KS_percent, KS_asciitilde,
616: KC(0x23), KS_6, KS_ampersand, KS_notsign,
617: KC(0x24), KS_7, KS_slash,
618: KC(0x25), KS_8, KS_parenleft,
619: KC(0x26), KS_9, KS_parenright,
620: KC(0x27), KS_0, KS_equal,
621: KC(0x28), KS_apostrophe, KS_question, KS_grave,
622: KC(0x29), KS_exclamdown, KS_questiondown,
623: KC(0x2a), KS_masculine, KS_ordfeminine, KS_backslash,
624: KC(0x40), KS_dead_grave, KS_dead_circumflex,KS_bracketleft,
625: KC(0x41), KS_plus, KS_asterisk, KS_bracketright,
626: KC(0x56), KS_ntilde,
627: KC(0x57), KS_dead_acute, KS_dead_diaeresis,KS_braceleft,
628: KC(0x58), KS_ccedilla, KS_Ccedilla, KS_braceright,
629: KC(0x6b), KS_comma, KS_semicolon,
630: KC(0x6c), KS_period, KS_colon,
631: KC(0x6d), KS_minus, KS_underscore,
632: KC(0x7d), KS_less, KS_greater,
633: };
634:
635: /* 00b Swedish/Finnish type 4 keyboard */
636: const keysym_t sunkbd_keydesc_sv[] = {
637: KC(0x0d), KS_Multi_key,
638: KC(0x0f), KS_asciitilde, KS_asciicircum,
639: KC(0x1f), KS_2, KS_quotedbl, KS_at,
640: KC(0x20), KS_3, KS_numbersign, KS_sterling,
641: KC(0x21), KS_4, KS_currency, KS_dollar,
642: KC(0x23), KS_6, KS_ampersand,
643: KC(0x24), KS_7, KS_slash, KS_braceleft,
644: KC(0x25), KS_8, KS_parenleft, KS_bracketleft,
645: KC(0x26), KS_9, KS_parenright, KS_bracketright,
646: KC(0x27), KS_0, KS_equal, KS_braceright,
647: KC(0x28), KS_plus, KS_question, KS_backslash,
648: KC(0x29), KS_dead_acute, KS_dead_grave,
649: KC(0x2a), KS_apostrophe, KS_asterisk, KS_grave,
650: KC(0x40), KS_aring,
651: KC(0x41), KS_dead_diaeresis,KS_dead_circumflex,KS_dead_tilde,
652: KC(0x43), KS_Mode_switch,
653: KC(0x4c), KS_Caps_Lock,
654: KC(0x56), KS_odiaeresis,
655: KC(0x57), KS_adiaeresis,
656: KC(0x58), KS_section, KS_onehalf,
657: KC(0x6b), KS_comma, KS_semicolon,
658: KC(0x6c), KS_period, KS_colon,
659: KC(0x6d), KS_minus, KS_underscore,
660: KC(0x77), KS_Control_L,
661: KC(0x7c), KS_less, KS_greater, KS_bar,
662: };
663:
664: const keysym_t sunkbd_keydesc_sv_nodead[] = {
665: KC(0x29), KS_apostrophe, KS_grave,
666: KC(0x41), KS_diaeresis, KS_asciicircum, KS_asciitilde,
667: };
668:
669: /* 02b Swedish type 5 keyboard */
670: const keysym_t sunkbd5_keydesc_sv[] = {
671: KC(0x0d), KS_Mode_switch,
672: KC(0x0f), KS_asciitilde, KS_asciicircum,
673: KC(0x1f), KS_2, KS_quotedbl, KS_at,
674: KC(0x20), KS_3, KS_numbersign, KS_sterling,
675: KC(0x21), KS_4, KS_currency, KS_dollar,
676: KC(0x23), KS_6, KS_ampersand,
677: KC(0x24), KS_7, KS_slash, KS_braceleft,
678: KC(0x25), KS_8, KS_parenleft, KS_bracketleft,
679: KC(0x26), KS_9, KS_parenright, KS_bracketright,
680: KC(0x27), KS_0, KS_equal, KS_braceright,
681: KC(0x28), KS_plus, KS_question, KS_backslash,
682: KC(0x29), KS_dead_acute, KS_dead_grave,
683: KC(0x2a), KS_section, KS_onehalf,
684: KC(0x40), KS_aring,
685: KC(0x41), KS_dead_diaeresis,KS_dead_circumflex,KS_dead_tilde,
686: KC(0x43), KS_Multi_key,
687: KC(0x4c), KS_Control_L,
688: KC(0x56), KS_odiaeresis,
689: KC(0x57), KS_adiaeresis,
690: KC(0x58), KS_apostrophe, KS_asterisk, KS_grave,
691: KC(0x6b), KS_comma, KS_semicolon,
692: KC(0x6c), KS_period, KS_colon,
693: KC(0x6d), KS_minus, KS_underscore,
694: KC(0x77), KS_Caps_Lock,
695: KC(0x7c), KS_less, KS_greater, KS_bar,
696: };
697:
698: /* 00c Swiss-French type 4 keyboard */
699: const keysym_t sunkbd_keydesc_sf[] = {
700: KC(0x0d), KS_Multi_key,
701: KC(0x0f), KS_greater, KS_braceright,
702: KC(0x1e), KS_1, KS_plus, KS_exclam,
703: KC(0x1f), KS_2, KS_quotedbl, KS_at,
704: KC(0x20), KS_3, KS_asterisk, KS_numbersign,
705: KC(0x21), KS_4, KS_ccedilla, KS_cent,
706: KC(0x22), KS_5, KS_percent, KS_asciitilde,
707: KC(0x23), KS_6, KS_ampersand, KS_section,
708: KC(0x24), KS_7, KS_slash, KS_bar,
709: KC(0x25), KS_8, KS_parenleft, KS_degree,
710: KC(0x26), KS_9, KS_parenright, KS_backslash,
711: KC(0x27), KS_0, KS_equal, KS_asciicircum,
712: KC(0x28), KS_apostrophe, KS_question, KS_grave,
713: KC(0x29), KS_dead_circumflex,KS_dead_grave,
714: KC(0x2a), KS_dollar, KS_dead_tilde, KS_sterling,
715: KC(0x3b), KS_z,
716: KC(0x40), KS_egrave, KS_udiaeresis,
717: KC(0x41), KS_dead_diaeresis,KS_dead_acute,
718: KC(0x43), KS_Mode_switch,
719: KC(0x4c), KS_Caps_Lock,
720: KC(0x56), KS_eacute, KS_odiaeresis,
721: KC(0x57), KS_agrave, KS_adiaeresis,
722: KC(0x58), KS_less, KS_braceleft,
723: KC(0x64), KS_y,
724: KC(0x6a), KS_m, KS_M, KS_mu,
725: KC(0x6b), KS_comma, KS_semicolon,
726: KC(0x6c), KS_period, KS_colon,
727: KC(0x6d), KS_minus, KS_underscore,
728: KC(0x77), KS_Control_L,
729: KC(0x7c), KS_bracketright,KS_bracketleft, KS_backslash,
730: };
731:
732: /* 02c Swiss-French type 5 keyboard */
733: const keysym_t sunkbd5_keydesc_sf[] = {
734: KC(0x0d), KS_Mode_switch,
735: KC(0x1e), KS_1, KS_plus, KS_bar,
736: KC(0x1f), KS_2, KS_quotedbl, KS_at,
737: KC(0x20), KS_3, KS_asterisk, KS_numbersign,
738: KC(0x21), KS_4, KS_ccedilla, KS_asciicircum,
739: KC(0x22), KS_5, KS_percent, KS_asciitilde,
740: KC(0x23), KS_6, KS_ampersand,
741: KC(0x24), KS_7, KS_slash,
742: KC(0x25), KS_8, KS_parenleft,
743: KC(0x26), KS_9, KS_parenright,
744: KC(0x27), KS_0, KS_equal, KS_grave,
745: KC(0x28), KS_apostrophe, KS_question, KS_dead_acute,
746: KC(0x29), KS_dead_circumflex,KS_dead_grave,KS_dead_tilde,
747: KC(0x2a), KS_dollar, KS_degree,
748: KC(0x3b), KS_z,
749: KC(0x40), KS_egrave, KS_udiaeresis, KS_bracketleft,
750: KC(0x41), KS_dead_diaeresis,KS_exclam, KS_bracketright,
751: KC(0x56), KS_eacute, KS_odiaeresis,
752: KC(0x57), KS_agrave, KS_adiaeresis, KS_braceleft,
753: KC(0x58), KS_dollar, KS_sterling, KS_braceright,
754: KC(0x64), KS_y,
755: KC(0x6b), KS_comma, KS_semicolon,
756: KC(0x6c), KS_period, KS_colon,
757: KC(0x6d), KS_minus, KS_underscore,
758: KC(0x7c), KS_less, KS_greater, KS_backslash,
759: };
760:
761: /* 00d Swiss-German type 4 keyboard */
762: const keysym_t sunkbd_keydesc_sg[] = {
763: KC(0x0d), KS_Multi_key,
764: KC(0x0f), KS_greater, KS_braceright,
765: KC(0x1e), KS_1, KS_plus, KS_exclam,
766: KC(0x1f), KS_2, KS_quotedbl, KS_at,
767: KC(0x20), KS_3, KS_asterisk, KS_numbersign,
768: KC(0x21), KS_4, KS_ccedilla, KS_cent,
769: KC(0x22), KS_5, KS_percent, KS_asciitilde,
770: KC(0x23), KS_6, KS_ampersand, KS_section,
771: KC(0x24), KS_7, KS_slash, KS_bar,
772: KC(0x25), KS_8, KS_parenleft, KS_degree,
773: KC(0x26), KS_9, KS_parenright, KS_backslash,
774: KC(0x27), KS_0, KS_equal, KS_asciicircum,
775: KC(0x28), KS_apostrophe, KS_question, KS_grave,
776: KC(0x29), KS_dead_circumflex,KS_dead_grave,
777: KC(0x2a), KS_dollar, KS_dead_tilde, KS_sterling,
778: KC(0x3b), KS_z,
779: KC(0x40), KS_udiaeresis, KS_egrave,
780: KC(0x41), KS_dead_diaeresis,KS_dead_acute,
781: KC(0x43), KS_Mode_switch,
782: KC(0x4c), KS_Caps_Lock,
783: KC(0x56), KS_odiaeresis, KS_eacute,
784: KC(0x57), KS_adiaeresis, KS_agrave,
785: KC(0x58), KS_less, KS_braceleft,
786: KC(0x64), KS_y,
787: KC(0x6a), KS_m, KS_M, KS_mu,
788: KC(0x6b), KS_comma, KS_semicolon,
789: KC(0x6c), KS_period, KS_colon,
790: KC(0x6d), KS_minus, KS_underscore,
791: KC(0x77), KS_Control_L,
792: KC(0x7c), KS_bracketright,KS_bracketleft, KS_backslash,
793: };
794:
795: /* 02d Swiss-German type 5 keyboard */
796: const keysym_t sunkbd5_keydesc_sg[] = {
797: KC(0x0d), KS_Mode_switch,
798: KC(0x1e), KS_1, KS_plus, KS_bar,
799: KC(0x1f), KS_2, KS_quotedbl, KS_at,
800: KC(0x20), KS_3, KS_asterisk, KS_numbersign,
801: KC(0x21), KS_4, KS_ccedilla, KS_asciicircum,
802: KC(0x22), KS_5, KS_percent, KS_asciitilde,
803: KC(0x23), KS_6, KS_ampersand,
804: KC(0x24), KS_7, KS_slash,
805: KC(0x25), KS_8, KS_parenleft,
806: KC(0x26), KS_9, KS_parenright,
807: KC(0x27), KS_0, KS_equal, KS_grave,
808: KC(0x28), KS_apostrophe, KS_question, KS_dead_acute,
809: KC(0x29), KS_dead_circumflex,KS_dead_grave,KS_dead_tilde,
810: KC(0x2a), KS_dollar, KS_degree,
811: KC(0x3b), KS_z,
812: KC(0x40), KS_udiaeresis, KS_egrave, KS_bracketleft,
813: KC(0x41), KS_dead_diaeresis,KS_exclam, KS_bracketright,
814: KC(0x56), KS_odiaeresis, KS_eacute,
815: KC(0x57), KS_adiaeresis, KS_agrave, KS_braceleft,
816: KC(0x58), KS_dollar, KS_sterling, KS_braceright,
817: KC(0x64), KS_y,
818: KC(0x6b), KS_comma, KS_semicolon,
819: KC(0x6c), KS_period, KS_colon,
820: KC(0x6d), KS_minus, KS_underscore,
821: KC(0x7c), KS_less, KS_greater, KS_backslash,
822: };
823:
824: /* 00e UK English type 4 keyboard */
825: const keysym_t sunkbd_keydesc_uk[] = {
826: KC(0x1e), KS_1, KS_exclam, KS_bar,
827: KC(0x21), KS_3, KS_sterling, KS_numbersign,
828: KC(0x28), KS_minus, KS_underscore, KS_notsign,
829: KC(0x43), KS_Mode_switch,
830: };
831:
832: /* 02e UK English type 5 keyboard */
833: const keysym_t sunkbd5_keydesc_uk[] = {
834: KC(0x0d), KS_Mode_switch,
835: KC(0x1f), KS_2, KS_quotedbl,
836: KC(0x20), KS_3, KS_sterling,
837: KC(0x2a), KS_grave, KS_notsign, KS_brokenbar,
838: KC(0x57), KS_apostrophe, KS_at,
839: KC(0x58), KS_numbersign, KS_asciitilde,
840: KC(0x7c), KS_backslash, KS_bar,
841: };
842:
843: /* 031 Japan type 5 keyboard */
844: const keysym_t sunkbd5_keydesc_jp[] = {
845: KC(0x1f), KS_2, KS_quotedbl,
846: KC(0x23), KS_6, KS_ampersand,
847: KC(0x24), KS_7, KS_apostrophe,
848: KC(0x25), KS_8, KS_parenleft,
849: KC(0x26), KS_9, KS_parenright,
850: KC(0x27), KS_0,
851: KC(0x28), KS_minus, KS_equal,
852: KC(0x29), KS_asciicircum, KS_asciitilde,
853: KC(0x2a), KS_yen, KS_bar,
854: KC(0x40), KS_at, KS_grave,
855: KC(0x41), KS_bracketleft, KS_braceleft,
856: KC(0x56), KS_semicolon, KS_plus,
857: KC(0x57), KS_colon, KS_asterisk,
858: KC(0x58), KS_bracketright,KS_braceright,
859: KC(0x7c), KS_backslash, KS_underscore,
860: };
861:
862: #define KBD_MAP(name, base, map) \
863: { name, base, sizeof(map)/sizeof(keysym_t), map }
864:
865: /* Supported type 4 keyboard layouts */
866: const struct wscons_keydesc sunkbd_keydesctab[] = {
867: KBD_MAP(KB_US, 0, sunkbd_keydesc_us),
868: KBD_MAP(KB_BE, KB_US, sunkbd_keydesc_befr),
869: KBD_MAP(KB_DE, KB_US, sunkbd_keydesc_de),
870: KBD_MAP(KB_DK, KB_US, sunkbd_keydesc_dk),
871: KBD_MAP(KB_ES, KB_US, sunkbd_keydesc_es),
872: KBD_MAP(KB_FR, KB_US, sunkbd_keydesc_befr),
873: KBD_MAP(KB_IT, KB_US, sunkbd_keydesc_it),
874: KBD_MAP(KB_NL, KB_US, sunkbd_keydesc_nl),
875: KBD_MAP(KB_NO, KB_US, sunkbd_keydesc_no),
876: KBD_MAP(KB_PT, KB_US, sunkbd_keydesc_pt),
877: KBD_MAP(KB_SF, KB_US, sunkbd_keydesc_sf),
878: KBD_MAP(KB_SG, KB_US, sunkbd_keydesc_sg),
879: KBD_MAP(KB_SV, KB_US, sunkbd_keydesc_sv),
880: KBD_MAP(KB_SV | KB_NODEAD, KB_SV, sunkbd_keydesc_sv_nodead),
881: KBD_MAP(KB_UK, KB_US, sunkbd_keydesc_uk),
882: {0, 0, 0, 0},
883: };
884:
885: /* Supported type 5 keyboard layouts */
886: const struct wscons_keydesc sunkbd5_keydesctab[] = {
887: KBD_MAP(KB_US, 0, sunkbd_keydesc_us),
888: KBD_MAP(KB_DE, KB_US, sunkbd5_keydesc_de),
889: KBD_MAP(KB_DK, KB_US, sunkbd5_keydesc_dk),
890: KBD_MAP(KB_ES, KB_US, sunkbd5_keydesc_es),
891: KBD_MAP(KB_FR, KB_US, sunkbd5_keydesc_fr),
892: KBD_MAP(KB_IT, KB_US, sunkbd5_keydesc_it),
893: KBD_MAP(KB_JP, KB_US, sunkbd5_keydesc_jp),
894: KBD_MAP(KB_NL, KB_US, sunkbd5_keydesc_nl),
895: KBD_MAP(KB_NO, KB_US, sunkbd5_keydesc_no),
896: KBD_MAP(KB_PT, KB_US, sunkbd5_keydesc_pt),
897: KBD_MAP(KB_SF, KB_US, sunkbd5_keydesc_sf),
898: KBD_MAP(KB_SG, KB_US, sunkbd5_keydesc_sg),
899: KBD_MAP(KB_SV, KB_US, sunkbd5_keydesc_sv),
900: KBD_MAP(KB_SV | KB_NODEAD, KB_SV, sunkbd_keydesc_sv_nodead),
901: KBD_MAP(KB_UK, KB_US, sunkbd5_keydesc_uk),
902: {0, 0, 0, 0},
903: };
904:
905: /*
906: * Keyboard layout to ID table
907: * References:
908: * Sun Type 5 Keyboard Supplement Installation Guide, May 1992
909: * http://docs.sun.com/db/doc/806-6642/6jfipqu57?a=view
910: * http://jp.sunsolve.sun.com/handbook_pub/Systems/SSVygr/INPUT_Compact1_Keyboard.html
911: */
912: const int sunkbd_layouts[MAXSUNLAYOUT] = {
913: /* Type 4 layouts */
914: KB_US, /* 000 USA */
915: KB_US, /* 001 same as 000 */
916: KB_BE, /* 002 Belgium/French */
917: -1, /* 003 Canada */
918: KB_DK, /* 004 Denmark */
919: KB_DE, /* 005 Germany */
920: KB_IT, /* 006 Italy */
921: KB_NL, /* 007 The Netherlands */
922: KB_NO, /* 008 Norway */
923: KB_PT, /* 009 Portugal */
924: KB_ES, /* 00a Latin America/Spanish */
925: KB_SV, /* 00b Sweden */
926: KB_SF, /* 00c Switzerland/French */
927: KB_SG, /* 00d Switzerland/German */
928: KB_UK, /* 00e Great Britain */
929: -1, /* 00f unaffected */
930: -1, /* 010 Korea */
931: -1, /* 011 Taiwan */
932: -1, /* 012 unaffected */
933: -1, /* 013 unaffected */
934: -1, /* 014 VT220 */
935: -1, /* 015 VT220 Switzerland/French */
936: -1, /* 016 VT220 Switzerland/German */
937: -1, /* 017 VT220 Switzerland/Italian */
938: -1, /* 018 unaffected */
939: -1, /* 019 Belgium */
940: -1, /* 01a unaffected */
941: -1, /* 01b unaffected */
942: -1, /* 01c unaffected */
943: -1, /* 01d unaffected */
944: -1, /* 01e unaffected */
945: -1, /* 01f unaffected */
946: -1, /* 020 Japan */
947:
948: /* Type 5 layouts */
949: KB_US, /* 021 USA */
950: KB_US, /* 022 UNIX */
951: KB_FR, /* 023 France */
952: KB_DK, /* 024 Denmark */
953: KB_DE, /* 025 Germany */
954: KB_IT, /* 026 Italy */
955: KB_NL, /* 027 The Netherlands */
956: KB_NO, /* 028 Norway */
957: KB_PT, /* 029 Portugal */
958: KB_ES, /* 02a Spain */
959: KB_SV, /* 02b Sweden */
960: KB_SF, /* 02c Switzerland/French */
961: KB_SG, /* 02d Switzerland/German */
962: KB_UK, /* 02e Great Britain */
963: -1, /* 02f Korea */
964: -1, /* 030 Taiwan */
965: KB_JP, /* 031 Japan */
966: -1, /* 032 Canada/French */
967: -1, /* 033 Hungary */
968: -1, /* 034 Poland */
969: -1, /* 035 Czech */
970: -1, /* 036 Russia */
971: -1, /* 037 Latvia */
972: -1, /* 038 Turkey-Q5 */
973: -1, /* 039 Greece */
974: -1, /* 03a Arabic */
975: -1, /* 03b Lithuania */
976: -1, /* 03c Belgium */
977: -1, /* 03d unaffected */
978: -1, /* 03e Turkey-F5 */
979: -1, /* 03f Canada/French */
980:
981: /* Not affected range */
982: -1, /* 040 */
983: -1, /* 041 */
984: -1, /* 042 */
985: -1, /* 043 */
986: -1, /* 044 */
987: -1, /* 045 */
988: -1, /* 046 */
989: -1, /* 047 */
990: -1, /* 048 */
991: -1, /* 049 */
992: -1, /* 04a */
993: -1, /* 04b */
994: -1, /* 04c */
995: -1, /* 04d */
996: -1, /* 04e */
997: -1, /* 04f */
998:
999: /* ``Compact-1'' layouts */
1000: KB_US, /* 050 USA */
1001: KB_US, /* 051 UNIX */
1002: KB_FR, /* 052 France */
1003: KB_DK, /* 053 Denmark */
1004: KB_DE, /* 054 Germany */
1005: KB_IT, /* 055 Italy */
1006: KB_NL, /* 056 The Netherlands */
1007: KB_NO, /* 057 Norway */
1008: KB_PT, /* 058 Portugal */
1009: KB_ES, /* 059 Spain */
1010: KB_SV, /* 05a Sweden */
1011: KB_SF, /* 05b Switzerland/French */
1012: KB_SG, /* 05c Switzerland/German */
1013: KB_UK, /* 05d Great Britain */
1014: -1, /* 05e Korea */
1015: -1, /* 05f Taiwan */
1016: KB_JP, /* 060 Japan */
1017: -1, /* 061 Canada/French */
1018: };
1019:
1020: struct wskbd_mapdata sunkbd_keymapdata = {
1021: sunkbd_keydesctab,
1022: #ifdef SUNKBD_LAYOUT
1023: SUNKBD_LAYOUT,
1024: #else
1025: KB_US,
1026: #endif
1027: };
1028:
1029: struct wskbd_mapdata sunkbd5_keymapdata = {
1030: sunkbd5_keydesctab,
1031: #ifdef SUNKBD5_LAYOUT
1032: SUNKBD5_LAYOUT,
1033: #else
1034: KB_US,
1035: #endif
1036: };
CVSweb