hilkbdmap.c revision 1.2.4.2 1 1.2.4.2 bouyer /* $OpenBSD: hilkbdmap.c,v 1.7 2005/05/07 22:42:30 miod Exp $ */
2 1.2.4.2 bouyer /*
3 1.2.4.2 bouyer * Copyright (c) 2003, Miodrag Vallat.
4 1.2.4.2 bouyer * All rights reserved.
5 1.2.4.2 bouyer *
6 1.2.4.2 bouyer * Redistribution and use in source and binary forms, with or without
7 1.2.4.2 bouyer * modification, are permitted provided that the following conditions
8 1.2.4.2 bouyer * are met:
9 1.2.4.2 bouyer * 1. Redistributions of source code must retain the above copyright
10 1.2.4.2 bouyer * notice, this list of conditions and the following disclaimer.
11 1.2.4.2 bouyer * 2. Redistributions in binary form must reproduce the above copyright
12 1.2.4.2 bouyer * notice, this list of conditions and the following disclaimer in the
13 1.2.4.2 bouyer * documentation and/or other materials provided with the distribution.
14 1.2.4.2 bouyer *
15 1.2.4.2 bouyer * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
16 1.2.4.2 bouyer * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
17 1.2.4.2 bouyer * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
18 1.2.4.2 bouyer * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
19 1.2.4.2 bouyer * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
20 1.2.4.2 bouyer * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
21 1.2.4.2 bouyer * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
22 1.2.4.2 bouyer * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
23 1.2.4.2 bouyer * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
24 1.2.4.2 bouyer * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
25 1.2.4.2 bouyer * POSSIBILITY OF SUCH DAMAGE.
26 1.2.4.2 bouyer *
27 1.2.4.2 bouyer */
28 1.2.4.2 bouyer
29 1.2.4.2 bouyer #include "opt_wsdisplay_compat.h"
30 1.2.4.2 bouyer
31 1.2.4.2 bouyer #include <sys/types.h>
32 1.2.4.2 bouyer #include <dev/wscons/wsksymdef.h>
33 1.2.4.2 bouyer #include <dev/wscons/wsksymvar.h>
34 1.2.4.2 bouyer #include <dev/hil/hilkbdmap.h>
35 1.2.4.2 bouyer
36 1.2.4.2 bouyer #ifdef WSDISPLAY_COMPAT_RAWKBD
37 1.2.4.2 bouyer
38 1.2.4.2 bouyer /*
39 1.2.4.2 bouyer * Translate HIL keycodes to US keyboard XT scancodes, for proper
40 1.2.4.2 bouyer * X11-over-wsmux operation.
41 1.2.4.2 bouyer *
42 1.2.4.2 bouyer * XXX: Needs re-think how we should treat RAWKBD code on NetBSD.
43 1.2.4.2 bouyer */
44 1.2.4.2 bouyer const uint8_t hilkbd_raw[0x80] = {
45 1.2.4.2 bouyer 0x9d, 0x00, 0xb8, 0x38, 0x36, 0x2a, 0x1d, 0x6a,
46 1.2.4.2 bouyer 0x4b, 0x48, 0x4c, 0x49, 0x4d, 0x47, 0x53, 0x9c,
47 1.2.4.2 bouyer 0x4f, 0xb5, 0x50, 0x4e, 0x51, 0x37, 0x52, 0x4a,
48 1.2.4.2 bouyer 0x30, 0x2f, 0x2e, 0x2d, 0x2c, 0x00, 0x00, 0x01,
49 1.2.4.2 bouyer 0x00, 0x44, 0x00, 0x57, 0x53, 0x43, 0x0f, 0x58,
50 1.2.4.2 bouyer 0x23, 0x22, 0x21, 0x20, 0x1f, 0x1e, 0x00, 0x3a,
51 1.2.4.2 bouyer 0x16, 0x15, 0x14, 0x13, 0x12, 0x11, 0x10, 0x0f,
52 1.2.4.2 bouyer 0x08, 0x07, 0x06, 0x05, 0x04, 0x03, 0x02, 0x29,
53 1.2.4.2 bouyer 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
54 1.2.4.2 bouyer 0x67, 0x3e, 0x3d, 0x3c, 0x3b, 0x00, 0x46, 0x1c,
55 1.2.4.2 bouyer 0x45, 0x3f, 0x40, 0x41, 0x42, 0x00, 0x00, 0x00,
56 1.2.4.2 bouyer 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x00, 0x00,
57 1.2.4.2 bouyer 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x2b, 0xd2, 0xd3,
58 1.2.4.2 bouyer 0x24, 0x25, 0x26, 0x27, 0x28, 0x1c, 0xc7, 0xc9,
59 1.2.4.2 bouyer 0x32, 0x33, 0x34, 0x35, 0x00, 0xcf, 0x00, 0xd1,
60 1.2.4.2 bouyer 0x31, 0x39, 0x00, 0x00, 0xcb, 0xd0, 0xc8, 0xcd
61 1.2.4.2 bouyer };
62 1.2.4.2 bouyer #endif
63 1.2.4.2 bouyer
64 1.2.4.2 bouyer #define KC(n) KS_KEYCODE(n)
65 1.2.4.2 bouyer
66 1.2.4.2 bouyer /*
67 1.2.4.2 bouyer * 1f. US ASCII
68 1.2.4.2 bouyer *
69 1.2.4.2 bouyer * We use the same table for PS/2 and old HIL keyboards, as the only
70 1.2.4.2 bouyer * differences are a few keys which are only present in one of both layouts,
71 1.2.4.2 bouyer * and the one-function-only keypad in the old HIL flavour (hilkbd.c knows
72 1.2.4.2 bouyer * about this and does The Right Thing).
73 1.2.4.2 bouyer */
74 1.2.4.2 bouyer
75 1.2.4.2 bouyer static const keysym_t hilkbd_keydesc_us[] = {
76 1.2.4.2 bouyer /* pos command normal shifted */
77 1.2.4.2 bouyer KC(0), KS_Cmd1, KS_Control_R,
78 1.2.4.2 bouyer KC(2), KS_Cmd2, KS_Mode_switch, KS_Multi_key,
79 1.2.4.2 bouyer KC(3), KS_Cmd2, KS_Alt_L,
80 1.2.4.2 bouyer KC(4), KS_Cmd, KS_Shift_R,
81 1.2.4.2 bouyer KC(5), KS_Cmd, KS_Shift_L,
82 1.2.4.2 bouyer KC(6), KS_Cmd1, KS_Control_L,
83 1.2.4.2 bouyer KC(7), KS_Cmd_Debugger, /* Break/Reset */
84 1.2.4.2 bouyer KC(8), KS_KP_Left, KS_KP_4,
85 1.2.4.2 bouyer KC(9), KS_KP_Up, KS_KP_8,
86 1.2.4.2 bouyer KC(10), KS_KP_Begin, KS_KP_5,
87 1.2.4.2 bouyer KC(11), KS_KP_Prior, KS_KP_9,
88 1.2.4.2 bouyer KC(12), KS_KP_Right, KS_KP_6,
89 1.2.4.2 bouyer KC(13), KS_KP_Home, KS_KP_7,
90 1.2.4.2 bouyer KC(14), KS_KP_Separator,
91 1.2.4.2 bouyer KC(15), KS_KP_Enter,
92 1.2.4.2 bouyer KC(16), KS_KP_End, KS_KP_1,
93 1.2.4.2 bouyer KC(17), KS_KP_Divide,
94 1.2.4.2 bouyer KC(18), KS_KP_Down, KS_KP_2,
95 1.2.4.2 bouyer KC(19), KS_KP_Add,
96 1.2.4.2 bouyer KC(20), KS_KP_Next, KS_KP_3,
97 1.2.4.2 bouyer KC(21), KS_KP_Multiply,
98 1.2.4.2 bouyer KC(22), KS_KP_Insert, KS_KP_0,
99 1.2.4.2 bouyer KC(23), KS_KP_Subtract,
100 1.2.4.2 bouyer KC(24), KS_b,
101 1.2.4.2 bouyer KC(25), KS_v, KS_V, KS_section,
102 1.2.4.2 bouyer KC(26), KS_c, KS_C, KS_ccedilla,
103 1.2.4.2 bouyer KC(27), KS_x, KS_X,
104 1.2.4.2 bouyer KC(28), KS_z, KS_Z, KS_paragraph,
105 1.2.4.2 bouyer /* 29 Kanji Left */
106 1.2.4.2 bouyer
107 1.2.4.2 bouyer KC(31), KS_Cmd_Debugger, KS_Escape, KS_Delete,
108 1.2.4.2 bouyer KC(33), KS_Cmd_Screen9, KS_f10, /* also KS_KP_F2 */
109 1.2.4.2 bouyer KC(35), KS_f11, /* also KS_KP_F3 */
110 1.2.4.2 bouyer KC(36), KS_KP_Delete, KS_KP_Decimal,
111 1.2.4.2 bouyer KC(37), KS_Cmd_Screen8, KS_f9, /* also KS_KP_F1 */
112 1.2.4.2 bouyer KC(38), KS_Tab, /* numeric pad */
113 1.2.4.2 bouyer KC(39), KS_f12, /* also KS_KP_F4 */
114 1.2.4.2 bouyer KC(40), KS_h, KS_H, KS_yen,
115 1.2.4.2 bouyer KC(41), KS_g, KS_G, KS_currency,
116 1.2.4.2 bouyer KC(42), KS_f,
117 1.2.4.2 bouyer KC(43), KS_d, KS_D, KS_eth,
118 1.2.4.2 bouyer KC(44), KS_s, KS_S, KS_ssharp,
119 1.2.4.2 bouyer KC(45), KS_a, KS_A, KS_aring,
120 1.2.4.2 bouyer /* 46 Mode_Switch ??? */
121 1.2.4.2 bouyer KC(47), KS_Caps_Lock,
122 1.2.4.2 bouyer KC(48), KS_u, KS_U, KS_dead_diaeresis,
123 1.2.4.2 bouyer KC(49), KS_y, KS_Y, KS_dead_circumflex,
124 1.2.4.2 bouyer KC(50), KS_t, KS_T, KS_dead_grave,
125 1.2.4.2 bouyer KC(51), KS_r, KS_R, KS_dead_acute,
126 1.2.4.2 bouyer KC(52), KS_e, KS_E, KS_ae,
127 1.2.4.2 bouyer KC(53), KS_w, KS_W, KS_asciitilde,
128 1.2.4.2 bouyer KC(54), KS_q, KS_Q, KS_periodcentered,
129 1.2.4.2 bouyer KC(55), KS_Tab,
130 1.2.4.2 bouyer KC(56), KS_7, KS_ampersand, KS_backslash,
131 1.2.4.2 bouyer KC(57), KS_6, KS_asciicircum, KS_asciicircum,
132 1.2.4.2 bouyer KC(58), KS_5, KS_percent, KS_onehalf,
133 1.2.4.2 bouyer KC(59), KS_4, KS_dollar,
134 1.2.4.2 bouyer KS_onequarter, KS_threequarters,
135 1.2.4.2 bouyer KC(60), KS_3, KS_numbersign, KS_numbersign,
136 1.2.4.2 bouyer KC(61), KS_2, KS_at, KS_at,
137 1.2.4.2 bouyer KC(62), KS_1, KS_exclam, KS_exclamdown,
138 1.2.4.2 bouyer KC(63), KS_grave, KS_asciitilde,
139 1.2.4.2 bouyer KS_guillemotleft,KS_guillemotright,
140 1.2.4.2 bouyer
141 1.2.4.2 bouyer KC(72), KS_Print_Screen, /* Menu */
142 1.2.4.2 bouyer KC(73), KS_Cmd_Screen3, KS_f4,
143 1.2.4.2 bouyer KC(74), KS_Cmd_Screen2, KS_f3,
144 1.2.4.2 bouyer KC(75), KS_Cmd_Screen1, KS_f2,
145 1.2.4.2 bouyer KC(76), KS_Cmd_Screen0, KS_f1,
146 1.2.4.2 bouyer
147 1.2.4.2 bouyer KC(78), KS_Hold_Screen,
148 1.2.4.2 bouyer KC(79), KS_Return, KS_Print_Screen,
149 1.2.4.2 bouyer KC(80), KS_Num_Lock, /* System/User */
150 1.2.4.2 bouyer KC(81), KS_Cmd_Screen4, KS_f5,
151 1.2.4.2 bouyer KC(82), KS_Cmd_Screen5, KS_f6,
152 1.2.4.2 bouyer KC(83), KS_Cmd_Screen6, KS_f7,
153 1.2.4.2 bouyer KC(84), KS_Cmd_Screen7, KS_f8,
154 1.2.4.2 bouyer
155 1.2.4.2 bouyer /* 86 Clear line */
156 1.2.4.2 bouyer KC(87), KS_Clear,
157 1.2.4.2 bouyer KC(88), KS_8, KS_asterisk,
158 1.2.4.2 bouyer KS_bracketleft, KS_braceleft,
159 1.2.4.2 bouyer KC(89), KS_9, KS_parenleft,
160 1.2.4.2 bouyer KS_bracketright,KS_braceright,
161 1.2.4.2 bouyer KC(90), KS_0, KS_parenright, KS_questiondown,
162 1.2.4.2 bouyer KC(91), KS_minus, KS_underscore, KS_macron,
163 1.2.4.2 bouyer KC(92), KS_equal, KS_plus, KS_plusminus,
164 1.2.4.2 bouyer KC(93), KS_Cmd_ResetEmul, KS_Delete, /* Backspace */
165 1.2.4.2 bouyer /* 94 Insert line */
166 1.2.4.2 bouyer /* 95 Delete line */
167 1.2.4.2 bouyer KC(96), KS_i, KS_I, KS_dead_tilde,
168 1.2.4.2 bouyer KC(97), KS_o, KS_O, KS_oslash,
169 1.2.4.2 bouyer KC(98), KS_p, KS_P, KS_thorn,
170 1.2.4.2 bouyer KC(99), KS_bracketleft, KS_braceleft, KS_degree,
171 1.2.4.2 bouyer KC(100), KS_bracketright,KS_braceright,
172 1.2.4.2 bouyer KS_bar, KS_brokenbar,
173 1.2.4.2 bouyer KC(101), KS_backslash, KS_bar, KS_mu,
174 1.2.4.2 bouyer KC(102), KS_Insert,
175 1.2.4.2 bouyer KC(103), KS_Delete,
176 1.2.4.2 bouyer KC(104), KS_j, KS_J, KS_dollar,
177 1.2.4.2 bouyer KC(105), KS_k, KS_K, KS_cent,
178 1.2.4.2 bouyer KC(106), KS_l, KS_L, KS_sterling,
179 1.2.4.2 bouyer KC(107), KS_semicolon, KS_colon,
180 1.2.4.2 bouyer KC(108), KS_apostrophe, KS_quotedbl,
181 1.2.4.2 bouyer KS_grave, KS_apostrophe,
182 1.2.4.2 bouyer KC(109), KS_Return,
183 1.2.4.2 bouyer KC(110), KS_Home,
184 1.2.4.2 bouyer KC(111), KS_Prior,
185 1.2.4.2 bouyer KC(112), KS_m, KS_M, KS_masculine,
186 1.2.4.2 bouyer KC(113), KS_comma, KS_less, KS_less,
187 1.2.4.2 bouyer KC(114), KS_period, KS_greater, KS_greater,
188 1.2.4.2 bouyer KC(115), KS_slash, KS_question, KS_underscore,
189 1.2.4.2 bouyer
190 1.2.4.2 bouyer KC(117), KS_End, /* Select */
191 1.2.4.2 bouyer
192 1.2.4.2 bouyer KC(119), KS_Next,
193 1.2.4.2 bouyer KC(120), KS_n, KS_N, KS_ordfeminine,
194 1.2.4.2 bouyer KC(121), KS_space,
195 1.2.4.2 bouyer
196 1.2.4.2 bouyer /* 123 Kanji Right */
197 1.2.4.2 bouyer KC(124), KS_Left,
198 1.2.4.2 bouyer KC(125), KS_Down,
199 1.2.4.2 bouyer KC(126), KS_Up,
200 1.2.4.2 bouyer KC(127), KS_Right,
201 1.2.4.2 bouyer };
202 1.2.4.2 bouyer
203 1.2.4.2 bouyer /*
204 1.2.4.2 bouyer * 0e. Swedish
205 1.2.4.2 bouyer */
206 1.2.4.2 bouyer
207 1.2.4.2 bouyer static const keysym_t hilkbd_keydesc_sv[] = {
208 1.2.4.2 bouyer KC(56), KS_7, KS_slash, KS_backslash,
209 1.2.4.2 bouyer KC(57), KS_6, KS_ampersand, KS_asciicircum,
210 1.2.4.2 bouyer KC(61), KS_2, KS_quotedbl, KS_at,
211 1.2.4.2 bouyer KC(63), KS_less, KS_greater,
212 1.2.4.2 bouyer KS_guillemotleft,KS_guillemotright,
213 1.2.4.2 bouyer KC(88), KS_8, KS_parenleft, KS_bracketleft, KS_braceleft,
214 1.2.4.2 bouyer KC(89), KS_9, KS_parenright, KS_bracketright,KS_braceright,
215 1.2.4.2 bouyer KC(90), KS_0, KS_equal, KS_exclamdown,
216 1.2.4.2 bouyer KC(91), KS_plus, KS_question, KS_macron,
217 1.2.4.2 bouyer KC(92), KS_eacute, KS_Eacute, KS_plusminus,
218 1.2.4.2 bouyer KC(97), KS_aring, KS_Aring, KS_degree,
219 1.2.4.2 bouyer KC(98), KS_udiaeresis, KS_Udiaeresis, KS_bar, KS_brokenbar,
220 1.2.4.2 bouyer KC(99), KS_apostrophe, KS_asterisk, KS_mu,
221 1.2.4.2 bouyer KC(107), KS_odiaeresis,
222 1.2.4.2 bouyer KC(108), KS_adiaeresis, KS_Adiaeresis, KS_grave, KS_apostrophe,
223 1.2.4.2 bouyer KC(113), KS_comma, KS_semicolon, KS_less,
224 1.2.4.2 bouyer KC(114), KS_period, KS_colon, KS_greater,
225 1.2.4.2 bouyer KC(115), KS_minus, KS_underscore, KS_underscore
226 1.2.4.2 bouyer };
227 1.2.4.2 bouyer
228 1.2.4.2 bouyer static const keysym_t hilkbd_keydesc_sv_nodead[] = {
229 1.2.4.2 bouyer KC(48), KS_u, KS_U, KS_diaeresis,
230 1.2.4.2 bouyer KC(49), KS_y, KS_Y, KS_asciicircum,
231 1.2.4.2 bouyer KC(50), KS_t, KS_T, KS_grave,
232 1.2.4.2 bouyer KC(51), KS_r, KS_R, KS_apostrophe,
233 1.2.4.2 bouyer KC(96), KS_i, KS_I, KS_asciitilde,
234 1.2.4.2 bouyer };
235 1.2.4.2 bouyer
236 1.2.4.2 bouyer static const keysym_t hilkbd_keydesc_sv_ps2[] = {
237 1.2.4.2 bouyer KC(24), KS_b,
238 1.2.4.2 bouyer KC(25), KS_v,
239 1.2.4.2 bouyer KC(26), KS_c,
240 1.2.4.2 bouyer KC(27), KS_x,
241 1.2.4.2 bouyer KC(28), KS_z,
242 1.2.4.2 bouyer KC(36), KS_KP_Separator,KS_KP_Delete,
243 1.2.4.2 bouyer KC(40), KS_h,
244 1.2.4.2 bouyer KC(41), KS_g,
245 1.2.4.2 bouyer KC(42), KS_f,
246 1.2.4.2 bouyer KC(43), KS_d,
247 1.2.4.2 bouyer KC(44), KS_s,
248 1.2.4.2 bouyer KC(45), KS_a,
249 1.2.4.2 bouyer KC(48), KS_u,
250 1.2.4.2 bouyer KC(49), KS_y,
251 1.2.4.2 bouyer KC(50), KS_t,
252 1.2.4.2 bouyer KC(51), KS_r,
253 1.2.4.2 bouyer KC(52), KS_e,
254 1.2.4.2 bouyer KC(53), KS_w,
255 1.2.4.2 bouyer KC(54), KS_q,
256 1.2.4.2 bouyer KC(56), KS_7, KS_slash, KS_braceleft,
257 1.2.4.2 bouyer KC(57), KS_6, KS_ampersand,
258 1.2.4.2 bouyer KC(58), KS_5, KS_percent,
259 1.2.4.2 bouyer KC(59), KS_4, KS_currency, KS_dollar,
260 1.2.4.2 bouyer KC(60), KS_3, KS_numbersign, KS_sterling,
261 1.2.4.2 bouyer KC(61), KS_2, KS_quotedbl, KS_at,
262 1.2.4.2 bouyer KC(62), KS_1, KS_exclam,
263 1.2.4.2 bouyer KC(63), KS_section, KS_onehalf,
264 1.2.4.2 bouyer KC(88), KS_8, KS_parenleft, KS_bracketleft,
265 1.2.4.2 bouyer KC(89), KS_9, KS_parenright, KS_bracketright,
266 1.2.4.2 bouyer KC(90), KS_0, KS_equal, KS_braceright,
267 1.2.4.2 bouyer KC(91), KS_minus, KS_question, KS_backslash,
268 1.2.4.2 bouyer KC(92), KS_dead_acute, KS_dead_grave,
269 1.2.4.2 bouyer KC(96), KS_i,
270 1.2.4.2 bouyer KC(97), KS_o,
271 1.2.4.2 bouyer KC(98), KS_p,
272 1.2.4.2 bouyer KC(99), KS_aring,
273 1.2.4.2 bouyer KC(100), KS_dead_diaeresis,KS_dead_circumflex,KS_dead_tilde,
274 1.2.4.2 bouyer KC(104), KS_j,
275 1.2.4.2 bouyer KC(105), KS_k,
276 1.2.4.2 bouyer KC(106), KS_l,
277 1.2.4.2 bouyer KC(107), KS_odiaeresis,
278 1.2.4.2 bouyer KC(108), KS_adiaeresis,
279 1.2.4.2 bouyer KC(112), KS_m,
280 1.2.4.2 bouyer KC(113), KS_comma, KS_semicolon,
281 1.2.4.2 bouyer KC(114), KS_period, KS_colon,
282 1.2.4.2 bouyer KC(115), KS_minus, KS_underscore,
283 1.2.4.2 bouyer KC(116), KS_apostrophe, KS_asterisk,
284 1.2.4.2 bouyer KC(118), KS_less, KS_greater, KS_bar,
285 1.2.4.2 bouyer KC(120), KS_n
286 1.2.4.2 bouyer };
287 1.2.4.2 bouyer
288 1.2.4.2 bouyer static const keysym_t hilkbd_keydesc_sv_ps2_nodead[] = {
289 1.2.4.2 bouyer KC(92), KS_apostrophe, KS_grave,
290 1.2.4.2 bouyer KC(100), KS_diaeresis, KS_asciicircum, KS_asciitilde,
291 1.2.4.2 bouyer };
292 1.2.4.2 bouyer
293 1.2.4.2 bouyer /*
294 1.2.4.2 bouyer * 0f. German
295 1.2.4.2 bouyer */
296 1.2.4.2 bouyer
297 1.2.4.2 bouyer static const keysym_t hilkbd_keydesc_de[] = {
298 1.2.4.2 bouyer KC(28), KS_y, KS_Y, KS_paragraph,
299 1.2.4.2 bouyer KC(49), KS_z, KS_Z, KS_dead_circumflex,
300 1.2.4.2 bouyer KC(56), KS_7, KS_slash, KS_backslash,
301 1.2.4.2 bouyer KC(57), KS_6, KS_ampersand, KS_asciicircum,
302 1.2.4.2 bouyer KC(60), KS_3, KS_section, KS_numbersign,
303 1.2.4.2 bouyer KC(61), KS_2, KS_quotedbl, KS_at,
304 1.2.4.2 bouyer KC(63), KS_less, KS_greater,
305 1.2.4.2 bouyer KS_guillemotleft,KS_guillemotright,
306 1.2.4.2 bouyer KC(88), KS_8, KS_parenleft,
307 1.2.4.2 bouyer KS_bracketleft, KS_braceleft,
308 1.2.4.2 bouyer KC(89), KS_9, KS_parenright,
309 1.2.4.2 bouyer KS_bracketright,KS_braceright,
310 1.2.4.2 bouyer KC(90), KS_0, KS_equal, KS_exclamdown,
311 1.2.4.2 bouyer KC(91), KS_ssharp, KS_question, KS_macron,
312 1.2.4.2 bouyer KC(92), KS_dead_acute, KS_dead_grave, KS_plusminus,
313 1.2.4.2 bouyer KC(99), KS_udiaeresis, KS_Udiaeresis, KS_dead_abovering,
314 1.2.4.2 bouyer KC(100), KS_plus, KS_asterisk, KS_bar, KS_brokenbar,
315 1.2.4.2 bouyer KC(101), KS_sterling, KS_dead_circumflex,KS_mu,
316 1.2.4.2 bouyer KC(107), KS_odiaeresis,
317 1.2.4.2 bouyer KC(108), KS_adiaeresis, KS_Adiaeresis, KS_grave, KS_apostrophe,
318 1.2.4.2 bouyer KC(113), KS_comma, KS_semicolon, KS_less,
319 1.2.4.2 bouyer KC(114), KS_period, KS_colon, KS_greater,
320 1.2.4.2 bouyer KC(115), KS_minus, KS_underscore, KS_underscore
321 1.2.4.2 bouyer };
322 1.2.4.2 bouyer
323 1.2.4.2 bouyer static const keysym_t hilkbd_keydesc_de_nodead[] = {
324 1.2.4.2 bouyer KC(48), KS_u, KS_U, KS_diaeresis,
325 1.2.4.2 bouyer KC(49), KS_z, KS_Z, KS_asciicircum,
326 1.2.4.2 bouyer KC(50), KS_t, KS_T, KS_grave,
327 1.2.4.2 bouyer KC(51), KS_r, KS_R, KS_apostrophe,
328 1.2.4.2 bouyer KC(92), KS_apostrophe, KS_grave, KS_plusminus,
329 1.2.4.2 bouyer KC(99), KS_udiaeresis, KS_Udiaeresis, KS_degree,
330 1.2.4.2 bouyer KC(101), KS_sterling, KS_asciicircum, KS_mu,
331 1.2.4.2 bouyer KC(96), KS_i, KS_I, KS_asciitilde
332 1.2.4.2 bouyer };
333 1.2.4.2 bouyer
334 1.2.4.2 bouyer static const keysym_t hilkbd_keydesc_de_ps2[] = {
335 1.2.4.2 bouyer KC(24), KS_b,
336 1.2.4.2 bouyer KC(25), KS_v,
337 1.2.4.2 bouyer KC(26), KS_c,
338 1.2.4.2 bouyer KC(27), KS_x,
339 1.2.4.2 bouyer KC(28), KS_y,
340 1.2.4.2 bouyer KC(36), KS_KP_Separator,KS_KP_Delete,
341 1.2.4.2 bouyer KC(40), KS_h,
342 1.2.4.2 bouyer KC(41), KS_g,
343 1.2.4.2 bouyer KC(42), KS_f,
344 1.2.4.2 bouyer KC(43), KS_d,
345 1.2.4.2 bouyer KC(44), KS_s,
346 1.2.4.2 bouyer KC(45), KS_a,
347 1.2.4.2 bouyer KC(48), KS_u,
348 1.2.4.2 bouyer KC(49), KS_z, KS_Z, KS_dead_circumflex,
349 1.2.4.2 bouyer KC(50), KS_t,
350 1.2.4.2 bouyer KC(51), KS_r,
351 1.2.4.2 bouyer KC(52), KS_e,
352 1.2.4.2 bouyer KC(53), KS_w,
353 1.2.4.2 bouyer KC(54), KS_q, KS_Q, KS_at,
354 1.2.4.2 bouyer KC(56), KS_7, KS_slash, KS_braceleft,
355 1.2.4.2 bouyer KC(57), KS_6, KS_ampersand,
356 1.2.4.2 bouyer KC(58), KS_5, KS_percent,
357 1.2.4.2 bouyer KC(59), KS_4, KS_dollar,
358 1.2.4.2 bouyer KC(60), KS_3, KS_section, KS_threesuperior,
359 1.2.4.2 bouyer KC(61), KS_2, KS_quotedbl, KS_twosuperior,
360 1.2.4.2 bouyer KC(62), KS_1, KS_exclam,
361 1.2.4.2 bouyer KC(63), KS_dead_circumflex, KS_dead_abovering,
362 1.2.4.2 bouyer KC(88), KS_8, KS_parenleft, KS_bracketleft,
363 1.2.4.2 bouyer KC(89), KS_9, KS_parenright, KS_bracketright,
364 1.2.4.2 bouyer KC(90), KS_0, KS_equal, KS_braceright,
365 1.2.4.2 bouyer KC(91), KS_ssharp, KS_question, KS_backslash,
366 1.2.4.2 bouyer KC(92), KS_dead_acute, KS_dead_grave,
367 1.2.4.2 bouyer KC(96), KS_i,
368 1.2.4.2 bouyer KC(97), KS_o,
369 1.2.4.2 bouyer KC(98), KS_p,
370 1.2.4.2 bouyer KC(99), KS_udiaeresis,
371 1.2.4.2 bouyer KC(100), KS_plus, KS_asterisk, KS_dead_tilde,
372 1.2.4.2 bouyer KC(104), KS_j,
373 1.2.4.2 bouyer KC(105), KS_k,
374 1.2.4.2 bouyer KC(106), KS_l,
375 1.2.4.2 bouyer KC(107), KS_odiaeresis,
376 1.2.4.2 bouyer KC(108), KS_adiaeresis,
377 1.2.4.2 bouyer KC(112), KS_m, KS_M, KS_mu,
378 1.2.4.2 bouyer KC(113), KS_comma, KS_semicolon,
379 1.2.4.2 bouyer KC(114), KS_period, KS_colon,
380 1.2.4.2 bouyer KC(115), KS_minus, KS_underscore,
381 1.2.4.2 bouyer KC(116), KS_numbersign, KS_apostrophe,
382 1.2.4.2 bouyer KC(118), KS_less, KS_greater, KS_bar,
383 1.2.4.2 bouyer KC(120), KS_n
384 1.2.4.2 bouyer };
385 1.2.4.2 bouyer
386 1.2.4.2 bouyer static const keysym_t hilkbd_keydesc_de_ps2_nodead[] = {
387 1.2.4.2 bouyer KC(49), KS_z, KS_Z, KS_asciicircum,
388 1.2.4.2 bouyer KC(63), KS_asciicircum, KS_degree,
389 1.2.4.2 bouyer KC(92), KS_apostrophe, KS_grave,
390 1.2.4.2 bouyer KC(100), KS_plus, KS_asterisk, KS_asciitilde
391 1.2.4.2 bouyer };
392 1.2.4.2 bouyer
393 1.2.4.2 bouyer /*
394 1.2.4.2 bouyer * 17. English
395 1.2.4.2 bouyer */
396 1.2.4.2 bouyer
397 1.2.4.2 bouyer static const keysym_t hilkbd_keydesc_uk[] = {
398 1.2.4.2 bouyer KC(56), KS_7, KS_asciicircum, KS_backslash,
399 1.2.4.2 bouyer KC(57), KS_6, KS_ampersand, KS_asciicircum,
400 1.2.4.2 bouyer KC(60), KS_3, KS_sterling, KS_numbersign,
401 1.2.4.2 bouyer KC(61), KS_2, KS_quotedbl, KS_at,
402 1.2.4.2 bouyer KC(88), KS_8, KS_parenleft, KS_bracketleft, KS_braceleft,
403 1.2.4.2 bouyer KC(89), KS_9, KS_parenright, KS_bracketright,KS_braceright,
404 1.2.4.2 bouyer KC(90), KS_0, KS_equal, KS_questiondown,
405 1.2.4.2 bouyer KC(91), KS_plus, KS_question, KS_macron,
406 1.2.4.2 bouyer KC(92), KS_apostrophe, KS_slash, KS_plusminus,
407 1.2.4.2 bouyer KC(101), KS_less, KS_greater, KS_mu,
408 1.2.4.2 bouyer KC(107), KS_asterisk, KS_at,
409 1.2.4.2 bouyer KC(108), KS_backslash, KS_bar, KS_grave, KS_apostrophe,
410 1.2.4.2 bouyer KC(113), KS_comma, KS_semicolon, KS_less,
411 1.2.4.2 bouyer KC(114), KS_period, KS_colon, KS_greater,
412 1.2.4.2 bouyer KC(115), KS_minus, KS_underscore, KS_underscore
413 1.2.4.2 bouyer };
414 1.2.4.2 bouyer
415 1.2.4.2 bouyer static const keysym_t hilkbd_keydesc_uk_ps2[] = {
416 1.2.4.2 bouyer KC(24), KS_b,
417 1.2.4.2 bouyer KC(25), KS_v,
418 1.2.4.2 bouyer KC(26), KS_c,
419 1.2.4.2 bouyer KC(27), KS_x,
420 1.2.4.2 bouyer KC(28), KS_z,
421 1.2.4.2 bouyer KC(40), KS_h,
422 1.2.4.2 bouyer KC(41), KS_g,
423 1.2.4.2 bouyer KC(42), KS_f,
424 1.2.4.2 bouyer KC(43), KS_d,
425 1.2.4.2 bouyer KC(44), KS_s,
426 1.2.4.2 bouyer KC(45), KS_a,
427 1.2.4.2 bouyer KC(48), KS_u,
428 1.2.4.2 bouyer KC(49), KS_y,
429 1.2.4.2 bouyer KC(50), KS_t,
430 1.2.4.2 bouyer KC(51), KS_r,
431 1.2.4.2 bouyer KC(52), KS_e,
432 1.2.4.2 bouyer KC(53), KS_w,
433 1.2.4.2 bouyer KC(54), KS_q,
434 1.2.4.2 bouyer KC(56), KS_7, KS_ampersand,
435 1.2.4.2 bouyer KC(57), KS_6, KS_asciicircum,
436 1.2.4.2 bouyer KC(58), KS_5, KS_percent,
437 1.2.4.2 bouyer KC(59), KS_4, KS_dollar,
438 1.2.4.2 bouyer KC(60), KS_3, KS_sterling,
439 1.2.4.2 bouyer KC(61), KS_2, KS_quotedbl,
440 1.2.4.2 bouyer KC(62), KS_1, KS_exclam,
441 1.2.4.2 bouyer KC(63), KS_grave, KS_notsign, KS_bar,
442 1.2.4.2 bouyer KC(88), KS_8, KS_asterisk,
443 1.2.4.2 bouyer KC(89), KS_9, KS_parenleft,
444 1.2.4.2 bouyer KC(90), KS_0, KS_parenright,
445 1.2.4.2 bouyer KC(91), KS_minus, KS_underscore,
446 1.2.4.2 bouyer KC(92), KS_equal, KS_plus,
447 1.2.4.2 bouyer KC(96), KS_i,
448 1.2.4.2 bouyer KC(97), KS_o,
449 1.2.4.2 bouyer KC(98), KS_p,
450 1.2.4.2 bouyer KC(99), KS_bracketleft, KS_braceleft,
451 1.2.4.2 bouyer KC(100), KS_bracketright,KS_braceright,
452 1.2.4.2 bouyer KC(104), KS_j,
453 1.2.4.2 bouyer KC(105), KS_k,
454 1.2.4.2 bouyer KC(106), KS_l,
455 1.2.4.2 bouyer KC(107), KS_semicolon, KS_colon,
456 1.2.4.2 bouyer KC(108), KS_apostrophe, KS_at,
457 1.2.4.2 bouyer KC(112), KS_m,
458 1.2.4.2 bouyer KC(113), KS_comma, KS_less,
459 1.2.4.2 bouyer KC(114), KS_period, KS_greater,
460 1.2.4.2 bouyer KC(115), KS_slash, KS_question,
461 1.2.4.2 bouyer KC(116), KS_numbersign, KS_asciitilde,
462 1.2.4.2 bouyer KC(118), KS_backslash, KS_brokenbar,
463 1.2.4.2 bouyer KC(120), KS_n
464 1.2.4.2 bouyer };
465 1.2.4.2 bouyer
466 1.2.4.2 bouyer /*
467 1.2.4.2 bouyer * 1b. French
468 1.2.4.2 bouyer */
469 1.2.4.2 bouyer
470 1.2.4.2 bouyer static const keysym_t hilkbd_keydesc_fr[] = {
471 1.2.4.2 bouyer KC(28), KS_w, KS_W, KS_paragraph,
472 1.2.4.2 bouyer KC(45), KS_q, KS_Q, KS_aring,
473 1.2.4.2 bouyer KC(53), KS_z, KS_Z, KS_asciitilde,
474 1.2.4.2 bouyer KC(54), KS_a, KS_A, KS_periodcentered,
475 1.2.4.2 bouyer KC(56), KS_egrave, KS_7, KS_backslash,
476 1.2.4.2 bouyer KC(57), KS_section, KS_6, KS_asciicircum,
477 1.2.4.2 bouyer KC(58), KS_parenleft, KS_5, KS_onehalf,
478 1.2.4.2 bouyer KC(59), KS_apostrophe, KS_4, KS_onequarter, KS_threequarters,
479 1.2.4.2 bouyer KC(60), KS_quotedbl, KS_3, KS_numbersign,
480 1.2.4.2 bouyer KC(61), KS_eacute, KS_2, KS_at,
481 1.2.4.2 bouyer KC(62), KS_ampersand, KS_1, KS_exclamdown,
482 1.2.4.2 bouyer KC(63), KS_dollar, KS_sterling,
483 1.2.4.2 bouyer KS_guillemotleft,KS_guillemotright,
484 1.2.4.2 bouyer KC(88), KS_exclam, KS_8, KS_bracketleft, KS_braceleft,
485 1.2.4.2 bouyer KC(89), KS_ccedilla, KS_9, KS_bracketright,KS_braceright,
486 1.2.4.2 bouyer KC(90), KS_agrave, KS_0, KS_questiondown,
487 1.2.4.2 bouyer KC(91), KS_parenright, KS_degree, KS_macron,
488 1.2.4.2 bouyer KC(92), KS_minus, KS_underscore, KS_plusminus,
489 1.2.4.2 bouyer KC(99), KS_dead_circumflex, KS_dead_diaeresis, KS_dead_abovering,
490 1.2.4.2 bouyer KC(100), KS_grave, KS_asterisk, KS_bar, KS_brokenbar,
491 1.2.4.2 bouyer KC(101), KS_less, KS_greater, KS_mu,
492 1.2.4.2 bouyer KC(107), KS_m,
493 1.2.4.2 bouyer KC(108), KS_ugrave, KS_percent, KS_grave, KS_apostrophe,
494 1.2.4.2 bouyer KC(112), KS_comma, KS_question, KS_masculine,
495 1.2.4.2 bouyer KC(113), KS_semicolon, KS_period, KS_less,
496 1.2.4.2 bouyer KC(114), KS_colon, KS_slash, KS_greater,
497 1.2.4.2 bouyer KC(115), KS_equal, KS_plus, KS_underscore
498 1.2.4.2 bouyer };
499 1.2.4.2 bouyer
500 1.2.4.2 bouyer static const keysym_t hilkbd_keydesc_fr_ps2[] = {
501 1.2.4.2 bouyer KC(24), KS_b,
502 1.2.4.2 bouyer KC(25), KS_v,
503 1.2.4.2 bouyer KC(26), KS_c,
504 1.2.4.2 bouyer KC(27), KS_x,
505 1.2.4.2 bouyer KC(28), KS_w,
506 1.2.4.2 bouyer KC(40), KS_h,
507 1.2.4.2 bouyer KC(41), KS_g,
508 1.2.4.2 bouyer KC(42), KS_f,
509 1.2.4.2 bouyer KC(43), KS_d,
510 1.2.4.2 bouyer KC(44), KS_s,
511 1.2.4.2 bouyer KC(45), KS_q,
512 1.2.4.2 bouyer KC(48), KS_u,
513 1.2.4.2 bouyer KC(49), KS_y,
514 1.2.4.2 bouyer KC(50), KS_t,
515 1.2.4.2 bouyer KC(51), KS_r,
516 1.2.4.2 bouyer KC(52), KS_e,
517 1.2.4.2 bouyer KC(53), KS_z,
518 1.2.4.2 bouyer KC(54), KS_a,
519 1.2.4.2 bouyer KC(56), KS_egrave, KS_7, KS_grave,
520 1.2.4.2 bouyer KC(57), KS_minus, KS_6, KS_bar,
521 1.2.4.2 bouyer KC(58), KS_parenleft, KS_5, KS_bracketleft,
522 1.2.4.2 bouyer KC(59), KS_apostrophe, KS_4, KS_braceleft,
523 1.2.4.2 bouyer KC(60), KS_quotedbl, KS_3, KS_numbersign,
524 1.2.4.2 bouyer KC(61), KS_eacute, KS_2, KS_asciitilde,
525 1.2.4.2 bouyer KC(62), KS_ampersand, KS_1,
526 1.2.4.2 bouyer KC(63), KS_twosuperior,
527 1.2.4.2 bouyer KC(88), KS_underscore, KS_8, KS_backslash,
528 1.2.4.2 bouyer KC(89), KS_ccedilla, KS_9, KS_asciicircum,
529 1.2.4.2 bouyer KC(90), KS_agrave, KS_0, KS_at,
530 1.2.4.2 bouyer KC(91), KS_parenright, KS_degree, KS_bracketright,
531 1.2.4.2 bouyer KC(92), KS_equal, KS_plus, KS_braceright,
532 1.2.4.2 bouyer KC(96), KS_i,
533 1.2.4.2 bouyer KC(97), KS_o,
534 1.2.4.2 bouyer KC(98), KS_p,
535 1.2.4.2 bouyer KC(99), KS_dead_circumflex,KS_dead_diaeresis,
536 1.2.4.2 bouyer KC(100), KS_dollar, KS_sterling, KS_currency,
537 1.2.4.2 bouyer KC(104), KS_j,
538 1.2.4.2 bouyer KC(105), KS_k,
539 1.2.4.2 bouyer KC(106), KS_l,
540 1.2.4.2 bouyer KC(107), KS_m,
541 1.2.4.2 bouyer KC(108), KS_ugrave, KS_percent,
542 1.2.4.2 bouyer KC(112), KS_comma, KS_question,
543 1.2.4.2 bouyer KC(113), KS_semicolon, KS_period,
544 1.2.4.2 bouyer KC(114), KS_colon, KS_slash,
545 1.2.4.2 bouyer KC(115), KS_exclam, KS_section,
546 1.2.4.2 bouyer KC(116), KS_asterisk, KS_mu,
547 1.2.4.2 bouyer KC(118), KS_less, KS_greater,
548 1.2.4.2 bouyer KS_guillemotleft,KS_guillemotright,
549 1.2.4.2 bouyer KC(120), KS_n
550 1.2.4.2 bouyer };
551 1.2.4.2 bouyer
552 1.2.4.2 bouyer #define KBD_MAP(name, base, map) \
553 1.2.4.2 bouyer { name, base, sizeof(map)/sizeof(keysym_t), map }
554 1.2.4.2 bouyer
555 1.2.4.2 bouyer const struct wscons_keydesc hilkbd_keydesctab[] = {
556 1.2.4.2 bouyer KBD_MAP(KB_US, 0, hilkbd_keydesc_us),
557 1.2.4.2 bouyer KBD_MAP(KB_DE, KB_US, hilkbd_keydesc_de),
558 1.2.4.2 bouyer KBD_MAP(KB_DE | KB_NODEAD, KB_DE, hilkbd_keydesc_de_nodead),
559 1.2.4.2 bouyer KBD_MAP(KB_FR, KB_US, hilkbd_keydesc_fr),
560 1.2.4.2 bouyer KBD_MAP(KB_UK, KB_US, hilkbd_keydesc_uk),
561 1.2.4.2 bouyer KBD_MAP(KB_SV, KB_US, hilkbd_keydesc_sv),
562 1.2.4.2 bouyer KBD_MAP(KB_SV | KB_NODEAD, KB_SV, hilkbd_keydesc_sv_nodead),
563 1.2.4.2 bouyer {0, 0, 0, 0},
564 1.2.4.2 bouyer };
565 1.2.4.2 bouyer
566 1.2.4.2 bouyer const struct wscons_keydesc hilkbd_keydesctab_ps2[] = {
567 1.2.4.2 bouyer KBD_MAP(KB_US, 0, hilkbd_keydesc_us),
568 1.2.4.2 bouyer KBD_MAP(KB_DE, KB_US, hilkbd_keydesc_de_ps2),
569 1.2.4.2 bouyer KBD_MAP(KB_DE | KB_NODEAD, KB_DE, hilkbd_keydesc_de_ps2_nodead),
570 1.2.4.2 bouyer KBD_MAP(KB_FR, KB_US, hilkbd_keydesc_fr_ps2),
571 1.2.4.2 bouyer KBD_MAP(KB_UK, KB_US, hilkbd_keydesc_uk_ps2),
572 1.2.4.2 bouyer KBD_MAP(KB_SV, KB_US, hilkbd_keydesc_sv_ps2),
573 1.2.4.2 bouyer KBD_MAP(KB_SV | KB_NODEAD, KB_SV, hilkbd_keydesc_sv_ps2_nodead),
574 1.2.4.2 bouyer {0, 0, 0, 0},
575 1.2.4.2 bouyer };
576 1.2.4.2 bouyer
577 1.2.4.2 bouyer /*
578 1.2.4.2 bouyer * Keyboard ID to layout table
579 1.2.4.2 bouyer */
580 1.2.4.2 bouyer const kbd_t hilkbd_layouts[MAXHILKBDLAYOUT] = {
581 1.2.4.2 bouyer -1, /* 00 Undefined or custom layout */
582 1.2.4.2 bouyer -1, /* 01 Undefined */
583 1.2.4.2 bouyer -1, /* 02 Japanese */
584 1.2.4.2 bouyer -1, /* 03 Swiss french */
585 1.2.4.2 bouyer -1, /* 04 Portuguese */
586 1.2.4.2 bouyer -1, /* 05 Arabic */
587 1.2.4.2 bouyer -1, /* 06 Hebrew */
588 1.2.4.2 bouyer -1, /* 07 Canadian English */
589 1.2.4.2 bouyer -1, /* 08 Turkish */
590 1.2.4.2 bouyer -1, /* 09 Greek */
591 1.2.4.2 bouyer -1, /* 0a Thai */
592 1.2.4.2 bouyer -1, /* 0b Italian */
593 1.2.4.2 bouyer -1, /* 0c Korean */
594 1.2.4.2 bouyer -1, /* 0d Dutch */
595 1.2.4.2 bouyer KB_SV, /* 0e Swedish */
596 1.2.4.2 bouyer KB_DE, /* 0f German */
597 1.2.4.2 bouyer -1, /* 10 Simplified Chinese */
598 1.2.4.2 bouyer -1, /* 11 Traditional Chinese */
599 1.2.4.2 bouyer -1, /* 12 Swiss French 2 */
600 1.2.4.2 bouyer -1, /* 13 Euro Spanish */
601 1.2.4.2 bouyer -1, /* 14 Swiss German 2 */
602 1.2.4.2 bouyer -1, /* 15 Belgian */
603 1.2.4.2 bouyer -1, /* 16 Finnish */
604 1.2.4.2 bouyer KB_UK, /* 17 UK English */
605 1.2.4.2 bouyer -1, /* 18 Canadian French */
606 1.2.4.2 bouyer -1, /* 19 Swiss German */
607 1.2.4.2 bouyer -1, /* 1a Norwegian */
608 1.2.4.2 bouyer KB_FR, /* 1b French */
609 1.2.4.2 bouyer -1, /* 1c Danish */
610 1.2.4.2 bouyer -1, /* 1d Katakana */
611 1.2.4.2 bouyer -1, /* 1e Latin Spanish */
612 1.2.4.2 bouyer KB_US, /* 1f US ASCII */
613 1.2.4.2 bouyer };
614