1 /*        $NetBSD: zkbdmap.h,v 1.7 2012/05/07 18:36:16 tsutsui Exp $  */
2 /* $OpenBSD: zaurus_kbdmap.h,v 1.19 2005/05/10 08:26:12 espie Exp $ */
3 
4 /*
5  * Copyright (c) 2005 Dale Rahn <drahn@openbsd.org>
6  *
7  * Permission to use, copy, modify, and distribute this software for any
8  * purpose with or without fee is hereby granted, provided that the above
9  * copyright notice and this permission notice appear in all copies.
10  *
11  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
12  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
13  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
14  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
15  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
16  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
17  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
18  */
19 
20 #define KC(n) KS_KEYCODE(n)
21 
22 static const keysym_t zkbd_keydesc_us[] = {
23     KC(0),          KS_Control_L,
24     KC(2),          KS_Tab,             KS_Tab,             KS_Caps_Lock,
25     KC(3),          KS_Cmd_Screen1,     KS_f2,                                  /* Addr, */
26     KC(4),          KS_Cmd_Screen0,     KS_f1,                                  /* Cal, */
27     KC(5),          KS_Cmd_Screen2,     KS_f3,                                  /* Mail, */
28     KC(6),          KS_Cmd_Screen3,     KS_f4,                                  /* Home, */
29     KC(8),          KS_1,               KS_exclam,
30     KC(9),          KS_2,               KS_quotedbl,
31     KC(10),         KS_q,
32     KC(11),         KS_w,               KS_W,               KS_asciicircum,
33     KC(12),         KS_a,
34     KC(13),         KS_z,
35     KC(14),         KS_Cmd,             KS_Alt_L,
36     KC(16),         KS_Cmd_BrightnessDown,        KS_3,     KS_numbersign,
37     KC(17),         KS_Cmd_BrightnessUp,          KS_4,     KS_dollar,
38     KC(18),         KS_e,               KS_E,               KS_equal,
39     KC(19),         KS_s,
40     KC(20),         KS_d,               KS_D,               KS_grave,
41     KC(21),         KS_x,
42     /* KC(22),      ^/t (right japanese) */
43     KC(24),         KS_5,               KS_percent,
44     KC(25),         KS_r,               KS_R,               KS_plus,
45     KC(26),         KS_t,               KS_T,               KS_bracketleft,
46     KC(27),         KS_f,               KS_F,               KS_backslash,
47     KC(28),         KS_c,
48     KC(29),         KS_minus, KS_minus, KS_at,
49     KC(30),         KS_Cmd_Debugger,KS_Escape,                        /* Cancel, */
50     KC(32),         KS_6,               KS_ampersand,
51     KC(33),         KS_y,               KS_Y,               KS_bracketright,
52     KC(34),         KS_g,               KS_G,               KS_semicolon,
53     KC(35),         KS_v,
54     KC(36),         KS_b,               KS_B,               KS_underscore,
55     KC(37),         KS_space,
56     KC(38),         KS_KP_Enter,                                                /* OK, */
57     KC(40),         KS_7,               KS_apostrophe,
58     KC(41),         KS_8,               KS_parenleft,
59     KC(42),         KS_u,               KS_U,               KS_braceleft,
60     KC(43),         KS_h,               KS_H,               KS_colon,
61     KC(44),         KS_n,
62     KC(45),         KS_comma, KS_slash, KS_less,
63     KC(46),         KS_Cmd_Screen4,     KS_f5,                                  /* Menu, */
64     KC(48),         KS_9,               KS_parenright,
65     KC(49),         KS_i,               KS_I,               KS_braceright,
66     KC(50),         KS_j,               KS_J,               KS_asterisk,
67     KC(51),         KS_m,
68     KC(52),         KS_period,          KS_question,        KS_greater,
69     KC(54),         KS_KP_Left,         KS_KP_Left,         KS_Home,  /* left, */
70     KC(56),         KS_0,               KS_asciitilde,
71     KC(57),         KS_o,
72     KC(58),         KS_k,
73     KC(59),         KS_l,               KS_L,               KS_bar,
74     KC(61),         KS_KP_Up, KS_KP_Up, KS_Prior, /* up, */
75     KC(62),         KS_KP_Down,         KS_KP_Down,         KS_Next,  /* down, */
76     KC(64),         KS_Delete,          KS_BackSpace,
77     KC(65),         KS_p,
78     KC(68),         KS_Return,
79     KC(70),         KS_KP_Right,        KS_KP_Right,        KS_End,             /* right, */
80     KC(80),         KS_KP_Right,                                                /* OK, (ext) */
81     KC(81),         KS_KP_Down,                                                 /* tog left, */
82     KC(83),         KS_Shift_R,
83     KC(84),         KS_Shift_L,
84     KC(88),         KS_KP_Left,                                                 /*Cancel (ext)*/
85     KC(89),         KS_KP_Up,                                         /* tog right, */
86     KC(93),         KS_Mode_switch                                              /* Fn */
87 };
88 
89 static const keysym_t zkbd_keydesc_us_c860[] = {
90     KC(2),          KS_Tab,             KS_Tab,             KS_Caps_Lock,
91     KC(3),          KS_Cmd_Screen0,     KS_f1,                                  /* Cal, */
92     KC(4),          KS_Cmd_Screen1,     KS_f2,                                  /* Addr, */
93     KC(5),          KS_Cmd_Screen2,     KS_f3,                                  /* Mail, */
94     KC(6),          KS_Cmd_Screen3,     KS_f4,                                  /* Home, */
95     KC(7),      KS_Power,                                       /* XXX */
96     KC(8),          KS_1,               KS_exclam,
97     KC(9),          KS_2,               KS_quotedbl,
98     KC(10),         KS_q,
99     KC(11),         KS_w,               KS_W,               KS_asciicircum,
100     KC(12),         KS_a,
101     KC(13),         KS_z,
102     KC(14),         KS_Cmd,             KS_Alt_L,
103     KC(15),         KS_KP_Right,                                                /* OK, (ext) */
104     KC(16),         KS_Cmd_BrightnessDown,        KS_3,     KS_numbersign,
105     KC(17),         KS_Cmd_BrightnessUp,          KS_4,     KS_dollar,
106     KC(18),         KS_e,               KS_E,               KS_equal,
107     KC(19),         KS_s,
108     KC(20),         KS_d,               KS_D,               KS_grave,
109     KC(21),         KS_x,
110     KC(22),         KS_Control_L,
111     KC(23),         KS_KP_Left,                                                 /*Cancel (ext)*/
112     KC(24),         KS_5,               KS_percent,
113     KC(25),         KS_r,               KS_R,               KS_plus,
114     KC(26),         KS_t,               KS_T,               KS_bracketleft,
115     KC(27),         KS_f,               KS_F,               KS_backslash,
116     KC(28),         KS_c,
117     KC(29),         KS_minus, KS_minus, KS_at,
118     KC(30),         KS_Cmd_Debugger,KS_Escape,                        /* Cancel, */
119     KC(31),         KS_KP_Down,                                                 /* tog left, */
120     KC(32),         KS_6,               KS_ampersand,
121     KC(33),         KS_y,               KS_Y,               KS_bracketright,
122     KC(34),         KS_g,               KS_G,               KS_semicolon,
123     KC(35),         KS_v,
124     KC(36),         KS_b,               KS_B,               KS_underscore,
125     KC(37),         KS_space,
126     KC(38),         KS_KP_Enter,                                                /* OK, */
127     KC(39),         KS_KP_Up,                                         /* tog right, */
128     KC(40),         KS_7,               KS_apostrophe,
129     KC(41),         KS_8,               KS_parenleft,
130     KC(42),         KS_u,               KS_U,               KS_braceleft,
131     KC(43),         KS_h,               KS_H,               KS_colon,
132     KC(44),         KS_n,
133     KC(45),         KS_comma, KS_slash, KS_less,
134     KC(46),         KS_Cmd_Screen4,     KS_f5,                                  /* Menu, */
135     KC(48),         KS_9,               KS_parenright,
136     KC(49),         KS_i,               KS_I,               KS_braceright,
137     KC(50),         KS_j,               KS_J,               KS_asterisk,
138     KC(51),         KS_m,
139     KC(52),         KS_period,          KS_question,        KS_greater,
140     KC(54),         KS_KP_Left,         KS_KP_Left,         KS_Home,  /* left, */
141     KC(56),         KS_0,               KS_asciitilde,
142     KC(57),         KS_o,
143     KC(58),         KS_k,
144     KC(59),         KS_l,               KS_L,               KS_bar,
145     KC(61),         KS_KP_Up, KS_KP_Up, KS_Prior, /* up, */
146     KC(62),         KS_KP_Down,         KS_KP_Down,         KS_Next,  /* down, */
147     KC(64),         KS_Delete,          KS_BackSpace,
148     KC(65),         KS_p,
149     KC(68),         KS_Return,
150     KC(70),         KS_KP_Right,        KS_KP_Right,        KS_End,             /* right, */
151     KC(75),         KS_Shift_R,
152     KC(84),         KS_Shift_L,
153     KC(93),         KS_Mode_switch                                              /* Fn */
154 };
155 
156 #ifdef WSDISPLAY_COMPAT_RAWKBD
157 static const char xt_keymap[] = {
158     /* KC(0), */    0x1d, /* KS_Control_L, */
159     /* KC(1), */    0x00, /* NC */
160     /* KC(2), */    0x0f, /* KS_Tab,    KS_Tab,             KS_Caps_Lock, */
161     /* KC(3), */    0x3c, /* KS_Cmd_Screen1,      KS_f2,              Addr, */
162     /* KC(4), */    0x3b, /* KS_Cmd_Screen0,      KS_f1,              Cal, */
163     /* KC(5), */    0x3d, /* KS_Cmd_Screen2,      KS_f3,              Mail, */
164     /* KC(6), */    0x3e, /* KS_Cmd_Screen3,      KS_f4,              Home, */
165     /* KC(7), */    0x00, /* NC */
166     /* KC(8), */    0x02, /* KS_1,      KS_exclam, */
167     /* KC(9), */    0x03, /* KS_2,      KS_quotedbl, */
168     /* KC(10), */   0x10, /* KS_q, */
169     /* KC(11), */   0x11, /* KS_w,      KS_W,     KS_asciicircum, */
170     /* KC(12), */   0x1e, /* KS_a, */
171     /* KC(13), */   0x2c, /* KS_z, */
172     /* KC(14), */   0x38, /* KS_Cmd,    KS_Alt_L, */
173     /* KC(15), */   0x00, /* NC */
174     /* KC(16), */   0x04, /* KS_3,      KS_numbersign, */
175     /* KC(17), */   0x05, /* KS_4,      KS_dollar, */
176     /* KC(18), */   0x12, /* KS_e,      KS_E,     KS_equal, */
177     /* KC(19), */   0x1f, /* KS_s, */
178     /* KC(20), */   0x20, /* KS_d,      KS_D,     KS_grave, */
179     /* KC(21), */   0x2d, /* KS_x, */
180     /* KC(22), */   0x00, /* ^/t (right japanese) */
181     /* KC(23), */   0x00, /* NC */
182     /* KC(24), */   0x06, /* KS_5,      KS_percent, */
183     /* KC(25), */   0x13, /* KS_r,      KS_R,     KS_plus, */
184     /* KC(26), */   0x14, /* KS_t,      KS_T,     KS_bracketleft, */
185     /* KC(27), */   0x21, /* KS_f,      KS_F,     KS_backslash, */
186     /* KC(28), */   0x2e, /* KS_c, */
187     /* KC(29), */   0x0c, /* KS_minus, KS_minus,  KS_at, */
188     /* KC(30), */   0x01, /* KS_Escape, Cancel */
189     /* KC(31), */   0x00, /* NC */
190     /* KC(32), */   0x07, /* KS_6,      KS_ampersand, */
191     /* KC(33), */   0x15, /* KS_y,      KS_Y,     KS_bracketright, */
192     /* KC(34), */   0x22, /* KS_g,      KS_G,     KS_semicolon, */
193     /* KC(35), */   0x2f, /* KS_v, */
194     /* KC(36), */   0x30, /* KS_b,      KS_B,     KS_underscore, */
195     /* KC(37), */   0x39, /* KS_space, */
196     /* KC(38), */   0x9c, /* KS_KP_Enter,         ok */
197     /* KC(39), */   0x00, /* NC */
198     /* KC(40), */   0x08, /* KS_7,      KS_apostrophe, */
199     /* KC(41), */   0x09, /* KS_8,      KS_parenleft, */
200     /* KC(42), */   0x16, /* KS_u,      KS_U,     KS_braceleft, */
201     /* KC(43), */   0x23, /* KS_h,      KS_H,     KS_colon, */
202     /* KC(44), */   0x31, /* KS_n, */
203     /* KC(45), */   0x33, /* KS_comma, KS_slash,  KS_less, */
204     /* KC(46), */   0x3f, /* KS_Cmd_Screen4,      KS_f5,    Menu, */
205     /* KC(47), */   0x00, /* NC */
206     /* KC(48), */   0x0a, /* KS_9,      KS_parenright, */
207     /* KC(49), */   0x17, /* KS_i,      KS_I,     KS_braceright, */
208     /* KC(50), */   0x24, /* KS_j,      KS_J,     KS_asterisk, */
209     /* KC(51), */   0x32, /* KS_m, */
210     /* KC(52), */   0x34, /* KS_period, KS_question, KS_greater, */
211     /* KC(53), */   0x00, /* NC */
212     /* KC(54), */   0xcb, /* KS_KP_Left, left, */
213     /* KC(55), */   0x00, /* NC */
214     /* KC(56), */   0x0b, /* KS_0,      KS_asciitilde, */
215     /* KC(57), */   0x18, /* KS_o, */
216     /* KC(58), */   0x25, /* KS_k, */
217     /* KC(59), */   0x26, /* KS_l,      KS_L,     KS_bar, */
218     /* KC(60), */   0x00, /* NC */
219     /* KC(61), */   0xc8, /* KS_KP_Up, up, */
220     /* KC(62), */   0xd0, /* KS_KP_Down, down, */
221     /* KC(63), */   0x00, /* NC */
222     /* KC(64), */   0x0e, /* KS_Delete, KS_BackSpace, */
223     /* KC(65), */   0x19, /* KS_p, */
224     /* KC(66), */   0x00, /* NC */
225     /* KC(67), */   0x00, /* NC */
226     /* KC(68), */   0x1c, /* KS_Return, */
227     /* KC(69), */   0x00, /* NC */
228     /* KC(70), */   0xcd, /* KS_KP_Right, right, */
229     /* KC(71), */   0x00, /* NC */
230     /* KC(72), */   0x00, /* NC */
231     /* KC(73), */   0x00, /* NC */
232     /* KC(74), */   0x00, /* NC */
233     /* KC(75), */   0x00, /* NC */
234     /* KC(76), */   0x00, /* NC */
235     /* KC(77), */   0x00, /* NC */
236     /* KC(78), */   0x00, /* NC */
237     /* KC(79), */   0x00, /* NC */
238     /* KC(80), */   0xcd, /* KS_KP_Right, OK, (ext) */
239     /* KC(81), */   0xd0, /* KS_KP_Down, tog left, */
240     /* KC(82), */   0x00, /* NC */
241     /* KC(83), */   0x36, /* KS_Shift_R, */
242     /* KC(84), */   0x2a, /* KS_Shift_L, */
243     /* KC(85), */   0x00, /* NC */
244     /* KC(86), */   0x00, /* NC */
245     /* KC(87), */   0x00, /* NC */
246     /* KC(88), */   0xcb, /* KS_KP_Left, cancel (ext), */
247     /* KC(89), */   0xc8, /* KS_KP_Up, tog right, */
248     /* KC(90), */   0x00, /* NC */
249     /* KC(91), */   0x00, /* NC */
250     /* KC(92), */   0x00, /* NC */
251     /* KC(93), */   0xb8, /* KS_Mode_switch Fn */
252 };
253 
254 static const char xt_keymap_c860[] = {
255     /* KC(0), */    0x00, /* NC */
256     /* KC(1), */    0x00, /* NC */
257     /* KC(2), */    0x0f, /* KS_Tab,    KS_Tab,             KS_Caps_Lock, */
258     /* KC(3), */    0x3b, /* KS_Cmd_Screen0,      KS_f1,              Cal, */
259     /* KC(4), */    0x3c, /* KS_Cmd_Screen1,      KS_f2,              Addr, */
260     /* KC(5), */    0x3d, /* KS_Cmd_Screen2,      KS_f3,              Mail, */
261     /* KC(6), */    0x3e, /* KS_Cmd_Screen3,      KS_f4,              Home, */
262     /* KC(7), */    0x00, /* XXX */
263     /* KC(8), */    0x02, /* KS_1,      KS_exclam, */
264     /* KC(9), */    0x03, /* KS_2,      KS_quotedbl, */
265     /* KC(10), */   0x10, /* KS_q, */
266     /* KC(11), */   0x11, /* KS_w,      KS_W,     KS_asciicircum, */
267     /* KC(12), */   0x1e, /* KS_a, */
268     /* KC(13), */   0x2c, /* KS_z, */
269     /* KC(14), */   0x38, /* KS_Cmd,    KS_Alt_L, */
270     /* KC(15), */   0xcd, /* KS_KP_Right, OK, (ext) */
271     /* KC(16), */   0x04, /* KS_3,      KS_numbersign, */
272     /* KC(17), */   0x05, /* KS_4,      KS_dollar, */
273     /* KC(18), */   0x12, /* KS_e,      KS_E,     KS_equal, */
274     /* KC(19), */   0x1f, /* KS_s, */
275     /* KC(20), */   0x20, /* KS_d,      KS_D,     KS_grave, */
276     /* KC(21), */   0x2d, /* KS_x, */
277     /* KC(22), */   0x1d, /* KS_Control_L, */
278     /* KC(23), */   0xcb, /* KS_KP_Left, cancel (ext), */
279     /* KC(24), */   0x06, /* KS_5,      KS_percent, */
280     /* KC(25), */   0x13, /* KS_r,      KS_R,     KS_plus, */
281     /* KC(26), */   0x14, /* KS_t,      KS_T,     KS_bracketleft, */
282     /* KC(27), */   0x21, /* KS_f,      KS_F,     KS_backslash, */
283     /* KC(28), */   0x2e, /* KS_c, */
284     /* KC(29), */   0x0c, /* KS_minus, KS_minus,  KS_at, */
285     /* KC(30), */   0x01, /* KS_Escape, Cancel */
286     /* KC(31), */   0xd0, /* KS_KP_Down, tog left, */
287     /* KC(32), */   0x07, /* KS_6,      KS_ampersand, */
288     /* KC(33), */   0x15, /* KS_y,      KS_Y,     KS_bracketright, */
289     /* KC(34), */   0x22, /* KS_g,      KS_G,     KS_semicolon, */
290     /* KC(35), */   0x2f, /* KS_v, */
291     /* KC(36), */   0x30, /* KS_b,      KS_B,     KS_underscore, */
292     /* KC(37), */   0x39, /* KS_space, */
293     /* KC(38), */   0x9c, /* KS_KP_Enter,         ok */
294     /* KC(39), */   0xc8, /* KS_KP_Up, tog right, */
295     /* KC(40), */   0x08, /* KS_7,      KS_apostrophe, */
296     /* KC(41), */   0x09, /* KS_8,      KS_parenleft, */
297     /* KC(42), */   0x16, /* KS_u,      KS_U,     KS_braceleft, */
298     /* KC(43), */   0x23, /* KS_h,      KS_H,     KS_colon, */
299     /* KC(44), */   0x31, /* KS_n, */
300     /* KC(45), */   0x33, /* KS_comma, KS_slash,  KS_less, */
301     /* KC(46), */   0x3f, /* KS_Cmd_Screen4,      KS_f5,    Menu, */
302     /* KC(47), */   0x00, /* NC */
303     /* KC(48), */   0x0a, /* KS_9,      KS_parenright, */
304     /* KC(49), */   0x17, /* KS_i,      KS_I,     KS_braceright, */
305     /* KC(50), */   0x24, /* KS_j,      KS_J,     KS_asterisk, */
306     /* KC(51), */   0x32, /* KS_m, */
307     /* KC(52), */   0x34, /* KS_period, KS_question, KS_greater, */
308     /* KC(53), */   0x00, /* NC */
309     /* KC(54), */   0xcb, /* KS_KP_Left, left, */
310     /* KC(55), */   0x00, /* NC */
311     /* KC(56), */   0x0b, /* KS_0,      KS_asciitilde, */
312     /* KC(57), */   0x18, /* KS_o, */
313     /* KC(58), */   0x25, /* KS_k, */
314     /* KC(59), */   0x26, /* KS_l,      KS_L,     KS_bar, */
315     /* KC(60), */   0x00, /* NC */
316     /* KC(61), */   0xc8, /* KS_KP_Up, up, */
317     /* KC(62), */   0xd0, /* KS_KP_Down, down, */
318     /* KC(63), */   0x00, /* NC */
319     /* KC(64), */   0x0e, /* KS_Delete, KS_BackSpace, */
320     /* KC(65), */   0x19, /* KS_p, */
321     /* KC(66), */   0x00, /* NC */
322     /* KC(67), */   0x00, /* NC */
323     /* KC(68), */   0x1c, /* KS_Return, */
324     /* KC(69), */   0x00, /* NC */
325     /* KC(70), */   0xcd, /* KS_KP_Right, right, */
326     /* KC(71), */   0x00, /* NC */
327     /* KC(72), */   0x00, /* NC */
328     /* KC(73), */   0x00, /* NC */
329     /* KC(74), */   0x00, /* NC */
330     /* KC(75), */   0x36, /* KS_Shift_R, */
331     /* KC(76), */   0x00, /* NC */
332     /* KC(77), */   0x00, /* NC */
333     /* KC(78), */   0x00, /* NC */
334     /* KC(79), */   0x00, /* NC */
335     /* KC(80), */   0x00, /* NC */
336     /* KC(81), */   0x00, /* NC */
337     /* KC(82), */   0x00, /* NC */
338     /* KC(83), */   0x00, /* NC */
339     /* KC(84), */   0x2a, /* KS_Shift_L, */
340     /* KC(85), */   0x00, /* NC */
341     /* KC(86), */   0x00, /* NC */
342     /* KC(87), */   0x00, /* NC */
343     /* KC(88), */   0x00, /* NC */
344     /* KC(89), */   0x00, /* NC */
345     /* KC(90), */   0x00, /* NC */
346     /* KC(91), */   0x00, /* NC */
347     /* KC(92), */   0x00, /* NC */
348     /* KC(93), */   0xb8, /* KS_Mode_switch Fn */
349 };
350 #endif
351 
352 #define KBD_MAP(name, base, map) \
353                               { (name), (base), __arraycount(map), (map) }
354 
355 static const struct wscons_keydesc zkbd_keydesctab[] = {
356           KBD_MAP(KB_US,                          0,        zkbd_keydesc_us),
357 
358           {0, 0, 0, 0}
359 };
360 
361 static const struct wscons_keydesc zkbd_keydesctab_c860[] = {
362           KBD_MAP(KB_US,                          0,        zkbd_keydesc_us_c860),
363 
364           {0, 0, 0, 0}
365 };
366 
367 #undef KBD_MAP
368 #undef KC
369