xref: /netbsd-src/sys/dev/hpc/hpckbdkeymap.h (revision 8b0f9554ff8762542c4defc4f70e1eb76fb508fa)
1 /*	$NetBSD: hpckbdkeymap.h,v 1.47 2007/09/23 11:56:27 kiyohara Exp $	*/
2 
3 /*-
4  * Copyright (c) 1999-2002 The NetBSD Foundation, Inc.
5  * All rights reserved.
6  *
7  * Redistribution and use in source and binary forms, with or without
8  * modification, are permitted provided that the following conditions
9  * are met:
10  * 1. Redistributions of source code must retain the above copyright
11  *    notice, this list of conditions and the following disclaimer.
12  * 2. Redistributions in binary form must reproduce the above copyright
13  *    notice, this list of conditions and the following disclaimer in the
14  *    documentation and/or other materials provided with the distribution.
15  * 3. All advertising materials mentioning features or use of this software
16  *    must display the following acknowledgement:
17  *        This product includes software developed by the NetBSD
18  *        Foundation, Inc. and its contributors.
19  * 4. Neither the name of The NetBSD Foundation nor the names of its
20  *    contributors may be used to endorse or promote products derived
21  *    from this software without specific prior written permission.
22  *
23  * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
24  * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
25  * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
26  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
27  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
28  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
29  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
30  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
31  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
32  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
33  * POSSIBILITY OF SUCH DAMAGE.
34  */
35 
36 #define UNK		255	/* unknown */
37 #define IGN		254	/* ignore */
38 #define SPL		253	/* special key */
39 #define KC(n)		KS_KEYCODE(n)
40 #define CMDMAP(map)	{ map, (sizeof(map)/sizeof(keysym_t)) }
41 #define NULLCMDMAP	{ NULL, 0 }
42 
43 #define KEY_SPECIAL_OFF		0
44 #define KEY_SPECIAL_LIGHT	1
45 
46 const uint8_t default_keymap[] = {
47 /*      0    1    2    3    4    5    6    7 */
48 /* 0 */	UNK, UNK, UNK, UNK, UNK, UNK, UNK, UNK,
49 /* 1 */	UNK, UNK, UNK, UNK, UNK, UNK, UNK, UNK,
50 /* 2 */	UNK, UNK, UNK, UNK, UNK, UNK, UNK, UNK,
51 /* 3 */	UNK, UNK, UNK, UNK, UNK, UNK, UNK, UNK,
52 /* 4 */	UNK, UNK, UNK, UNK, UNK, UNK, UNK, UNK,
53 /* 5 */	UNK, UNK, UNK, UNK, UNK, UNK, UNK, UNK,
54 /* 6 */	UNK, UNK, UNK, UNK, UNK, UNK, UNK, UNK,
55 /* 7 */	UNK, UNK, UNK, UNK, UNK, UNK, UNK, UNK,
56 /* 8 */	UNK, UNK, UNK, UNK, UNK, UNK, UNK, UNK,
57 /* 9 */	UNK, UNK, UNK, UNK, UNK, UNK, UNK, UNK,
58 /*10 */	UNK, UNK, UNK, UNK, UNK, UNK, UNK, UNK,
59 /*11 */	UNK, UNK, UNK, UNK, UNK, UNK, UNK, UNK,
60 /*12 */	UNK, UNK, UNK, UNK, UNK, UNK, UNK, UNK,
61 /*13 */	UNK, UNK, UNK, UNK, UNK, UNK, UNK, UNK,
62 /*14 */	UNK, UNK, UNK, UNK, UNK, UNK, UNK, UNK,
63 /*15 */	UNK, UNK, UNK, UNK, UNK, UNK, UNK, UNK
64 };
65 
66 const int default_special_keymap[] = {
67 	[KEY_SPECIAL_OFF]	= -1,
68 	[KEY_SPECIAL_LIGHT]	= -1
69 };
70 
71 #ifdef hpcmips
72 const uint8_t tc5165_mobilon_keymap[] = {
73 /*      0    1    2    3    4    5    6    7 */
74 /* 0 */	37 , 45 , 44 , UNK, 9  , 51 , 23 , UNK,
75 /* 1 */	UNK, 56 , UNK, UNK, UNK, UNK, UNK, UNK,
76 /* 2 */	UNK, UNK, 29 , UNK, UNK, UNK, UNK, UNK,
77 /* 3 */	24 , 203, UNK, 38 , 10 , 27 , 13 , UNK,
78 /* 4 */	40 , UNK, UNK, 39 , 26 , 53 , 11 , 12 ,
79 /* 5 */	UNK, UNK, UNK, 53 , 25 , UNK, UNK, SPL, /* Light */
80 /* 6 */	208, UNK, UNK, UNK, 52 , UNK, 43 , 14 ,
81 /* 7 */	205, 200, UNK, UNK, SPL, UNK, UNK, 28 , /* Off key */
82 /* 8 */	UNK, 41 , 59 , 15 , 2  , UNK, UNK, UNK,
83 /* 9 */	63 , 64 , 1  , UNK, 65 , 16 , 17 , UNK,
84 /*10 */	60 , UNK, 61 , 62 , 3  , UNK, UNK, UNK,
85 /*11 */	UNK, UNK, UNK, 42 , 58 , UNK, UNK, UNK,
86 /*12 */	47 , 33 , 46 , 5  , 4  , 18 , 19 , UNK,
87 /*13 */	34 , 35 , 20 , 48 , 6  , 7  , 21 , 49 ,
88 /*14 */	22 , 31 , 32 , 36 , 8  , 30 , 50 , 57 ,
89 /*15 */	UNK, IGN, UNK, UNK, UNK, UNK, UNK, UNK /* Windows key */
90 };
91 
92 const int tc5165_mobilon_special_keymap[] = {
93 	[KEY_SPECIAL_OFF]	= -1,	/* 60 */
94 	[KEY_SPECIAL_LIGHT]	= 47
95 };
96 
97 const uint8_t tc5165_telios_jp_keymap[] = {
98 /*      0    1    2    3    4    5    6    7 */
99 /* 0 */	58,  15,  IGN, 1,   IGN, IGN, IGN, IGN,
100 /* 1 */	IGN, IGN, IGN, IGN, 54,  42,  IGN, IGN,
101 /* 2 */	31,  18,  4,   IGN, IGN, 32,  45,  59,
102 /* 3 */	33,  19,  5,   61,  IGN, 46,  123, 60,
103 /* 4 */	35,  21,  8,   64,  IGN, 48,  49,  63,
104 /* 5 */	17,  16,  3,   IGN, 2,   30,  44,  41,
105 /* 6 */	IGN, IGN, IGN, IGN, IGN, IGN, 221, IGN,
106 /* 7 */	IGN, IGN, IGN, IGN, IGN, IGN, 56,  IGN,
107 /* 8 */	34,  20,  7,   IGN, 6,   47,  57,  62,
108 /* 9 */	IGN, IGN, IGN, IGN, IGN, IGN, 29,  IGN,
109 /*10 */	27,  125, 13,  203, 208, 40,  115, 68,
110 /*11 */	39,  26,  25,  112, 12,  52,  53,  67,
111 /*12 */	37,  24,  11,  121, 10,  38,  51,  66,
112 /*13 */	23,  22,  9,   IGN, IGN, 36,  50,  65,
113 /*14 */	28,  43,  14,  200, 205, IGN, IGN, 211,
114 /*15 */	IGN, IGN, IGN, IGN, IGN, IGN, 184, IGN
115 };
116 
117 static const keysym_t tc5165_telios_jp_cmdmap[] = {
118 /*	pos      command		normal		shifted		*/
119 	KC(184), KS_Cmd,		KS_Alt_R,	KS_Multi_key,
120 	KC(205), KS_Cmd_BrightnessUp,	KS_Right,
121 	KC(203), KS_Cmd_BrightnessDown,	KS_Left,
122 	KC(57),  KS_Cmd_BacklightToggle,KS_space,
123 };
124 
125 const uint8_t tc5165_compaq_c_jp_keymap[] = {
126 /*      0    1    2    3    4    5    6    7 */
127 /* 0 */	38,  50,  49,  48,  47,  46,  45,  44,
128 /* 1 */	56,  IGN, IGN, IGN, IGN, IGN, IGN, IGN,
129 /* 2 */	13,  IGN, 112, 121, 123, 41,  28,  57,
130 /* 3 */	205, 203, 208, 200, 39,  53,  52,  51,
131 /* 4 */	24,  25,  40,  IGN, 43,  26,  115, 58,
132 /* 5 */	54,  IGN, IGN, IGN, IGN, IGN, IGN, IGN,
133 /* 6 */	IGN, IGN, IGN, SPL, IGN, IGN, IGN, IGN, /* Light */
134 /* 7 */	IGN, IGN, IGN, IGN, IGN, IGN, IGN, IGN,
135 /* 8 */	42,  IGN, IGN, IGN, IGN, IGN, IGN, IGN,
136 /* 9 */	29,  IGN, IGN, IGN, IGN, IGN, IGN, IGN,
137 /*10 */	221, IGN, IGN, IGN, IGN, IGN, IGN, IGN,
138 /*11 */	221, IGN, IGN, IGN, IGN, IGN, IGN, IGN,
139 /*12 */	14,  27,  12,  11,  10,  15,  1,   125,
140 /*13 */	9,   8,   7,   6,   5,   4,   3,   2,
141 /*14 */	23,  22,  21,  20,  19,  18,  17,  16,
142 /*15 */	37,  36,  35,  34,  33,  32,  31,  30
143 };
144 
145 const int tc5165_compaq_c_jp_special_keymap[] = {
146 	[KEY_SPECIAL_OFF]	= -1, /* don't have off button */
147 	[KEY_SPECIAL_LIGHT]	= 51
148 };
149 
150 const uint8_t m38813c_keymap[] = {
151 /*      0    1    2    3    4    5    6    7 */
152 /* 0 */	0,   1,   2,   3,   4,   5,   6,   7,
153 /* 1 */	8,   9,   10,  11,  12,  13,  14,  15,
154 /* 2 */	16,  17,  18,  19,  20,  21,  22,  23,
155 /* 3 */	24,  25,  26,  27,  28,  29,  30,  31,
156 /* 4 */	32,  33,  34,  35,  36,  37,  38,  39,
157 /* 5 */	40,  41,  42,  43,  44,  45,  46,  47,
158 /* 6 */	48,  49,  50,  51,  52,  53,  54,  55,
159 /* 7 */	56,  57,  58,  59,  60,  61,  62,  63,
160 /* 8 */	64,  65,  66,  67,  68,  69,  70,  71,
161 /* 9 */	200, 73,  74,  203, 76,  205,  78,  79,
162 /*10 */	208, 81,  82,  83,  84,  85,  86,  87,
163 /*11 */	88,  89,  90,  91,  92,  93,  94,  95,
164 /*12 */	96,  97,  98,  99,  100, 101, 102, 103,
165 /*13 */	104, 105, 106, 107, 108, 109, 110, 111,
166 /*14 */	112, 113, 114, 115, 116, 117, 118, 119,
167 /*15 */	120, 121, 122, 123, 124, 125, 126, 127
168 };
169 
170 /* NEC MobileGearII MCR series (Japan) */
171 static uint8_t mcr_jp_keytrans[] = {
172 /*00	right	ent	p	.	y	b	z	space	*/
173 /*08	down	/	o	,	t	v	a	nfer	*/
174 /*10	left	\	i	m	r	c	w	menu	*/
175 /*18	^	-	u	-	e	x	q	1	*/
176 /*20	pgdn	h/z	0	l	:	g	tab	f1	*/
177 /*28	xfer	;	9	n	5	f	2	k	*/
178 /*30	up	[	8	j	4	d	6	-	*/
179 /*38	-	@	7	h	3	]	s	-	*/
180 /*40	caps	-	-	-	bs	fnc	f8	f3	*/
181 /*48	-	alt	-	-	|	k/h	f7	f4	*/
182 /*50	-	-	ctrl	-	f10	pgup	f6	f2	*/
183 /*58	-	-	-	shift	del	f9	f5	esc	*/
184 /*----------------------------------------------------------------------*/
185 /*00*/	205,	 28,	 25,	 52,	 21,	 48,	 44,	 57,
186 /*08*/	208,	 53,	 24,	 51,	 20,	 47,	 30,	123,
187 /*10*/	203,	115,	 23,	 50,	 19,	 46,	 17,	221,
188 /*18*/	 13,	IGN,	 22,	IGN,	 18,	 45,	 16,	  2,
189 /*20*/	 81,	 41,	 11,	 38,	 40,	 34,	 15,	 59,
190 /*28*/	121,	 39,	 10,	 49,	  6,	 33,	  3,	 37,
191 /*30*/	200,	 27,	  9,	 36,	  5,	 32,	  7,	IGN,
192 /*38*/	 12,	 26,	  8,	 35,	  4,	 43,	 31,	IGN,
193 /*40*/	 58,	IGN,	IGN,	IGN,	 14,	184,	 66,	 61,
194 /*48*/	IGN,	 56,	IGN,	IGN,	125,	112,	 65,	 62,
195 /*50*/	IGN,	IGN,	 29,	IGN,	 68,	 73,	 64,	 60,
196 /*58*/	IGN,	IGN,	IGN,	 42,	 14,	 67,	 63,	  1,
197 };
198 
199 static const keysym_t mcr_jp_cmdmap[] = {
200 /*	pos      command		normal		shifted		*/
201 	KC(184), KS_Cmd,		KS_Alt_R,	KS_Multi_key,
202 	KC(73),  KS_Cmd_BrightnessUp,	KS_KP_Prior,	KS_KP_9,
203 	KC(81),  KS_Cmd_BrightnessDown,	KS_KP_Next,	KS_KP_3,
204 	KC(51),  KS_Cmd_ContrastDown,	KS_comma,	KS_less,
205 	KC(52),  KS_Cmd_ContrastUp,	KS_period,	KS_greater,
206 	KC(57),  KS_Cmd_BacklightToggle,KS_space,
207 };
208 
209 /* IBM WorkPad z50 */
210 static uint8_t z50_keytrans[] = {
211 /*00	f1	f3	f5	f7	f9	-	-	f11	*/
212 /*08	f2	f4	f6	f8	f10	-	-	f12	*/
213 /*10	'	[	-	0	p	;	up	/	*/
214 /*18	-	-	-	9	o	l	.	-	*/
215 /*20	left	]	=	8	i	k	,	-	*/
216 /*28	h	y	6	7	u	j	m	n	*/
217 /*30	-	bs	num	del	-	\	ent	sp	*/
218 /*38	g	t	5	4	r	f	v	b	*/
219 /*40	-	-	-	3	e	d	c	right	*/
220 /*48	-	-	-	2	w	s	x	down	*/
221 /*50	esc	tab	~	1	q	a	z	-	*/
222 /*58	menu	Ls	Lc	Rc	La	Ra	Rs	-	*/
223 /*----------------------------------------------------------------------*/
224 /*00*/	 59,	 61,	 63,	 65,	 67,	IGN,	IGN,	 87,
225 /*08*/	 60,	 62,	 64,	 66,	 68,	IGN,	IGN,	 88,
226 /*10*/	 40,	 26,	 12,	 11,	 25,	 39,	200,	 53,
227 /*18*/	IGN,	IGN,	IGN,	 10,	 24,	 38,	 52,	IGN,
228 /*20*/	203,	 27,	 13,	  9,	 23,	 37,	 51,	IGN,
229 /*28*/	 35,	 21,	  7,	  8,	 22,	 36,	 50,	 49,
230 /*30*/	IGN,	 14,	 69,	 14,	IGN,	 43,	 28,	 57,
231 /*38*/	 34,	 20,	  6,	  5,	 19,	 33,	 47,	 48,
232 /*40*/	IGN,	IGN,	IGN,	  4,	 18,	 32,	 46,	205,
233 /*48*/	IGN,	IGN,	IGN,	  3,	 17,	 31,	 45,	208,
234 /*50*/	  1,	 15,	 41,	  2,	 16,	 30,	 44,	IGN,
235 /*58*/	221,	 42,	 29,	 29,	 56,	 56,	 54,	IGN,
236 };
237 
238 /* Sharp Tripad PV6000 and VADEM CLIO */
239 static uint8_t tripad_keytrans[] = {
240 /*00	lsh	tab	`	q	esc	1	WIN	-	*/
241 /*08	ctrl	z	x	a	s	w	e	2	*/
242 /*10	lalt	sp	c	v	d	f	r	3	*/
243 /*18	b	n	g	h	t	y	4	5	*/
244 /*20	m	,	j	k	u	i	6	7	*/
245 /*28	Fn	caps	l	o	p	8	9	0	*/
246 /*30	[	]	la	.	/	;	-	=	*/
247 /*38	rsh	ra	ua	da	'	ent	\	del	*/
248 /*40	-	-	-	-	-	-	-	-	*/
249 /*48	-	-	-	-	-	-	-	-	*/
250 /*50	-	-	-	-	-	-	-	-	*/
251 /*58	-	-	-	-	-	-	-	-	*/
252 /*----------------------------------------------------------------------*/
253 /*00*/	 42,	 15,	 41,	 16,	  1,	  2,	104,	221,
254 /*08*/	 29,	 44,	 45,	 30,	 31,	 17,	 18,	  3,
255 /*10*/	 56,	 57,	 46,	 47,	 32,	 33,	 19,	  4,
256 /*18*/	 48,	 49,	 34,	 35,	 20,	 21,	  5,	  6,
257 /*20*/	 50,	 51,	 36,	 37,	 22,	 23,	  7,	  8,
258 /*28*/	184,	 58,	 38,	 24,	 25,	  9,	 10,	 11,
259 /*30*/	 26,	 27,	203,	 52,	 53,	 39,	 12,	 13,
260 /*38*/	 54,	205,	200,	208,	 40,	 28,	 43,	 14,
261 /*40*/	IGN,	IGN,	IGN,	IGN,	IGN,	IGN,	IGN,	IGN,
262 /*48*/	IGN,	IGN,	IGN,	IGN,	IGN,	IGN,	IGN,	IGN,
263 /*50*/	IGN,	IGN,	IGN,	IGN,	IGN,	IGN,	IGN,	IGN,
264 /*58*/	IGN,	IGN,	IGN,	IGN,	IGN,	IGN,	IGN,	IGN,
265 };
266 
267 static const keysym_t tripad_cmdmap[] = {
268 /*  pos      command		normal		shifted		fn    */
269 KC(2),	 KS_Cmd_Screen0,	KS_1,		KS_exclam,	KS_f1,
270 KC(3),	 KS_Cmd_Screen1,	KS_2,		KS_at,		KS_f2,
271 KC(4),	 KS_Cmd_Screen2,	KS_3,		KS_numbersign,	KS_f3,
272 KC(5),	 KS_Cmd_Screen3,	KS_4,		KS_dollar,	KS_f4,
273 KC(6),	 KS_Cmd_Screen4,	KS_5,		KS_percent,	KS_f5,
274 KC(7),	 KS_Cmd_Screen5,	KS_6,		KS_asciicircum,	KS_f6,
275 KC(8),	 KS_Cmd_Screen6,	KS_7,		KS_ampersand,	KS_f7,
276 KC(9),	 KS_Cmd_Screen7,	KS_8,		KS_asterisk,	KS_f8,
277 KC(10),  KS_Cmd_Screen8,	KS_9,		KS_parenleft,	KS_f9,
278 KC(11),  KS_Cmd_Screen9,	KS_0,		KS_parenright,	KS_f10,
279 KC(12),  KS_Cmd_BrightnessDown,	KS_minus,	KS_underscore,	KS_f11,
280 KC(13),  KS_Cmd_BrightnessUp,	KS_equal,	KS_plus,	KS_f12,
281 KC(20),  KS_Cmd_BacklightToggle, KS_t,
282 KC(33),  KS_Cmd_BacklightOff,	KS_f,
283 KC(49),  KS_Cmd_BacklightOn,	KS_n,
284 KC(51),  KS_Cmd_ContrastDown,	KS_comma,	KS_less,
285 KC(52),  KS_Cmd_ContrastUp,	KS_period,	KS_greater,
286 KC(184), KS_Mode_switch,	KS_Multi_key,
287 KC(200), KS_Cmd_ScrollSlowUp,	KS_Up,		KS_Up,		KS_Prior,
288 KC(203), KS_Cmd_ScrollFastUp,	KS_Left,	KS_Left,	KS_Home,
289 KC(205), KS_Cmd_ScrollFastDown,	KS_Right,	KS_Right,	KS_End,
290 KC(208), KS_Cmd_ScrollSlowDown,	KS_Down,	KS_Down,	KS_Next,
291 };
292 
293 /* NEC Mobile Gear MCCS series */
294 static uint8_t mccs_keytrans[] = {
295 /*00	caps	cr	rar	p	.	y	b	z	*/
296 /*08	alt	[	dar	o	,	t	v	a	*/
297 /*10	zen	@	lar	i	m	r	c	w	*/
298 /*18	lctrl	;	uar	u	n	e	x	q	*/
299 /*20	lshft	bs	\	0	l	6	g	tab	*/
300 /*28	nconv	|	/	9	k	5	f	2	*/
301 /*30	conv	=	]	8	j	4	d	1	*/
302 /*38	hira	-	'	7	h	3	s	esc	*/
303 /*40	-	sp	-	-	-	-	-	-	*/
304 /*48	-	-	-	-	-	-	-	-	*/
305 /*50	-	-	-	-	-	-	-	-	*/
306 /*58	-	-	-	-	-	-	-	-	*/
307 /*----------------------------------------------------------------------*/
308 /*00*/	 58,	 28,	205,	 25,	 52,	 21,	 48,	 44,
309 /*08*/	 56,	 27,	208,	 24,	 51,	 20,	 47,	 30,
310 /*10*/	 41,	 26,	203,	 23,	 50,	 19,	 46,	 17,
311 /*18*/	 29,	 39,	200,	 22,	 49,	 18,	 45,	 16,
312 /*20*/	 42,	 14,	115,	 11,	 38,	  7,	 34,	 15,
313 /*28*/	123,	125,	 53,	 10,	 37,	  6,	 33,	  3,
314 /*30*/	121,	 13,	 43,	  9,	 36,	  5,	 32,	  2,
315 /*38*/	112,	 12,	 40,	  8,	 35,	  4,	 31,	  1,
316 /*40*/	IGN,	 57,	IGN,	IGN,	IGN,	IGN,	IGN,	IGN,
317 /*48*/	IGN,	IGN,	IGN,	IGN,	IGN,	IGN,	IGN,	IGN,
318 /*50*/	IGN,	IGN,	IGN,	IGN,	IGN,	IGN,	IGN,	IGN,
319 /*58*/	IGN,	IGN,	IGN,	IGN,	IGN,	IGN,	IGN,	IGN,
320 };
321 
322 static const keysym_t mccs_cmdmap[] = {
323 /*	pos      command		normal		shifted		*/
324 	KC(51),  KS_Cmd_ContrastDown,	KS_comma,	KS_less,
325 	KC(52),  KS_Cmd_ContrastUp,	KS_period,	KS_greater,
326 	KC(57),  KS_Cmd_BacklightToggle,KS_space,
327 };
328 
329 static uint8_t mobilepro_keytrans[] = {
330 /*00	space	]	\	/	left	down	enter	l	*/
331 /*08	-	[	'	;	right	up	.	o	*/
332 /*10	-	-	-	Windows	v	c	x	z	*/
333 /*18	-	=	\-	`	f	d	s	a	*/
334 /*20	8	7	6	5	r	e	w	q	*/
335 /*28	,	m	n	b	-	-	0	9	*/
336 /*30	k	j	h	g	4	3	2	1	*/
337 /*38	i	u	y	t	-	caps	del	esc	*/
338 /*40	alt_R	-	-	-	BS	p	TAB	Fn	*/
339 /*48	-	alt_L	-	-	pgdn	pgup	f10	f9	*/
340 /*50	-	-	ctrl	-	f8	f7	f6	f5	*/
341 /*58	-	-	-	shift	f4	f3	f2	f1	*/
342 /*----------------------------------------------------------------------*/
343 /*00*/	 57,	 27,	 43,	 53,	203,	208,	 28,	 38,
344 /*08*/	IGN,	 26,	 40,	 39,	205,	200,	 52,	 24,
345 /*10*/	IGN,	IGN,	IGN,	221,	 47,	 46,	 45,	 44,
346 /*18*/	IGN,	 13,	 12,	 41,	 33,	 32,	 31,	 30,
347 /*20*/	  9,	  8,	  7,	  6,	 19,	 18,	 17,	 16,
348 /*28*/	 51,	 50,	 49,	 48,	IGN,	IGN,	 11,	 10,
349 /*30*/	 37,	 36,	 35,	 34,	  5,	  4,	  3,	  2,
350 /*38*/	 23,	 22,	 21,	 20,	IGN,	 58,	 14,	  1,
351 /*40*/	184,	IGN,	IGN,	IGN,	 14,	 25,	 15,	219,
352 /*48*/	IGN,	 56,	IGN,	IGN,	 81,	 73,	 68,	 67,
353 /*50*/	IGN,	IGN,	 29,	IGN,	 66,	 65,	 64,	 63,
354 /*58*/	IGN,	IGN,	IGN,	 42,	 62,	 61,	 60,	 59,
355 };
356 
357 static const keysym_t mobilepro_cmdmap[] = {
358 /*	pos      command		normal		shifted		*/
359 	KC(219), KS_Cmd,		KS_Meta_L,	KS_Multi_key,
360 	KC(73),  KS_Cmd_BrightnessUp,	KS_KP_Prior,	KS_KP_9,
361 	KC(81),  KS_Cmd_BrightnessDown,	KS_KP_Next,	KS_KP_3,
362 	KC(51),  KS_Cmd_ContrastDown,	KS_comma,	KS_less,
363 	KC(52),  KS_Cmd_ContrastUp,	KS_period,	KS_greater,
364 	KC(57),  KS_Cmd_BacklightToggle,KS_space,
365 };
366 
367 /* NEC MobilePro 750c by "Castor Fu" <castor@geocast.com> */
368 static uint8_t mobilepro750c_keytrans[] = {
369 /*00	right	\	p	.	y	b	z	space	*/
370 /*08	down	/	o	,	t	v	a	-	*/
371 /*10	left	enter	i	m	r	c	w	Win	*/
372 /*18	num	]	u	n	e	x	q	caps	*/
373 /*20	pgdn	-	0	l	:	g	tab	esc	*/
374 /*28	-	;	9	k	5	f	2	`	*/
375 /*30	up	[	8	j	4	d	1	'	*/
376 /*38	-	@	7	h	3	s	del	-	*/
377 /*40	shift	-	-	-	bs	f12	f8	f4	*/
378 /*48	-	alt	-	-	|	f11	f7	f3	*/
379 /*50	-	-	ctrl	-	f10	f10	f6	f2	*/
380 /*58	-	-	-	shift	del	f9	f5	f1	*/
381 /*----------------------------------------------------------------------*/
382 /*00*/	205,	43,	25,	52,	21,	48,	44,	57,
383 /*08*/	208,	53,	24,	51,	20,	47,	30,	IGN,
384 /*10*/	203,	28,	23,	50,	19,	46,	17,	221,
385 /*18*/	69,	27,	22,	49,	18,	45,	16,	58,
386 /*20*/	81,	IGN,	11,	38,	7,	34,	15,	1,
387 /*28*/	IGN,	39,	10,	37,	6,	33,	3,	41,
388 /*30*/	200,	26,	9,	36,	5,	32,	2,	40,
389 /*38*/	12,	26,	8,	35,	4,	31,	83,	IGN,
390 /*40*/	42,	IGN,	IGN,	IGN,	14,	88,	66,	62,
391 /*48*/	IGN,	56,	IGN,	IGN,	125,	87,	65,	61,
392 /*50*/	IGN,	IGN,	29,	IGN,	68,	68,	64,	60,
393 /*58*/	IGN,	IGN,	IGN,	42,	13,	67,	63,	59,
394 };
395 
396 /* NEC MobilePro 780 */
397 static uint8_t mobilepro780_keytrans[] = {
398 /*00	space	]	\	/	left	right	enter	l	*/
399 /*08	-	[	'	;	up	down	.	o	*/
400 /*10	-	-	-	Windows	v	c	x	z	*/
401 /*18	-	=	\-	`	f	d	s	a	*/
402 /*20	8	7	6	5	r	e	w	q	*/
403 /*28	,	m	n	b	-	-	0	9	*/
404 /*30	k	j	h	g	4	3	2	1	*/
405 /*38	i	u	y	t	-	caps	del	esc	*/
406 /*40	alt_R	-	-	-	BS	p	TAB	Fn	*/
407 /*48	-	alt_L	-	-	f12	f11	f10	f9	*/
408 /*50	-	-	ctrl	-	f8	f7	f6	f5	*/
409 /*58	-	-	-	shift	f4	f3	f2	f1	*/
410 /*----------------------------------------------------------------------*/
411 /*00*/	 57,	 27,	 43,	 53,	203,	205,	 28,	 38,
412 /*08*/	IGN,	 26,	 40,	 39,	200,	208,	 52,	 24,
413 /*10*/	IGN,	IGN,	IGN,	221,	 47,	 46,	 45,	 44,
414 /*18*/	IGN,	 13,	 12,	 41,	 33,	 32,	 31,	 30,
415 /*20*/	  9,	  8,	  7,	  6,	 19,	 18,	 17,	 16,
416 /*28*/	 51,	 50,	 49,	 48,	IGN,	IGN,	 11,	 10,
417 /*30*/	 37,	 36,	 35,	 34,	  5,	  4,	  3,	  2,
418 /*38*/	 23,	 22,	 21,	 20,	IGN,	 58,	 14,	  1,
419 /*40*/	184,	IGN,	IGN,	IGN,	 14,	 25,	 15,	IGN,
420 /*48*/	IGN,	 56,	IGN,	IGN,	 88,	 87,	 68,	 67,
421 /*50*/	IGN,	IGN,	 29,	IGN,	 66,	 65,	 64,	 63,
422 /*58*/	IGN,	IGN,	IGN,	 42,	 62,	 61,	 60,	 59,
423 };
424 
425 /* NEC MobilePro 8x0 */
426 static uint8_t mobilepro8x0_keytrans[] = {
427 /*00	space	]	\	/	left	right	enter	l	*/
428 /*08	-	[	'	;	up	down	.	o	*/
429 /*10	-	-	-	Windows	v	c	x	z	*/
430 /*18	-	=	\-	`	f	d	s	a	*/
431 /*20	8	7	6	5	r	e	w	q	*/
432 /*28	,	m	n	b	-	-	0	9	*/
433 /*30	k	j	h	g	4	3	2	1	*/
434 /*38	i	u	y	t	-	caps	del	esc	*/
435 /*40	alt_R	-	-	-	BS	p	TAB	Fn	*/
436 /*48	-	alt_L	-	-	pgdn	pgup	f10	f9	*/
437 /*50	-	-	ctrl	-	f8	f7	f6	f5	*/
438 /*58	-	-	-	shift	f4	f3	f2	f1	*/
439 /*----------------------------------------------------------------------*/
440 /*00*/	 57,	 27,	 43,	 53,	203,	205,	 28,	 38,
441 /*08*/	IGN,	 26,	 40,	 39,	200,	208,	 52,	 24,
442 /*10*/	IGN,	IGN,	IGN,	221,	 47,	 46,	 45,	 44,
443 /*18*/	IGN,	 13,	 12,	 41,	 33,	 32,	 31,	 30,
444 /*20*/	  9,	  8,	  7,	  6,	 19,	 18,	 17,	 16,
445 /*28*/	 51,	 50,	 49,	 48,	IGN,	IGN,	 11,	 10,
446 /*30*/	 37,	 36,	 35,	 34,	  5,	  4,	  3,	  2,
447 /*38*/	 23,	 22,	 21,	 20,	IGN,	 58,	 14,	  1,
448 /*40*/	184,	IGN,	IGN,	IGN,	 14,	 25,	 15,	219,
449 /*48*/	IGN,	 56,	IGN,	IGN,	 81,	 73,	 68,	 67,
450 /*50*/	IGN,	IGN,	 29,	IGN,	 66,	 65,	 64,	 63,
451 /*58*/	IGN,	IGN,	IGN,	 42,	 62,	 61,	 60,	 59,
452 };
453 
454 static const keysym_t mobilepro8x0_cmdmap[] = {
455 /*	pos      command		normal		shifted		*/
456 	KC(219), KS_Cmd,		KS_Meta_L,	KS_Multi_key,
457 	KC(73),  KS_Cmd_BrightnessUp,	KS_KP_Prior,	KS_KP_9,
458 	KC(81),  KS_Cmd_BrightnessDown,	KS_KP_Next,	KS_KP_3,
459 	KC(51),  KS_Cmd_ContrastDown,	KS_comma,	KS_less,
460 	KC(52),  KS_Cmd_ContrastUp,	KS_period,	KS_greater,
461 	KC(57),  KS_Cmd_BacklightToggle,KS_space,
462 };
463 
464 /* FUJITSU INTERTOP CX300 */
465 static uint8_t intertop_keytrans[] = {
466 /*00	space   a2      1       tab     enter   caps    left    zenkaku	*/
467 /*08	hiraga  a1      2       q       -       a       fnc     esc	*/
468 /*10	ins     w       3       s       del     ]       down    x	*/
469 /*18	z       e       4       d       a10     \       right   c	*/
470 /*20	backsla r       ;       f       a9      @       ^       v	*/
471 /*28	/       t       5       g       a8      p       -       b	*/
472 /*30	.       y       6       h       a7      l       0       n	*/
473 /*38	-       u       7       j       a5      o       bs      m	*/
474 /*40	-       a3      8       a4      -       i       k       ,	*/
475 /*48	num     :       9       [       a6      -       up      -	*/
476 /*50	-       -       -       -       shift_L -       -       shift_R	*/
477 /*58	ctrl    win     muhenka henkan  alt     -       -       -	*/
478 /*----------------------------------------------------------------------*/
479 /*00*/	57,	60,	2,	15,	28,	58,	205,	41,
480 /*08*/	112,	59,	3,	16,	IGN,	30,	56,	1,
481 /*10*/	210,	17,	4,	31,	83,	43,	208,	45,
482 /*18*/	44,	18,	5,	32,	68,	125,	203,	46,
483 /*20*/	115,	19,	39,	33,	67,	26,	13,	47,
484 /*28*/	53,	20,	6,	34,	66,	25,	12,	48,
485 /*30*/	52,	21,	7,	35,	65,	38,	11,	49,
486 /*38*/	IGN,	22,	8,	36,	63,	24,	14,	50,
487 /*40*/	IGN,	61,	9,	62,	IGN,	23,	37,	51,
488 /*48*/	69,	40,	10,	27,	64,	IGN,	200,	IGN,
489 /*50*/	IGN,	IGN,	IGN,	IGN,	42,	IGN,	IGN,	54,
490 /*58*/	29,	221,	123,	121,	184,	IGN,	IGN,	IGN,
491 };
492 
493 /* DoCoMo sigmarion (Japan) */
494 static uint8_t sigmarion_jp_keytrans[] = {
495 /*00	right	ent	p	.	y	b	z	space	*/
496 /*08	down	/	o	,	t	v	a	nfer	*/
497 /*10	left	\	i	m	r	c	w	menu	*/
498 /*18	|	-	u	-	e	x	q	1	*/
499 /*20	pgdn	h/z	0	l	:	g	tab	f1	*/
500 /*28	xfer	;	9	n	5	f	2	k	*/
501 /*30	up	[	8	j	4	d	6	-	*/
502 /*38	-	@	7	h	3	]	s	-	*/
503 /*40	caps	-	-	-	bs	fnc	f8	f3	*/
504 /*48	-	alt	-	-	^	k/h	f7	f4	*/
505 /*50	-	-	ctrl	-	f10	pgup	f6	f2	*/
506 /*58	-	-	-	shift	del	f9	f5	esc	*/
507 /*----------------------------------------------------------------------*/
508 /*00*/	205,	 28,	 25,	 52,	 21,	 48,	 44,	 57,
509 /*08*/	208,	 53,	 24,	 51,	 20,	 47,	 30,	123,
510 /*10*/	203,	115,	 23,	 50,	 19,	 46,	 17,	221,
511 /*18*/	125,	IGN,	 22,	IGN,	 18,	 45,	 16,	  2,
512 /*20*/	 81,	 41,	 11,	 38,	 40,	 34,	 15,	IGN,
513 /*28*/	121,	 39,	 10,	 49,	  6,	 33,	  3,	 37,
514 /*30*/	200,	 27,	  9,	 36,	  5,	 32,	  7,	IGN,
515 /*38*/	 12,	 26,	  8,	 35,	  4,	 43,	 31,	IGN,
516 /*40*/	 58,	IGN,	IGN,	IGN,	 14,	184,	 66,	IGN,
517 /*48*/	IGN,	 56,	IGN,	IGN,	 13,	112,	 65,	IGN,
518 /*50*/	IGN,	IGN,	 29,	IGN,	 68,	 73,	 64,	IGN,
519 /*58*/	IGN,	IGN,	IGN,	 42,	 14,	 67,	IGN,	  1,
520 };
521 
522 static const keysym_t sigmarion_cmdmap[] = {
523 /*	pos      command		normal		shifted		*/
524 	KC(184), KS_Cmd,		KS_Alt_R,	KS_Multi_key,
525 	KC(64),  KS_Cmd_Screen0,	KS_f6,		KS_f1,
526 	KC(65),  KS_Cmd_Screen1,	KS_f7,		KS_f2,
527 	KC(66),  KS_Cmd_Screen2,	KS_f8,		KS_f3,
528 	KC(67),  KS_Cmd_Screen3,	KS_f9,		KS_f4,
529 	KC(68),  KS_Cmd_Screen4,	KS_f10,		KS_f5,
530 	KC(27),  KS_Cmd_BrightnessUp,	KS_bracketleft,	KS_braceleft,
531 	KC(43),  KS_Cmd_BrightnessDown,	KS_bracketright,KS_braceright,
532 	KC(51),  KS_Cmd_ContrastDown,	KS_comma,	KS_less,
533 	KC(52),  KS_Cmd_ContrastUp,	KS_period,	KS_greater,
534 	KC(57),  KS_Cmd_BacklightToggle,KS_space,
535 };
536 
537 /* NTT DoCoMo Pocket PostPet (Japan) */
538 static uint8_t pocketpostpet_keytrans[] = {
539 /*00	esc	1	q	a	ctrl	-	down	left	*/
540 /*08	tab	2	w	s	z	-	right	up	*/
541 /*10	pgup	3	e	d	x	shift	-	-	*/
542 /*18	pgdn	4	r	f	c	alt	-	-	*/
543 /*20	f5	5	t	g	v	nfer	-	-	*/
544 /*28	f6	6	y	h	b	-	-	-	*/
545 /*30	f7	7	u	j	n	space	-	-	*/
546 /*38	f8	8	i	k	m	-	-	-	*/
547 /*40	f9	9	o	l	,	xfer	-	-	*/
548 /*48	f10	0	p	;	.	-	-	-	*/
549 /*50	\|	minus	@	:	/	ent	-	-	*/
550 /*58	bs	^	[	]	\_	del	-	-	*/
551 /* MailCheck  -> tab	*/
552 /* Prev       -> pgup	*/
553 /* Next       -> pgdn	*/
554 /* tab        -> ctrl	*/
555 /* h/z        -> menu	*/
556 /* k/h        -> alt	*/
557 /* knj        -> nfer	*/
558 /* eng        -> xfer	*/
559 /*----------------------------------------------------------------------*/
560 /*00*/	1,	2,	16,	30,	29,	UNK,	208,	203,
561 /*08*/	15,	3,	17,	31,	44,	UNK,	205,	200,
562 /*10*/	73,	4,	18,	32,	45,	42,	UNK,	UNK,
563 /*08*/	81,	5,	19,	33,	46,	56,	UNK,	UNK,
564 /*20*/	63,	6,	20,	34,	47,	123,	UNK,	UNK,
565 /*28*/	64,	7,	21,	35,	48,	UNK,	UNK,	UNK,
566 /*30*/	65,	8,	22,	36,	49,	57,	UNK,	UNK,
567 /*38*/	66,	9,	23,	37,	50,	UNK,	UNK,	UNK,
568 /*40*/	67,	10,	24,	38,	51,	121,	UNK,	UNK,
569 /*48*/	68,	11,	25,	39,	52,	UNK,	UNK,	UNK,
570 /*50*/	125,	12,	26,	40,	53,	28,	UNK,	UNK,
571 /*58*/	14,	13,	27,	43,	115,	14,	UNK,	UNK,
572 };
573 #endif /* hpcmips */
574 
575 #ifdef hpcsh
576 /*
577  * HP Jornada 680/690
578  */
579 /* Japanese */
580 const uint8_t jornada6x0_jp_keytrans[] = {
581 /*      0    1    2    3    4    5    6    7 */
582 /* 0 */ 59 , 45 , 31 , 17 , 3  , UNK, 29 , UNK, /* ctrl 29 */
583 /* 1 */ 60 , 46 , 32 , 18 , 4  , 42 , UNK, UNK, /* shift L 42 */
584 /* 2 */ 61 , 47 , 33 , 19 , 5  , UNK, 57 , UNK,
585 /* 3 */ 66 , 52 , 38 , 24 , 10 , UNK, 14 , 203,
586 /* 4 */ 65 , 51 , 37 , 23 , 9  , UNK, 115, UNK,
587 /* 5 */ 64 , 50 , 36 , 22 , 8  , UNK, 121, UNK,
588 /* 6 */ 62 , 48 , 34 , 20 , 6  , UNK, UNK, 56 , /* alt 56 */
589 /* 7 */ 63 , 49 , 35 , 21 , 7  , UNK, UNK, 123,
590 /* 8 */ IGN, 53 , 39 , 25 , 11 , 200, UNK, 208,
591 /* 9 */ 112, 40 , 27 , 26 , 12 , 125, UNK, 205,
592 /*10 */ 41 , 28 , 43 , 14 , 13 , 54 , UNK, UNK, /* shift R 54 */
593 /*11 */ SPL, IGN, IGN, IGN, IGN, IGN, IGN, IGN,
594 /*12 */ 1  , 44 , 30 , 16 , 2  , 15 , 221, UNK,
595 /*13 */ UNK, UNK, UNK, UNK, UNK, UNK, UNK, UNK,
596 /*14 */ UNK, UNK, UNK, UNK, UNK, UNK, UNK, UNK,
597 /*15 */ UNK, UNK, UNK, UNK, UNK, UNK, UNK, UNK,
598 };
599 
600 /* US/UK - Fn to the left of the space bar and missing few keys */
601 const uint8_t jornada6x0_us_keytrans[] = {
602 /*      0    1    2    3    4    5    6    7 */
603 /* 0 */ 59 , 45 , 31 , 17 , 3  , UNK, 29 , UNK,
604 /* 1 */ 60 , 46 , 32 , 18 , 4  , 42 , UNK, UNK,
605 /* 2 */ 61 , 47 , 33 , 19 , 5  , UNK, 57 , UNK,
606 /* 3 */ 66 , 52 , 38 , 24 , 10 , UNK, 211, 203,
607 /* 4 */ 65 , 51 , 37 , 23 , 9  , UNK, 53 , UNK,
608 /* 5 */ 64 , 50 , 36 , 22 , 8  , UNK, UNK, UNK,
609 /* 6 */ 62 , 48 , 34 , 20 , 6  , UNK, UNK, 56 ,
610 /* 7 */ 63 , 49 , 35 , 21 , 7  , UNK, UNK, 184,
611 /* 8 */ 67 , UNK, 39 , 25 , 11 , 200, UNK, 208,
612 /* 9 */ 68 , 40 , UNK, 43 , 12 , UNK, UNK, 205,
613 /*10 */ 87 , 28 , UNK, 14 , 13 , 54 , UNK, UNK,
614 /*11 */ SPL, IGN, IGN, IGN, IGN, IGN, IGN, IGN,
615 /*12 */ 1  , 44 , 30 , 16 , 2  , 15 , 219, UNK,
616 /*13 */ UNK, UNK, UNK, UNK, UNK, UNK, UNK, UNK,
617 /*14 */ UNK, UNK, UNK, UNK, UNK, UNK, UNK, UNK,
618 /*15 */ UNK, UNK, UNK, UNK, UNK, UNK, UNK, UNK,
619 };
620 
621 /* International - AltGr to the right and extra keys in three middle rows */
622 const uint8_t jornada6x0_intl_keytrans[] = {
623 /*      0    1    2    3    4    5    6    7 */
624 /* 0 */ 59 , 45 , 31 , 17 , 3  , UNK, 29 , UNK,
625 /* 1 */ 60 , 46 , 32 , 18 , 4  , 42 , UNK, UNK,
626 /* 2 */ 61 , 47 , 33 , 19 , 5  , UNK, 57 , UNK,
627 /* 3 */ 66 , 52 , 38 , 24 , 10 , UNK, 211, 203,
628 /* 4 */ 65 , 51 , 37 , 23 , 9  , UNK, 184, UNK,
629 /* 5 */ 64 , 50 , 36 , 22 , 8  , UNK, UNK, UNK,
630 /* 6 */ 62 , 48 , 34 , 20 , 6  , UNK, UNK, 56 ,
631 /* 7 */ 63 , 49 , 35 , 21 , 7  , UNK, UNK, 41 ,
632 /* 8 */ 67 , 53 , 39 , 25 , 11 , 200, UNK, 208,
633 /* 9 */ 68 , 40 , 27 , 26 , 12 , UNK, UNK, 205,
634 /*10 */ 87 , 28 , 43 , 14 , 13 , 54 , UNK, UNK,
635 /*11 */ SPL, IGN, IGN, IGN, IGN, IGN, IGN, IGN,
636 /*12 */ 1  , 44 , 30 , 16 , 2  , 15 , 219, UNK,
637 /*13 */ UNK, UNK, UNK, UNK, UNK, UNK, UNK, UNK,
638 /*14 */ UNK, UNK, UNK, UNK, UNK, UNK, UNK, UNK,
639 /*15 */ UNK, UNK, UNK, UNK, UNK, UNK, UNK, UNK,
640 };
641 
642 const int jornada6x0_special_keymap[] = {
643 	[KEY_SPECIAL_OFF]	= -1,
644 	[KEY_SPECIAL_LIGHT]	= -1
645 };
646 
647 
648 /*
649  * HP 620LX
650  */
651 /* Japanese */
652 const uint8_t hp620lx_jp_keytrans[] = {
653 /*      0    1    2    3    4    5    6    7 */
654 /* 0 */	2  , 16 , 112, UNK, IGN, UNK, 42 , 30 , /* REC button */
655 /* 1 */	3  , 17 , 58 , 44 , UNK, 45 , 15 , 31 ,
656 /* 2 */	4  , 18 , UNK, 56 , 59 , 46 , 1  , 32 ,
657 /* 3 */	5  , 19 , UNK, UNK, 60 , 123, UNK, 33 ,
658 /* 4 */	6  , 20 , 47 , 57 , 61 , 48 , UNK, 34 ,
659 /* 5 */	7  , 21 , UNK, 121, 62 , 49 , UNK, 35 ,
660 /* 6 */	8  , 22 , UNK, 125, 63 , 50 , UNK, 36 ,
661 /* 7 */	9  , 23 , 52 , 115, 64 , 51 , UNK, 37 ,
662 /* 8 */	10 , 24 , 53 , 203, 65 , 200, 39 , 38 ,
663 /* 9 */	11 , 25 , 40 , 208, 66 , 205, 27 , 26 ,
664 /*10 */	12 , 13 , 28 , UNK, UNK, UNK, 41 , 43 ,
665 /*11 */	SPL, IGN, IGN, IGN, IGN, IGN, IGN, IGN, /* ON button */
666 /*12 */	29 , IGN, IGN, IGN, IGN, IGN, IGN, IGN,
667 /*13 */	14 , IGN, IGN, IGN, IGN, IGN, IGN, IGN,
668 /*14 */	UNK, UNK, UNK, UNK, UNK, UNK, UNK, UNK,
669 /*15 */	SPL, IGN, IGN, IGN, IGN, IGN, IGN, IGN  /* LED button */
670 };
671 
672 /* Other models */
673 const uint8_t hp620lx_intl_keytrans[] = {
674 /*      0    1    2    3    4    5    6    7 */
675 /* 0 */	2  , 16 , 219, UNK, IGN, UNK, 42 , 30 , /* REC button */
676 /* 1 */	3  , 17 , 15 , 44 , UNK, 45 , 41 , 31 ,
677 /* 2 */	4  , 18 , UNK, 69 , 59 , 46 , 1  , 32 ,
678 /* 3 */	5  , 19 , UNK, UNK, 60 , 56 , UNK, 33 ,
679 /* 4 */	6  , 20 , 47 , 57 , 61 , 48 , UNK, 34 ,
680 /* 5 */	7  , 21 , UNK, UNK, 62 , 49 , UNK, 35 ,
681 /* 6 */	8  , 22 , UNK, 184, 63 , 50 , UNK, 36 ,
682 /* 7 */	9  , 23 , 52 , 211, 64 , 51 , UNK, 37 ,
683 /* 8 */	10 , 24 , 53 , 203, 65 , 200, 39 , 38 ,
684 /* 9 */	11 , 25 , 40 , 208, 66 , 205, 27 , 26 ,
685 /*10 */	12 , 13 , 28 , UNK, UNK, UNK, 54 , 43 ,
686 /*11 */	SPL, IGN, IGN, IGN, IGN, IGN, IGN, IGN, /* ON button */
687 /*12 */	29 , IGN, IGN, IGN, IGN, IGN, IGN, IGN,
688 /*13 */	14 , IGN, IGN, IGN, IGN, IGN, IGN, IGN,
689 /*14 */	UNK, UNK, UNK, UNK, UNK, UNK, UNK, UNK,
690 /*15 */	SPL, IGN, IGN, IGN, IGN, IGN, IGN, IGN  /* LED button */
691 };
692 
693 const int hp620lx_special_keymap[] = {
694 	[KEY_SPECIAL_OFF]	= -1,	/* 88 */
695 	[KEY_SPECIAL_LIGHT]	= 120
696 };
697 
698 
699 /*
700  * HITACHI PERSONA HPW50PAD
701  */
702 /* Japanese */
703 const uint8_t persona_hpw50pad_jp_keytrans[] = {
704 /*      0    1    2    3    4    5    6    7 */
705 /* 0 */ 59 , 61 , 63 , 65 , 67 , SPL, UNK, UNK, /* ON button */
706 /* 1 */ 29 , UNK, 47 , 48 , 121, UNK, UNK, UNK,
707 /* 2 */  1 , UNK, 34 , 51 , 112, UNK, UNK, UNK,
708 /* 3 */ 41 , 221, 35 , 37 , 52 , UNK, UNK, UNK,
709 /* 4 */ 45 , 58 , 22 , 38 , 40 , 42 , UNK, UNK,
710 /* 5 */ 30 , 16 , 21 , 24 , 28 , 54 , UNK, UNK,
711 /* 6 */ 17 ,  4 , UNK, 10 , 12 , 205, UNK, UNK,
712 /* 7 */ 31 , 18 ,  7 , 25 , 13 , 83 , UNK, UNK,
713 /* 8 */ 60 , 62 , 64 , 66 , 68 , UNK, UNK, UNK,
714 /* 9 */ UNK, 123, 49 , 53 , 203, UNK, UNK, UNK,
715 /*10 */ 56 , 46 , 50 , 57 , 208, UNK, UNK, UNK,
716 /*11 */ 15 , 33 , 36 , 39 , 43 , UNK, UNK, UNK,
717 /*12 */ 44 , 20 , 23 , 26 , 27 , UNK, UNK, UNK,
718 /*13 */  2 ,  6 ,  9 , 115, 200, UNK, UNK, UNK,
719 /*14 */  3 ,  5 , UNK, UNK, 125, UNK, UNK, UNK,
720 /*15 */ 32 , 19 ,  8 , 11 , 14 , UNK, UNK, UNK,
721 };
722 
723 const int persona_hpw50pad_special_keymap[] = {
724 	[KEY_SPECIAL_OFF]	= 5,
725 	[KEY_SPECIAL_LIGHT]	= -1
726 };
727 
728 static const keysym_t persona_hpw50pad_jp_keydesc[] = {
729 /*	pos	command			normal		shifted		*/
730 	KC(63),	KS_Cmd_ContrastDown,	KS_f5,
731 	KC(64),	KS_Cmd_ContrastUp,	KS_f6,
732 	KC(65),	KS_Cmd_BrightnessDown,	KS_f7,
733 	KC(66),	KS_Cmd_BrightnessUp,	KS_f8,
734 
735 	KC(200),KS_Cmd_ScrollFastUp,	KS_Up,
736 	KC(208),KS_Cmd_ScrollFastDown,	KS_Down,
737 	KC(203),KS_KP_Home,		KS_Left,
738 	KC(205),KS_KP_End,		KS_Right,
739 };
740 
741 /*
742  * HITACHI PERSONA HPW200EC
743 */
744 /* US */
745 const uint8_t persona_hpw200ec_keytrans[] = {
746 /*      0    1    2    3    4    5    6    7 */
747 /* 0 */  3 ,  2 , 71 , 69 , 67 , SPL, UNK, UNK,
748 /* 1 */ 11 , UNK, 79 , 77 , 75 , UNK, UNK, UNK,
749 /* 2 */ 19 , UNK, UNK, 85 , 83 , UNK, UNK, UNK,
750 /* 3 */ 27 , 26 , 95 , 93 , 91 , UNK, UNK, UNK,
751 /* 4 */ 35 , 34 , 103, 101, 99 , 32 , UNK, UNK,
752 /* 5 */ 43 , 42 , 111, 109, 107, 40 , UNK, UNK,
753 /* 6 */ 51 , 50 , 119, 117, 115, 48 , UNK, UNK,
754 /* 7 */ 59 , 58 , UNK, UNK, 123, 56 , UNK, UNK,
755 /* 8 */  5 ,  6 , 70 , 68 , 66 , UNK, UNK, UNK,
756 /* 9 */ UNK, UNK, 78 , 76 , 74 , UNK, UNK, UNK,
757 /*10 */ 21 , UNK, UNK, 84 , 82 , UNK, UNK, UNK,
758 /*11 */ 29 , 30 , 94 , 92 , 90 , UNK, UNK, UNK,
759 /*12 */ UNK, 26 , 102, 100, 98 , UNK, UNK, UNK,
760 /*13 */ UNK, 46 , 110, 108, 106, 104, UNK, UNK,
761 /*14 */ 53 , 54 , 118, 124, 114, UNK, UNK, UNK,
762 /*15 */ 61 , 62 , 126, UNK, 122, UNK, UNK, UNK,
763 };
764 
765 const int persona_hpw200ec_special_keymap[] = {
766 	[KEY_SPECIAL_OFF]	= 5,
767 	[KEY_SPECIAL_LIGHT]	= -1
768 };
769 
770 #endif /* hpcsh */
771 
772 #ifdef hpcarm
773 /*
774  * HP Jornada 710/720/728
775  */
776 
777 /* Japanese */
778 const uint8_t jornada7xx_jp_keytrans[] = {
779 /* 00 */ UNK,  1 , 59 , 60 , 61 , 62 , 63 , 64 ,
780 /* 08 */ 65 , 66 , 67 , 112, 41 , IGN, IGN, IGN,
781 /* 10 */ UNK,  2 ,  3 ,  4 ,  5 ,  6 ,  7 ,  8 ,
782 /* 18 */  9 , 10 , 11 , 12 , 13 , UNK, UNK, UNK,
783 /* 20 */ UNK, 16 , 17 , 18 , 19 , 20 , 21 , 22 ,
784 /* 28 */  23, 24 , 25 , 26 , UNK, UNK, UNK, UNK,
785 /* 30 */ UNK, 30 , 31 , 32 , 33 , 34 , 35 , 36 ,
786 /* 38 */  37, 38 , 39 , 27 , 43 , UNK, UNK, UNK,
787 /* 40 */ UNK, 44 , 45 , 46 , 47 , 48 , 49 , 50 ,
788 /* 48 */  51, 52 , 53 , 40 , 28 , UNK, UNK, UNK,
789 /* 50 */ UNK, 15 , UNK, 42 , UNK, UNK, UNK, UNK,
790 /* 58 */ UNK, UNK, 200, 125, 54 , UNK, UNK, UNK,
791 /* 60 */ UNK, UNK, UNK, UNK, UNK, 56 , 123, UNK,
792 /* 68 */ UNK, 203, 208, 205, UNK, UNK, UNK, UNK,
793 /* 70 */ UNK, 184, 29 , UNK, 57 , UNK, UNK, 121,
794 /* 78 */ 53 , 14 , UNK, UNK, UNK, UNK, UNK, SPL,
795 };
796 
797 /* US/UK - Fn to the left of the space bar and missing few keys */
798 const uint8_t jornada7xx_us_keytrans[] = {
799 /* 00 */ UNK,  1 , 59 , 60 , 61 , 62 , 63 , 64 ,
800 /* 08 */ 65 , 66 , 67 , 68 , 87 , IGN, IGN, IGN,
801 /* 10 */ UNK,  2 ,  3 ,  4 ,  5 ,  6 ,  7 ,  8 ,
802 /* 18 */  9 , 10 , 11 , 12 , 13 , UNK, UNK, UNK,
803 /* 20 */ UNK, 16 , 17 , 18 , 19 , 20 , 21 , 22 ,
804 /* 28 */  23, 24 , 25 , 43 , 14 , UNK, UNK, UNK,
805 /* 30 */ UNK, 30 , 31 , 32 , 33 , 34 , 35 , 36 ,
806 /* 38 */  37, 38 , 39 , 40 , UNK, UNK, UNK, UNK,
807 /* 40 */ UNK, 44 , 45 , 46 , 47 , 48 , 49 , 50 ,
808 /* 48 */  51, 52 , UNK, 40 , 28 , UNK, UNK, UNK,
809 /* 50 */ UNK, 15 , UNK, 42 , UNK, UNK, UNK, UNK,
810 /* 58 */ UNK, UNK, 200, UNK, 54 , UNK, UNK, UNK,
811 /* 60 */ UNK, UNK, UNK, UNK, UNK, 56 , 184, UNK,
812 /* 68 */ UNK, 203, 208, 205, UNK, UNK, UNK, UNK,
813 /* 70 */ UNK, 221, 29 , UNK, 57 , UNK, UNK, UNK,
814 /* 78 */ 53 , 14 , UNK, UNK, UNK, UNK, UNK, SPL,
815 };
816 
817 /* International - AltGr to the right and extra keys in three middle rows */
818 const uint8_t jornada7xx_intl_keytrans[] = {
819 /* 00 */ UNK,  1 , 59 , 60 , 61 , 62 , 63 , 64 ,
820 /* 08 */ 65 , 66 , 67 , 68 , 87 , IGN, IGN, IGN,
821 /* 10 */ UNK,  2 ,  3 ,  4 ,  5 ,  6 ,  7 ,  8 ,
822 /* 18 */  9 , 10 , 11 , 12 , 13 , UNK, UNK, UNK,
823 /* 20 */ UNK, 16 , 17 , 18 , 19 , 20 , 21 , 22 ,
824 /* 28 */  23, 24 , 25 , 26 , 14 , UNK, UNK, UNK,
825 /* 30 */ UNK, 30 , 31 , 32 , 33 , 34 , 35 , 36 ,
826 /* 38 */  37, 38 , 39 , 27 , 43 , UNK, UNK, UNK,
827 /* 40 */ UNK, 44 , 45 , 46 , 47 , 48 , 49 , 50 ,
828 /* 48 */  51, 52 , 53 , 40 , 28 , UNK, UNK, UNK,
829 /* 50 */ UNK, 15 , UNK, 42 , UNK, UNK, UNK, UNK,
830 /* 58 */ UNK, UNK, 200, UNK, 54 , UNK, UNK, UNK,
831 /* 60 */ UNK, UNK, UNK, UNK, UNK, 56 , 41 , UNK,
832 /* 68 */ UNK, 203, 208, 205, UNK, UNK, UNK, UNK,
833 /* 70 */ UNK, 221, 29 , UNK, 57 , UNK, UNK, UNK,
834 /* 78 */ 184, 211, UNK, UNK, UNK, UNK, UNK, SPL,
835 };
836 
837 const int jornada7xx_special_keymap[] = {
838 	[KEY_SPECIAL_OFF]	= 127,
839 	[KEY_SPECIAL_LIGHT]	= -1
840 };
841 #endif /* hpcarm */
842 
843 #if defined(hpcarm) || defined(hpcsh)
844 /*
845  * Shared keymaps between the Jornada series (6xx, 7xx).
846  */
847 
848 /* US (ABA), UK (ABU) */
849 static const keysym_t jornada_us_keydesc[] = {
850 /*  pos      normal          shifted        altgr       */
851     KC(2),   KS_1,           KS_exclam,     KS_asciitilde,
852     KC(3),   KS_2,           KS_at,         KS_grave,
853     KC(4),   KS_3,           KS_numbersign, KS_sterling,
854 #ifdef KS_euro
855     KC(5),   KS_4,           KS_dollar,     KS_euro,
856 #endif
857     KC(25),  KS_p,           KS_P,          KS_braceleft,
858     KC(39),  KS_semicolon,   KS_colon,      KS_bracketleft,
859     KC(40),  KS_apostrophe,  KS_quotedbl,   KS_bracketright,
860     KC(43),  KS_backslash,   KS_bar,        KS_braceright,
861     KC(184), KS_Mode_switch, KS_Multi_key,
862 
863     KC(200), KS_Cmd_BrightnessUp,   KS_Up,
864     KC(203), KS_Cmd_ContrastDown,   KS_Left,
865     KC(205), KS_Cmd_ContrastUp,     KS_Right,
866     KC(208), KS_Cmd_BrightnessDown, KS_Down,
867 };
868 
869 /*
870  * XXX: Add AltGr layer for #ABB here?  OTOH, all the keys necessary
871  * for basic actions in DDB or shell are on the primary layer, so it
872  * makes sense to support AltGr via wsconsctl(8) instead, as the same
873  * primary layer is used e.g. in Russian models.  But it does make
874  * sense to define the <AltGr> key itself here, as we base this layout
875  * on KB_US that defines it as the right <Alt>.
876  */
877 /* European English (ABB) */
878 static const keysym_t jornada_intl_keydesc[] = {
879 /*  pos      normal          shifted        altgr       */
880     KC(42),  KS_Shift_L,     KS_Shift_L,    KS_Caps_Lock,
881     KC(184), KS_Mode_switch, KS_Multi_key,
882 
883     KC(200), KS_Cmd_BrightnessUp,   KS_Up,
884     KC(203), KS_Cmd_ContrastDown,   KS_Left,
885     KC(205), KS_Cmd_ContrastUp,     KS_Right,
886     KC(208), KS_Cmd_BrightnessDown, KS_Down,
887 };
888 
889 /* German (ABD) */
890 static const keysym_t jornada_de_keydesc[] = {
891 /*  pos      normal          shifted        altgr       */
892     KC(2),   KS_1,           KS_exclam,     KS_brokenbar,
893     KC(5),   KS_4,           KS_dollar,     KS_ccedilla,
894     KC(6),   KS_5,           KS_percent,    KS_sterling,
895     KC(7),   KS_6,           KS_ampersand,  KS_notsign,
896 #ifdef KS_euro
897     KC(18),  KS_e,           KS_E,          KS_euro,
898 #endif
899     KC(27),  KS_plus,        KS_asterisk,   KS_asciitilde, /* NB: not dead */
900     KC(30),  KS_a,           KS_A,          KS_bar,
901     KC(41),  KS_asciicircum, KS_degree,                    /* NB: not dead */
902     KC(43),  KS_numbersign,  KS_apostrophe, KS_dead_diaeresis,
903     KC(44),  KS_y,           KS_Y,          KS_less,
904     KC(45),  KS_x,           KS_X,          KS_greater,
905     KC(46),  KS_c,           KS_C,          KS_cent,
906 
907     KC(200), KS_Cmd_BrightnessUp,   KS_Up,
908     KC(203), KS_Cmd_ContrastDown,   KS_Left,
909     KC(205), KS_Cmd_ContrastUp,     KS_Right,
910     KC(208), KS_Cmd_BrightnessDown, KS_Down,
911 };
912 
913 /* French (ABF) */
914 static const keysym_t jornada_fr_keydesc[] = {
915 /*  pos      normal          shifted        altgr       */
916     KC(2),   KS_ampersand,   KS_1,          KS_plusminus,
917 #ifdef KS_euro
918     KC(18),  KS_e,           KS_E,          KS_euro,
919 #endif
920     KC(19),  KS_r,           KS_R,          KS_onequarter,
921     KC(20),  KS_t,           KS_T,          KS_onehalf,
922     KC(21),  KS_y,           KS_Y,          KS_threequarters,
923     KC(25),  KS_p,           KS_P,          KS_paragraph,
924     KC(30),  KS_q,           KS_Q,          KS_brokenbar,
925     KC(31),  KS_s,           KS_S,          KS_guillemotleft,
926     KC(32),  KS_d,           KS_D,          KS_guillemotright,
927     KC(40),  KS_ugrave,      KS_percent,    KS_dead_acute,
928     KC(41),  KS_twosuperior, KS_voidSymbol, KS_threesuperior,
929     KC(43),  KS_asterisk,    KS_mu,         KS_notsign,
930     KC(44),  KS_w,           KS_W,          KS_less,
931     KC(45),  KS_x,           KS_X,          KS_greater,
932     KC(46),  KS_c,           KS_C,          KS_cent,
933     KC(50),  KS_comma,       KS_question,   KS_mu,
934     KC(53),  KS_exclam,      KS_section,    KS_Eacute,
935     KC(184), KS_Mode_switch, KS_Multi_key,
936 
937     KC(200), KS_Cmd_BrightnessUp,   KS_Up,
938     KC(203), KS_Cmd_ContrastDown,   KS_Left,
939     KC(205), KS_Cmd_ContrastUp,     KS_Right,
940     KC(208), KS_Cmd_BrightnessDown, KS_Down,
941 };
942 
943 /* Scandinavian */
944 static const keysym_t jornada_scnv_keydesc[] = {
945 /*  pos      normal          shifted        altgr       */
946     KC(2),   KS_1,           KS_exclam,     KS_asciitilde,
947     KC(3),   KS_2,           KS_quotedbl,   KS_at,
948     KC(4),   KS_3,           KS_numbersign, KS_sterling,
949     KC(5),   KS_4,           KS_currency,   KS_dollar,
950     KC(7),   KS_6,           KS_ampersand,
951     KC(8),   KS_7,           KS_slash,      KS_braceleft,
952     KC(9),   KS_8,           KS_parenleft,  KS_bracketleft,
953     KC(10),  KS_9,           KS_parenright, KS_bracketright,
954     KC(11),  KS_0,           KS_equal,      KS_braceright,
955     KC(12),  KS_plus,        KS_question,   KS_backslash,
956     KC(13),  KS_apostrophe,  KS_grave,
957     KC(25),  KS_p,           KS_P,          KS_braceleft,
958     KC(26),  KS_aring,
959     /*
960      * XXX: KC(39) and KC(40) has odiaeresis/adiaeresis *and*
961      * oslash/ae on them.  Apparently localized WinCE uses the former
962      * for Swedish and Finnish and the latter for Danish and
963      * Norwegian.  But as the keyboard doesn't seem to have
964      * semicolon/colon and minus/underscore nowhere on the primary and
965      * altgr layers, I put them here (semicolon/colon is inherited).
966      */
967     KC(40),  KS_minus,       KS_underscore, /* XXX */
968     KC(41),  KS_paragraph,   KS_onehalf,    KS_bar,
969     KC(184), KS_Mode_switch, KS_Multi_key,
970 
971     KC(200), KS_Cmd_BrightnessUp,   KS_Up,
972     KC(203), KS_Cmd_ContrastDown,   KS_Left,
973     KC(205), KS_Cmd_ContrastUp,     KS_Right,
974     KC(208), KS_Cmd_BrightnessDown, KS_Down,
975 };
976 
977 /* Spanish (ABE) */
978 static const keysym_t jornada_es_keydesc[] = {
979 /*  pos      normal          shifted        altgr            */
980     KC(2),   KS_1,           KS_exclam,     KS_ordfeminine,
981     KC(3),   KS_2,           KS_quotedbl,   KS_masculine,
982     KC(4),   KS_3,           KS_numbersign,
983     KC(12),  KS_apostrophe,  KS_question,   KS_backslash,
984     KC(13),  KS_questiondown,KS_exclamdown,
985     KC(16),  KS_q,           KS_Q,          KS_at,
986 #ifdef KS_euro
987     KC(18),  KS_e,           KS_E,          KS_euro,
988 #endif
989     KC(26),  KS_dead_acute,  KS_dead_diaeresis,
990     KC(27),  KS_plus,        KS_asterisk,   KS_dead_tilde,
991     KC(40),  KS_braceleft,   KS_bracketleft,KS_dead_circumflex,
992     KC(41),  KS_bar,         KS_degree,     KS_notsign,
993     KC(43),  KS_braceright,  KS_bracketright,KS_dead_grave,
994     KC(44),  KS_z,           KS_Z,          KS_less,
995     KC(45),  KS_x,           KS_X,          KS_greater,
996     KC(46),  KS_c,           KS_C,          KS_Ccedilla,
997 
998     KC(200), KS_Cmd_BrightnessUp,   KS_Up,
999     KC(203), KS_Cmd_ContrastDown,   KS_Left,
1000     KC(205), KS_Cmd_ContrastUp,     KS_Right,
1001     KC(208), KS_Cmd_BrightnessDown, KS_Down,
1002 };
1003 #endif /* hpcarm || hpcsh */
1004 
1005 /*
1006  * REMINDER:
1007  *   When adding new entry to this array, make sure that pckbd_keydesctab[]
1008  *   in sys/dev/pckbport/wskbdmap_mfii.c has a placeholder KB_MACHDEP entry
1009  *   for the base ht_layout that you refer.
1010  */
1011 const struct hpckbd_keymap_table {
1012 	platid_t	*ht_platform;
1013 	const uint8_t	*ht_keymap;
1014 	const int	*ht_special;
1015 	struct {
1016 		const keysym_t	*map;
1017 		int size;
1018 	} ht_cmdmap;
1019 	kbd_t		ht_layout;
1020 } hpckbd_keymap_table[] = {
1021 #ifdef hpcmips
1022 	{	&platid_mask_MACH_COMPAQ_C,
1023 		tc5165_compaq_c_jp_keymap,
1024 		tc5165_compaq_c_jp_special_keymap,
1025 		NULLCMDMAP,
1026 		KB_JP },
1027 	{	&platid_mask_MACH_VICTOR_INTERLINK,
1028 		m38813c_keymap,
1029 		default_special_keymap,
1030 		NULLCMDMAP,
1031 		KB_JP },
1032 	{	&platid_mask_MACH_SHARP_TELIOS,
1033 		tc5165_telios_jp_keymap,
1034 		default_special_keymap,
1035 		CMDMAP(tc5165_telios_jp_cmdmap),
1036 		KB_JP },
1037 	{	&platid_mask_MACH_SHARP_MOBILON,
1038 		tc5165_mobilon_keymap,
1039 		tc5165_mobilon_special_keymap,
1040 		NULLCMDMAP,
1041 		KB_US },
1042 	{	&platid_mask_MACH_NEC_MCR_500A,
1043 		mobilepro750c_keytrans,
1044 		NULL,
1045 		NULLCMDMAP,
1046 		KB_US },
1047 	{	&platid_mask_MACH_NEC_MCR_520A,
1048 		mobilepro_keytrans,
1049 		NULL,
1050 		CMDMAP(mobilepro_cmdmap),
1051 		KB_US },
1052 	{	&platid_mask_MACH_NEC_MCR_530A,
1053 		mobilepro780_keytrans,
1054 		NULL,
1055 		NULLCMDMAP,
1056 		KB_US },
1057 	{	&platid_mask_MACH_NEC_MCR_700A,
1058 		mobilepro8x0_keytrans,
1059 		NULL,
1060 		CMDMAP(mobilepro8x0_cmdmap),
1061 		KB_US },
1062 	{	&platid_mask_MACH_NEC_MCR_730A,
1063 		mobilepro8x0_keytrans,
1064 		NULL,
1065 		CMDMAP(mobilepro8x0_cmdmap),
1066 		KB_US },
1067 	{	&platid_mask_MACH_NEC_MCR_MPRO700,
1068 		mobilepro_keytrans,
1069 		NULL,
1070 		NULLCMDMAP,
1071 		KB_US },
1072 	{	&platid_mask_MACH_NEC_MCR_SIGMARION,
1073 		sigmarion_jp_keytrans,
1074 		NULL,
1075 		CMDMAP(sigmarion_cmdmap),
1076 		KB_JP },
1077 	{	&platid_mask_MACH_NEC_MCR_SIGMARION2,
1078 		sigmarion_jp_keytrans,
1079 		NULL,
1080 		CMDMAP(sigmarion_cmdmap),
1081 		KB_JP },
1082 	{	&platid_mask_MACH_NEC_MCR,
1083 		mcr_jp_keytrans,
1084 		NULL,
1085 		CMDMAP(mcr_jp_cmdmap),
1086 		KB_JP },
1087 	{	&platid_mask_MACH_IBM_WORKPAD_Z50,
1088 		z50_keytrans,
1089 		NULL,
1090 		NULLCMDMAP,
1091 		KB_US },
1092 	{	&platid_mask_MACH_SHARP_TRIPAD,
1093 		tripad_keytrans,
1094 		NULL,
1095 		CMDMAP(tripad_cmdmap),
1096 		KB_US },
1097 	{	&platid_mask_MACH_VADEM_CLIO_C,
1098 		tripad_keytrans,
1099 		NULL,
1100 		CMDMAP(tripad_cmdmap),
1101 		KB_US },
1102 	{	&platid_mask_MACH_NEC_MCCS,
1103 		mccs_keytrans,
1104 		NULL,
1105 		CMDMAP(mccs_cmdmap),
1106 		KB_JP },
1107 	{	&platid_mask_MACH_FUJITSU_INTERTOP,
1108 		intertop_keytrans,
1109 		NULL,
1110 		NULLCMDMAP,
1111 		KB_JP },
1112 	{	&platid_mask_MACH_CASIO_POCKETPOSTPET,
1113 		pocketpostpet_keytrans,
1114 		NULL,
1115 		NULLCMDMAP,
1116 		KB_JP },
1117 #endif /* hpcmips */
1118 #ifdef hpcsh
1119 	/*
1120 	 * HP Jornada 680/690
1121 	 */
1122 	/* Japanese */
1123 	{	&platid_mask_MACH_HP_JORNADA_680JP,
1124 		jornada6x0_jp_keytrans,
1125 		jornada6x0_special_keymap,
1126 		NULLCMDMAP,
1127 		KB_JP },
1128 	{	&platid_mask_MACH_HP_JORNADA_690JP,
1129 		jornada6x0_jp_keytrans,
1130 		jornada6x0_special_keymap,
1131 		NULLCMDMAP,
1132 		KB_JP },
1133 	/* US (ABA), UK (ABU) */
1134 	{	&platid_mask_MACH_HP_JORNADA_680,
1135 		jornada6x0_us_keytrans,
1136 		jornada6x0_special_keymap,
1137 		CMDMAP(jornada_us_keydesc),
1138 		KB_US },
1139 	{	&platid_mask_MACH_HP_JORNADA_690,
1140 		jornada6x0_us_keytrans,
1141 		jornada6x0_special_keymap,
1142 		CMDMAP(jornada_us_keydesc),
1143 		KB_US },
1144 	/* European English (ABB) */
1145 	{	&platid_mask_MACH_HP_JORNADA_680EU,
1146 		jornada6x0_intl_keytrans,
1147 		jornada6x0_special_keymap,
1148 		CMDMAP(jornada_intl_keydesc),
1149 		KB_US },
1150 	{	&platid_mask_MACH_HP_JORNADA_690EU,
1151 		jornada6x0_intl_keytrans,
1152 		jornada6x0_special_keymap,
1153 		CMDMAP(jornada_intl_keydesc),
1154 		KB_US },
1155 	/* German (ABD) */
1156 	{	&platid_mask_MACH_HP_JORNADA_680DE,
1157 		jornada6x0_intl_keytrans,
1158 		jornada6x0_special_keymap,
1159 		CMDMAP(jornada_de_keydesc),
1160 		KB_DE },
1161 	{	&platid_mask_MACH_HP_JORNADA_690DE,
1162 		jornada6x0_intl_keytrans,
1163 		jornada6x0_special_keymap,
1164  		CMDMAP(jornada_de_keydesc),
1165 		KB_DE },
1166 	/* French (ABF) */
1167 	{	&platid_mask_MACH_HP_JORNADA_680FR,
1168 		jornada6x0_intl_keytrans,
1169 		jornada6x0_special_keymap,
1170 		CMDMAP(jornada_fr_keydesc),
1171 		KB_FR },
1172 	{	&platid_mask_MACH_HP_JORNADA_690FR,
1173 		jornada6x0_intl_keytrans,
1174 		jornada6x0_special_keymap,
1175  		CMDMAP(jornada_fr_keydesc),
1176 		KB_FR },
1177 	/* Scandinavian */
1178 	{	&platid_mask_MACH_HP_JORNADA_680SV,
1179 		jornada6x0_intl_keytrans,
1180 		jornada6x0_special_keymap,
1181 		CMDMAP(jornada_scnv_keydesc),
1182 		KB_US },
1183 	{	&platid_mask_MACH_HP_JORNADA_690SV,
1184 		jornada6x0_intl_keytrans,
1185 		jornada6x0_special_keymap,
1186  		CMDMAP(jornada_scnv_keydesc),
1187 		KB_US },
1188 	/* Spanish (ABE) */
1189 	{	&platid_mask_MACH_HP_JORNADA_680ES,
1190 		jornada6x0_intl_keytrans,
1191 		jornada6x0_special_keymap,
1192 		CMDMAP(jornada_es_keydesc),
1193 		KB_ES },
1194 	{	&platid_mask_MACH_HP_JORNADA_690ES,
1195 		jornada6x0_intl_keytrans,
1196 		jornada6x0_special_keymap,
1197  		CMDMAP(jornada_es_keydesc),
1198 		KB_ES },
1199 	/*
1200 	 * HP 620LX
1201 	 */
1202 	/* Japanese */
1203 	{	&platid_mask_MACH_HP_LX_620JP,
1204 		hp620lx_jp_keytrans,
1205 		hp620lx_special_keymap,
1206 		NULLCMDMAP,
1207 		KB_JP },
1208 	/* Other models */
1209 	{	&platid_mask_MACH_HP_LX_620,
1210 		hp620lx_intl_keytrans,
1211 		hp620lx_special_keymap,
1212 		NULLCMDMAP,
1213 		KB_US },
1214 
1215 	/*
1216 	 * PERSONA HPW50PAD
1217 	 */
1218 	/* Japanese */
1219 	{ 	&platid_mask_MACH_HITACHI_PERSONA_HPW50PAD,
1220 		persona_hpw50pad_jp_keytrans,
1221 		persona_hpw50pad_special_keymap,
1222  		CMDMAP(persona_hpw50pad_jp_keydesc),
1223 		KB_JP },
1224 
1225 	/*
1226 	 * PERSONA HPW200EC
1227 	 */
1228 	/* US */
1229 	{ 	&platid_mask_MACH_HITACHI_PERSONA_HPW200EC,
1230 		persona_hpw200ec_keytrans,
1231 		persona_hpw200ec_special_keymap,
1232 		NULLCMDMAP,
1233 		KB_US },
1234 
1235 #endif /* hpcsh */
1236 #ifdef hpcarm
1237 	/* US (ABA), UK (ABU) */
1238 	{	&platid_mask_MACH_HP_JORNADA_720,
1239 		jornada7xx_us_keytrans,
1240 		jornada7xx_special_keymap,
1241 		CMDMAP(jornada_us_keydesc),
1242 		KB_US },
1243 	/* Japanese */
1244 	{	&platid_mask_MACH_HP_JORNADA_720JP,
1245 		jornada7xx_jp_keytrans,
1246 		jornada7xx_special_keymap,
1247 		NULLCMDMAP,
1248 		KB_JP },
1249 	/* European English (ABB) */
1250 	{	&platid_mask_MACH_HP_JORNADA_720EU,
1251 		jornada7xx_intl_keytrans,
1252 		jornada7xx_special_keymap,
1253 		CMDMAP(jornada_intl_keydesc),
1254 		KB_US },
1255 	/* German (ABD) */
1256 	{	&platid_mask_MACH_HP_JORNADA_720DE,
1257 		jornada7xx_intl_keytrans,
1258 		jornada7xx_special_keymap,
1259 		CMDMAP(jornada_de_keydesc),
1260 		KB_DE },
1261 	/* French (ABF) */
1262 	{	&platid_mask_MACH_HP_JORNADA_720FR,
1263 		jornada7xx_intl_keytrans,
1264 		jornada7xx_special_keymap,
1265 		CMDMAP(jornada_fr_keydesc),
1266 		KB_FR },
1267 	/* Scandinavian */
1268 	{	&platid_mask_MACH_HP_JORNADA_720SV,
1269 		jornada7xx_intl_keytrans,
1270 		jornada7xx_special_keymap,
1271 		CMDMAP(jornada_scnv_keydesc),
1272 		KB_US },
1273 	/* Spanish (ABE) */
1274 	{	&platid_mask_MACH_HP_JORNADA_720ES,
1275 		jornada7xx_intl_keytrans,
1276 		jornada7xx_special_keymap,
1277 		CMDMAP(jornada_es_keydesc),
1278 		KB_ES },
1279 #endif /* hpcarm */
1280 
1281 	{ .ht_platform = NULL } /* end mark */
1282 };
1283