1/*	$NetBSD$	*/
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
22static 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
89static 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
157static 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
254static 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
355static const struct wscons_keydesc zkbd_keydesctab[] = {
356	KBD_MAP(KB_US,			0,	zkbd_keydesc_us),
357
358	{0, 0, 0, 0}
359};
360
361static 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