xref: /netbsd/sys/dev/hpc/hpckbdkeymap.h (revision c4a72b64)
1 /*	$NetBSD: hpckbdkeymap.h,v 1.16 2002/11/28 15:09:48 hamajima 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 u_int8_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 u_int8_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]	= 60,
94 	[KEY_SPECIAL_LIGHT]	= 47
95 };
96 
97 const u_int8_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, IGN, 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,  IGN, 12,  52,  53,  67,
111 /*12 */	37,  24,  11,  IGN, 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, 221, IGN
115 };
116 
117 const u_int8_t tc5165_compaq_c_jp_keymap[] = {
118 /*      0    1    2    3    4    5    6    7 */
119 /* 0 */	38,  50,  49,  48,  47,  46,  45,  44,
120 /* 1 */	56,  IGN, IGN, IGN, IGN, IGN, IGN, IGN,
121 /* 2 */	13,  IGN, 112, 121, 123, 41,  28,  57,
122 /* 3 */	205, 203, 208, 200, 39,  53,  52,  51,
123 /* 4 */	24,  25,  40,  IGN, 43,  26,  115, 58,
124 /* 5 */	54,  IGN, IGN, IGN, IGN, IGN, IGN, IGN,
125 /* 6 */	IGN, IGN, IGN, SPL, IGN, IGN, IGN, IGN, /* Light */
126 /* 7 */	IGN, IGN, IGN, IGN, IGN, IGN, IGN, IGN,
127 /* 8 */	42,  IGN, IGN, IGN, IGN, IGN, IGN, IGN,
128 /* 9 */	29,  IGN, IGN, IGN, IGN, IGN, IGN, IGN,
129 /*10 */	221, IGN, IGN, IGN, IGN, IGN, IGN, IGN,
130 /*11 */	221, IGN, IGN, IGN, IGN, IGN, IGN, IGN,
131 /*12 */	14,  27,  12,  11,  10,  15,  1,   125,
132 /*13 */	9,   8,   7,   6,   5,   4,   3,   2,
133 /*14 */	23,  22,  21,  20,  19,  18,  17,  16,
134 /*15 */	37,  36,  35,  34,  33,  32,  31,  30
135 };
136 
137 const int tc5165_compaq_c_jp_special_keymap[] = {
138 	[KEY_SPECIAL_OFF]	= -1, /* don't have off button */
139 	[KEY_SPECIAL_LIGHT]	= 51
140 };
141 
142 const u_int8_t m38813c_keymap[] = {
143 /*      0    1    2    3    4    5    6    7 */
144 /* 0 */	0,   1,   2,   3,   4,   5,   6,   7,
145 /* 1 */	8,   9,   10,  11,  12,  13,  14,  15,
146 /* 2 */	16,  17,  18,  19,  20,  21,  22,  23,
147 /* 3 */	24,  25,  26,  27,  28,  29,  30,  31,
148 /* 4 */	32,  33,  34,  35,  36,  37,  38,  39,
149 /* 5 */	40,  41,  42,  43,  44,  45,  46,  47,
150 /* 6 */	48,  49,  50,  51,  52,  53,  54,  55,
151 /* 7 */	56,  57,  58,  59,  60,  61,  62,  63,
152 /* 8 */	64,  65,  66,  67,  68,  69,  70,  71,
153 /* 9 */	200, 73,  74,  203, 76,  205,  78,  79,
154 /*10 */	208, 81,  82,  83,  84,  85,  86,  87,
155 /*11 */	88,  89,  90,  91,  92,  93,  94,  95,
156 /*12 */	96,  97,  98,  99,  100, 101, 102, 103,
157 /*13 */	104, 105, 106, 107, 108, 109, 110, 111,
158 /*14 */	112, 113, 114, 115, 116, 117, 118, 119,
159 /*15 */	120, 121, 122, 123, 124, 125, 126, 127
160 };
161 
162 /* NEC MobileGearII MCR series (Japan) */
163 static u_int8_t mcr_jp_keytrans[] = {
164 /*00	right	ent	p	.	y	b	z	space	*/
165 /*08	down	/	o	,	t	v	a	nfer	*/
166 /*10	left	\	i	m	r	c	w	menu	*/
167 /*18	^	-	u	-	e	x	q	1	*/
168 /*20	pgdn	h/z	0	l	:	g	tab	f1	*/
169 /*28	xfer	;	9	n	5	f	2	k	*/
170 /*30	up	[	8	j	4	d	6	-	*/
171 /*38	-	@	7	h	3	]	s	-	*/
172 /*40	caps	-	-	-	bs	fnc	f8	f3	*/
173 /*48	-	alt	-	-	|	k/h	f7	f4	*/
174 /*50	-	-	ctrl	-	f10	pgup	f6	f2	*/
175 /*58	-	-	-	shift	del	f9	f5	esc	*/
176 /*----------------------------------------------------------------------*/
177 /*00*/	205,	 28,	 25,	 52,	 21,	 48,	 44,	 57,
178 /*08*/	208,	 53,	 24,	 51,	 20,	 47,	 30,	123,
179 /*10*/	203,	115,	 23,	 50,	 19,	 46,	 17,	221,
180 /*18*/	 13,	IGN,	 22,	IGN,	 18,	 45,	 16,	  2,
181 /*20*/	 81,	 41,	 11,	 38,	 40,	 34,	 15,	 59,
182 /*28*/	121,	 39,	 10,	 49,	  6,	 33,	  3,	 37,
183 /*30*/	200,	 27,	  9,	 36,	  5,	 32,	  7,	IGN,
184 /*38*/	 12,	 26,	  8,	 35,	  4,	 43,	 31,	IGN,
185 /*40*/	 58,	IGN,	IGN,	IGN,	 14,	184,	 66,	 61,
186 /*48*/	IGN,	 56,	IGN,	IGN,	125,	112,	 65,	 62,
187 /*50*/	IGN,	IGN,	 29,	IGN,	 68,	 73,	 64,	 60,
188 /*58*/	IGN,	IGN,	IGN,	 42,	 14,	 67,	 63,	  1,
189 };
190 
191 static const keysym_t mcr_jp_cmdmap[] = {
192 /*	pos      command		normal		shifted		*/
193 	KC(184), KS_Cmd,		KS_Alt_R,	KS_Multi_key,
194 	KC(73),  KS_Cmd_BrightnessUp,	KS_KP_Prior,	KS_KP_9,
195 	KC(81),  KS_Cmd_BrightnessDown,	KS_KP_Next,	KS_KP_3,
196 	KC(51),  KS_Cmd_ContrastDown,	KS_comma,	KS_less,
197 	KC(52),  KS_Cmd_ContrastUp,	KS_period,	KS_greater,
198 	KC(57),  KS_Cmd_BacklightToggle,KS_space,
199 };
200 
201 /* IBM WorkPad z50 */
202 static u_int8_t z50_keytrans[] = {
203 /*00	f1	f3	f5	f7	f9	-	-	f11	*/
204 /*08	f2	f4	f6	f8	f10	-	-	f12	*/
205 /*10	'	[	-	0	p	;	up	/	*/
206 /*18	-	-	-	9	o	l	.	-	*/
207 /*20	left	]	=	8	i	k	,	-	*/
208 /*28	h	y	6	7	u	j	m	n	*/
209 /*30	-	bs	num	del	-	\	ent	sp	*/
210 /*38	g	t	5	4	r	f	v	b	*/
211 /*40	-	-	-	3	e	d	c	right	*/
212 /*48	-	-	-	2	w	s	x	down	*/
213 /*50	esc	tab	~	1	q	a	z	-	*/
214 /*58	menu	Ls	Lc	Rc	La	Ra	Rs	-	*/
215 /*----------------------------------------------------------------------*/
216 /*00*/	 59,	 61,	 63,	 65,	 67,	IGN,	IGN,	 87,
217 /*08*/	 60,	 62,	 64,	 66,	 68,	IGN,	IGN,	 88,
218 /*10*/	 40,	 26,	 12,	 11,	 25,	 39,	200,	 53,
219 /*18*/	IGN,	IGN,	IGN,	 10,	 24,	 38,	 52,	IGN,
220 /*20*/	203,	 27,	 13,	  9,	 23,	 37,	 51,	IGN,
221 /*28*/	 35,	 21,	  7,	  8,	 22,	 36,	 50,	 49,
222 /*30*/	IGN,	 14,	 69,	 14,	IGN,	 43,	 28,	 57,
223 /*38*/	 34,	 20,	  6,	  5,	 19,	 33,	 47,	 48,
224 /*40*/	IGN,	IGN,	IGN,	  4,	 18,	 32,	 46,	205,
225 /*48*/	IGN,	IGN,	IGN,	  3,	 17,	 31,	 45,	208,
226 /*50*/	  1,	 15,	 41,	  2,	 16,	 30,	 44,	IGN,
227 /*58*/	221,	 42,	 29,	 29,	 56,	 56,	 54,	IGN,
228 };
229 
230 /* Sharp Tripad PV6000 and VADEM CLIO */
231 static u_int8_t tripad_keytrans[] = {
232 /*00	lsh	tab	`	q	esc	1	WIN	-	*/
233 /*08	ctrl	z	x	a	s	w	e	2	*/
234 /*10	lalt	sp	c	v	d	f	r	3	*/
235 /*18	b	n	g	h	t	y	4	5	*/
236 /*20	m	,	j	k	u	i	6	7	*/
237 /*28	Fn	caps	l	o	p	8	9	0	*/
238 /*30	[	]	la	.	/	;	-	=	*/
239 /*38	rsh	ra	ua	da	'	ent	\	del	*/
240 /*40	-	-	-	-	-	-	-	-	*/
241 /*48	-	-	-	-	-	-	-	-	*/
242 /*50	-	-	-	-	-	-	-	-	*/
243 /*58	-	-	-	-	-	-	-	-	*/
244 /*----------------------------------------------------------------------*/
245 /*00*/	 42,	 15,	 41,	 16,	  1,	  2,	104,	221,
246 /*08*/	 29,	 44,	 45,	 30,	 31,	 17,	 18,	  3,
247 /*10*/	 56,	 57,	 46,	 47,	 32,	 33,	 19,	  4,
248 /*18*/	 48,	 49,	 34,	 35,	 20,	 21,	  5,	  6,
249 /*20*/	 50,	 51,	 36,	 37,	 22,	 23,	  7,	  8,
250 /*28*/	105,	 58,	 38,	 24,	 25,	  9,	 10,	 11,
251 /*30*/	 26,	 27,	203,	 52,	 53,	 39,	 12,	 13,
252 /*38*/	 54,	205,	200,	208,	 40,	 28,	 43,	 14,
253 /*40*/	IGN,	IGN,	IGN,	IGN,	IGN,	IGN,	IGN,	IGN,
254 /*48*/	IGN,	IGN,	IGN,	IGN,	IGN,	IGN,	IGN,	IGN,
255 /*50*/	IGN,	IGN,	IGN,	IGN,	IGN,	IGN,	IGN,	IGN,
256 /*58*/	IGN,	IGN,	IGN,	IGN,	IGN,	IGN,	IGN,	IGN,
257 };
258 
259 /* NEC Mobile Gear MCCS series */
260 static u_int8_t mccs_keytrans[] = {
261 /*00	caps	cr	rar	p	.	y	b	z	*/
262 /*08	alt	[	dar	o	,	t	v	a	*/
263 /*10	zen	@	lar	i	m	r	c	w	*/
264 /*18	lctrl	;	uar	u	n	e	x	q	*/
265 /*20	lshft	bs	\	0	l	6	g	tab	*/
266 /*28	nconv	|	/	9	k	5	f	2	*/
267 /*30	conv	=	]	8	j	4	d	1	*/
268 /*38	hira	-	'	7	h	3	s	esc	*/
269 /*40	-	sp	-	-	-	-	-	-	*/
270 /*48	-	-	-	-	-	-	-	-	*/
271 /*50	-	-	-	-	-	-	-	-	*/
272 /*58	-	-	-	-	-	-	-	-	*/
273 /*----------------------------------------------------------------------*/
274 /*00*/	 58,	 28,	205,	 25,	 52,	 21,	 48,	 44,
275 /*08*/	 56,	 27,	208,	 24,	 51,	 20,	 47,	 30,
276 /*10*/	 41,	 26,	203,	 23,	 50,	 19,	 46,	 17,
277 /*18*/	 29,	 39,	200,	 22,	 49,	 18,	 45,	 16,
278 /*20*/	 42,	 14,	115,	 11,	 38,	  7,	 34,	 15,
279 /*28*/	123,	125,	 53,	 10,	 37,	  6,	 33,	  3,
280 /*30*/	121,	 13,	 43,	  9,	 36,	  5,	 32,	  2,
281 /*38*/	112,	 12,	 40,	  8,	 35,	  4,	 31,	  1,
282 /*40*/	IGN,	 57,	IGN,	IGN,	IGN,	IGN,	IGN,	IGN,
283 /*48*/	IGN,	IGN,	IGN,	IGN,	IGN,	IGN,	IGN,	IGN,
284 /*50*/	IGN,	IGN,	IGN,	IGN,	IGN,	IGN,	IGN,	IGN,
285 /*58*/	IGN,	IGN,	IGN,	IGN,	IGN,	IGN,	IGN,	IGN,
286 };
287 
288 static const keysym_t mccs_cmdmap[] = {
289 /*	pos      command		normal		shifted		*/
290 	KC(51),  KS_Cmd_ContrastDown,	KS_comma,	KS_less,
291 	KC(52),  KS_Cmd_ContrastUp,	KS_period,	KS_greater,
292 	KC(57),  KS_Cmd_BacklightToggle,KS_space,
293 };
294 
295 static u_int8_t mobilepro_keytrans[] = {
296 /*00	space	]	\	/	left	down	enter	l	*/
297 /*08	-	[	'	;	right	up	.	o	*/
298 /*10	-	-	-	Windows	v	c	x	z	*/
299 /*18	-	=	\-	`	f	d	s	a	*/
300 /*20	8	7	6	5	r	e	w	q	*/
301 /*28	,	m	n	b	-	-	0	9	*/
302 /*30	k	j	h	g	4	3	2	1	*/
303 /*38	i	u	y	t	-	caps	del	esc	*/
304 /*40	alt_R	-	-	-	BS	p	TAB	Fn	*/
305 /*48	-	alt_L	-	-	pgdn	pgup	f10	f9	*/
306 /*50	-	-	ctrl	-	f8	f7	f6	f5	*/
307 /*58	-	-	-	shift	f4	f3	f2	f1	*/
308 /*----------------------------------------------------------------------*/
309 /*00*/	 57,	 27,	 43,	 53,	203,	208,	 28,	 38,
310 /*08*/	IGN,	 26,	 40,	 39,	205,	200,	 52,	 24,
311 /*10*/	IGN,	IGN,	IGN,	221,	 47,	 46,	 45,	 44,
312 /*18*/	IGN,	 13,	 12,	 41,	 33,	 32,	 31,	 30,
313 /*20*/	  9,	  8,	  7,	  6,	 19,	 18,	 17,	 16,
314 /*28*/	 51,	 50,	 49,	 48,	IGN,	IGN,	 11,	 10,
315 /*30*/	 37,	 36,	 35,	 34,	  5,	  4,	  3,	  2,
316 /*38*/	 23,	 22,	 21,	 20,	IGN,	 58,	 14,	  1,
317 /*40*/	184,	IGN,	IGN,	IGN,	 14,	 25,	 15,	219,
318 /*48*/	IGN,	 56,	IGN,	IGN,	 81,	 73,	 68,	 67,
319 /*50*/	IGN,	IGN,	 29,	IGN,	 66,	 65,	 64,	 63,
320 /*58*/	IGN,	IGN,	IGN,	 42,	 62,	 61,	 60,	 59,
321 };
322 
323 static const keysym_t mobilepro_cmdmap[] = {
324 /*	pos      command		normal		shifted		*/
325 	KC(219), KS_Cmd,		KS_Meta_L,	KS_Multi_key,
326 	KC(73),  KS_Cmd_BrightnessUp,	KS_KP_Prior,	KS_KP_9,
327 	KC(81),  KS_Cmd_BrightnessDown,	KS_KP_Next,	KS_KP_3,
328 	KC(51),  KS_Cmd_ContrastDown,	KS_comma,	KS_less,
329 	KC(52),  KS_Cmd_ContrastUp,	KS_period,	KS_greater,
330 	KC(57),  KS_Cmd_BacklightToggle,KS_space,
331 };
332 
333 /* NEC MobilePro 750c by "Castor Fu" <castor@geocast.com> */
334 static u_int8_t mobilepro750c_keytrans[] = {
335 /*00	right	\	p	.	y	b	z	space	*/
336 /*08	down	/	o	,	t	v	a	-	*/
337 /*10	left	enter	i	m	r	c	w	Win	*/
338 /*18	num	]	u	n	e	x	q	caps	*/
339 /*20	pgdn	-	0	l	:	g	tab	esc	*/
340 /*28	-	;	9	k	5	f	2	`	*/
341 /*30	up	[	8	j	4	d	1	'	*/
342 /*38	-	@	7	h	3	s	del	-	*/
343 /*40	shift	-	-	-	bs	f12	f8	f4	*/
344 /*48	-	alt	-	-	|	f11	f7	f3	*/
345 /*50	-	-	ctrl	-	f10	f10	f6	f2	*/
346 /*58	-	-	-	shift	del	f9	f5	f1	*/
347 /*----------------------------------------------------------------------*/
348 /*00*/	205,	43,	25,	52,	21,	48,	44,	57,
349 /*08*/	208,	53,	24,	51,	20,	47,	30,	IGN,
350 /*10*/	203,	28,	23,	50,	19,	46,	17,	221,
351 /*18*/	69,	27,	22,	49,	18,	45,	16,	58,
352 /*20*/	81,	IGN,	11,	38,	7,	34,	15,	1,
353 /*28*/	IGN,	39,	10,	37,	6,	33,	3,	41,
354 /*30*/	200,	26,	9,	36,	5,	32,	2,	40,
355 /*38*/	12,	26,	8,	35,	4,	31,	83,	IGN,
356 /*40*/	42,	IGN,	IGN,	IGN,	14,	88,	66,	62,
357 /*48*/	IGN,	56,	IGN,	IGN,	125,	87,	65,	61,
358 /*50*/	IGN,	IGN,	29,	IGN,	68,	68,	64,	60,
359 /*58*/	IGN,	IGN,	IGN,	42,	13,	67,	63,	59,
360 };
361 
362 /* NEC MobilePro 780 */
363 static u_int8_t mobilepro780_keytrans[] = {
364 /*00	space	]	\	/	left	right	enter	l	*/
365 /*08	-	[	'	;	up	down	.	o	*/
366 /*10	-	-	-	Windows	v	c	x	z	*/
367 /*18	-	=	\-	`	f	d	s	a	*/
368 /*20	8	7	6	5	r	e	w	q	*/
369 /*28	,	m	n	b	-	-	0	9	*/
370 /*30	k	j	h	g	4	3	2	1	*/
371 /*38	i	u	y	t	-	caps	del	esc	*/
372 /*40	alt_R	-	-	-	BS	p	TAB	Fn	*/
373 /*48	-	alt_L	-	-	f12	f11	f10	f9	*/
374 /*50	-	-	ctrl	-	f8	f7	f6	f5	*/
375 /*58	-	-	-	shift	f4	f3	f2	f1	*/
376 /*----------------------------------------------------------------------*/
377 /*00*/	 57,	 27,	 43,	 53,	203,	205,	 28,	 38,
378 /*08*/	IGN,	 26,	 40,	 39,	200,	208,	 52,	 24,
379 /*10*/	IGN,	IGN,	IGN,	221,	 47,	 46,	 45,	 44,
380 /*18*/	IGN,	 13,	 12,	 41,	 33,	 32,	 31,	 30,
381 /*20*/	  9,	  8,	  7,	  6,	 19,	 18,	 17,	 16,
382 /*28*/	 51,	 50,	 49,	 48,	IGN,	IGN,	 11,	 10,
383 /*30*/	 37,	 36,	 35,	 34,	  5,	  4,	  3,	  2,
384 /*38*/	 23,	 22,	 21,	 20,	IGN,	 58,	 14,	  1,
385 /*40*/	184,	IGN,	IGN,	IGN,	 14,	 25,	 15,	IGN,
386 /*48*/	IGN,	 56,	IGN,	IGN,	 88,	 87,	 68,	 67,
387 /*50*/	IGN,	IGN,	 29,	IGN,	 66,	 65,	 64,	 63,
388 /*58*/	IGN,	IGN,	IGN,	 42,	 62,	 61,	 60,	 59,
389 };
390 
391 /* FUJITSU INTERTOP CX300 */
392 static u_int8_t intertop_keytrans[] = {
393 /*00	space   a2      1       tab     enter   caps    left    zenkaku	*/
394 /*08	hiraga  a1      2       q       -       a       fnc     esc	*/
395 /*10	ins     w       3       s       del     ]       down    x	*/
396 /*18	z       e       4       d       a10     \       right   c	*/
397 /*20	backsla r       ;       f       a9      @       ^       v	*/
398 /*28	/       t       5       g       a8      p       -       b	*/
399 /*30	.       y       6       h       a7      l       0       n	*/
400 /*38	-       u       7       j       a5      o       bs      m	*/
401 /*40	-       a3      8       a4      -       i       k       ,	*/
402 /*48	num     :       9       [       a6      -       up      -	*/
403 /*50	-       -       -       -       shift_L -       -       shift_R	*/
404 /*58	ctrl    win     muhenka henkan  alt     -       -       -	*/
405 /*----------------------------------------------------------------------*/
406 /*00*/	57,	60,	2,	15,	28,	58,	205,	41,
407 /*08*/	112,	59,	3,	16,	IGN,	30,	56,	1,
408 /*10*/	210,	17,	4,	31,	83,	43,	208,	45,
409 /*18*/	44,	18,	5,	32,	68,	125,	203,	46,
410 /*20*/	115,	19,	39,	33,	67,	26,	13,	47,
411 /*28*/	53,	20,	6,	34,	66,	25,	12,	48,
412 /*30*/	52,	21,	7,	35,	65,	38,	11,	49,
413 /*38*/	IGN,	22,	8,	36,	63,	24,	14,	50,
414 /*40*/	IGN,	61,	9,	62,	IGN,	23,	37,	51,
415 /*48*/	69,	40,	10,	27,	64,	IGN,	200,	IGN,
416 /*50*/	IGN,	IGN,	IGN,	IGN,	42,	IGN,	IGN,	54,
417 /*58*/	29,	221,	123,	121,	184,	IGN,	IGN,	IGN,
418 };
419 
420 /* DoCoMo sigmarion (Japan) */
421 static u_int8_t sigmarion_jp_keytrans[] = {
422 /*00	right	ent	p	.	y	b	z	space	*/
423 /*08	down	/	o	,	t	v	a	nfer	*/
424 /*10	left	\	i	m	r	c	w	menu	*/
425 /*18	|	-	u	-	e	x	q	1	*/
426 /*20	pgdn	h/z	0	l	:	g	tab	f1	*/
427 /*28	xfer	;	9	n	5	f	2	k	*/
428 /*30	up	[	8	j	4	d	6	-	*/
429 /*38	-	@	7	h	3	]	s	-	*/
430 /*40	caps	-	-	-	bs	fnc	f8	f3	*/
431 /*48	-	alt	-	-	^	k/h	f7	f4	*/
432 /*50	-	-	ctrl	-	f10	pgup	f6	f2	*/
433 /*58	-	-	-	shift	del	f9	f5	esc	*/
434 /*----------------------------------------------------------------------*/
435 /*00*/	205,	 28,	 25,	 52,	 21,	 48,	 44,	 57,
436 /*08*/	208,	 53,	 24,	 51,	 20,	 47,	 30,	123,
437 /*10*/	203,	115,	 23,	 50,	 19,	 46,	 17,	221,
438 /*18*/	125,	IGN,	 22,	IGN,	 18,	 45,	 16,	  2,
439 /*20*/	 81,	 41,	 11,	 38,	 40,	 34,	 15,	IGN,
440 /*28*/	121,	 39,	 10,	 49,	  6,	 33,	  3,	 37,
441 /*30*/	200,	 27,	  9,	 36,	  5,	 32,	  7,	IGN,
442 /*38*/	 12,	 26,	  8,	 35,	  4,	 43,	 31,	IGN,
443 /*40*/	 58,	IGN,	IGN,	IGN,	 14,	184,	 66,	IGN,
444 /*48*/	IGN,	 56,	IGN,	IGN,	 13,	112,	 65,	IGN,
445 /*50*/	IGN,	IGN,	 29,	IGN,	 68,	 73,	 64,	IGN,
446 /*58*/	IGN,	IGN,	IGN,	 42,	 14,	 67,	IGN,	  1,
447 };
448 
449 static const keysym_t sigmarion_cmdmap[] = {
450 /*	pos      command		normal		shifted		*/
451 	KC(184), KS_Cmd,		KS_Alt_R,	KS_Multi_key,
452 	KC(64),  KS_Cmd_Screen0,	KS_f6,		KS_f1,
453 	KC(65),  KS_Cmd_Screen1,	KS_f7,		KS_f2,
454 	KC(66),  KS_Cmd_Screen2,	KS_f8,		KS_f3,
455 	KC(67),  KS_Cmd_Screen3,	KS_f9,		KS_f4,
456 	KC(68),  KS_Cmd_Screen4,	KS_f10,		KS_f5,
457 	KC(27),  KS_Cmd_BrightnessUp,	KS_bracketleft,	KS_braceleft,
458 	KC(43),  KS_Cmd_BrightnessDown,	KS_bracketright,KS_braceright,
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 /* NTT DoCoMo Pocket PostPet (Japan) */
465 static u_int8_t pocketpostpet_keytrans[] = {
466 /*00	esc	1	q	a	ctrl	-	down	left	*/
467 /*08	tab	2	w	s	z	-	right	up	*/
468 /*10	pgup	3	e	d	x	shift	-	-	*/
469 /*18	pgdn	4	r	f	c	alt	-	-	*/
470 /*20	f5	5	t	g	v	nfer	-	-	*/
471 /*28	f6	6	y	h	b	-	-	-	*/
472 /*30	f7	7	u	j	n	space	-	-	*/
473 /*38	f8	8	i	k	m	-	-	-	*/
474 /*40	f9	9	o	l	,	xfer	-	-	*/
475 /*48	f10	0	p	;	.	-	-	-	*/
476 /*50	\|	minus	@	:	/	ent	-	-	*/
477 /*58	bs	^	[	]	\_	del	-	-	*/
478 /* MailCheck  -> tab	*/
479 /* Prev       -> pgup	*/
480 /* Next       -> pgdn	*/
481 /* tab        -> ctrl	*/
482 /* h/z        -> menu	*/
483 /* k/h        -> alt	*/
484 /* knj        -> nfer	*/
485 /* eng        -> xfer	*/
486 /*----------------------------------------------------------------------*/
487 /*00*/	1,	2,	16,	30,	29,	UNK,	208,	203,
488 /*08*/	15,	3,	17,	31,	44,	UNK,	205,	200,
489 /*10*/	73,	4,	18,	32,	45,	42,	UNK,	UNK,
490 /*08*/	81,	5,	19,	33,	46,	56,	UNK,	UNK,
491 /*20*/	63,	6,	20,	34,	47,	123,	UNK,	UNK,
492 /*28*/	64,	7,	21,	35,	48,	UNK,	UNK,	UNK,
493 /*30*/	65,	8,	22,	36,	49,	57,	UNK,	UNK,
494 /*38*/	66,	9,	23,	37,	50,	UNK,	UNK,	UNK,
495 /*40*/	67,	10,	24,	38,	51,	121,	UNK,	UNK,
496 /*48*/	68,	11,	25,	39,	52,	UNK,	UNK,	UNK,
497 /*50*/	125,	12,	26,	40,	53,	28,	UNK,	UNK,
498 /*58*/	14,	13,	27,	43,	115,	14,	UNK,	UNK,
499 };
500 #endif /* hpcmips */
501 
502 #ifdef hpcsh
503 /*
504  * HP Jornada 680/690
505  */
506 /* Japanese */
507 const u_int8_t jornada6x0_jp_keytrans[] = {
508 /*      0    1    2    3    4    5    6    7 */
509 /* 0 */ 59 , 45 , 31 , 17 , 3  , UNK, 29 , UNK, /* ctrl 29 */
510 /* 1 */ 60 , 46 , 32 , 18 , 4  , 42 , UNK, UNK, /* shift L 42 */
511 /* 2 */ 61 , 47 , 33 , 19 , 5  , UNK, 57 , UNK,
512 /* 3 */ 66 , 52 , 38 , 24 , 10 , UNK, 14 , 203,
513 /* 4 */ 65 , 51 , 37 , 23 , 9  , UNK, 115, UNK,
514 /* 5 */ 64 , 50 , 36 , 22 , 8  , UNK, 121, UNK,
515 /* 6 */ 62 , 48 , 34 , 20 , 6  , UNK, UNK, 56 , /* alt 56 */
516 /* 7 */ 63 , 49 , 35 , 21 , 7  , UNK, UNK, 123,
517 /* 8 */ IGN, 53 , 39 , 25 , 11 , 200, UNK, 208,
518 /* 9 */ 112, 40 , 27 , 26 , 12 , 125, UNK, 205,
519 /*10 */ 41 , 28 , 43 , 14 , 13 , 54 , UNK, UNK, /* shift R 54 */
520 /*11 */ SPL, IGN, IGN, IGN, IGN, IGN, IGN, IGN,
521 /*12 */ 1  , 44 , 30 , 16 , 2  , 15 , 221, UNK,
522 /*13 */ UNK, UNK, UNK, UNK, UNK, UNK, UNK, UNK,
523 /*14 */ UNK, UNK, UNK, UNK, UNK, UNK, UNK, UNK,
524 /*15 */ UNK, UNK, UNK, UNK, UNK, UNK, UNK, UNK,
525 };
526 
527 /* US (international?) */
528 const u_int8_t jornada6x0_us_keytrans[] = {
529 /*      0    1    2    3    4    5    6    7 */
530 /* 0 */ 59 , 45 , 31 , 17 , 3  , UNK, 29 , UNK, /* ctrl 29 */
531 /* 1 */ 60 , 46 , 32 , 18 , 4  , 42 , UNK, UNK, /* shift L 42 */
532 /* 2 */ 61 , 47 , 33 , 19 , 5  , UNK, 57 , UNK,
533 /* 3 */ 66 , 52 , 38 , 24 , 10 , UNK, 14 , 203,
534 /* 4 */ 65 , 51 , 37 , 23 , 9  , UNK, 184, UNK,
535 /* 5 */ 64 , 50 , 36 , 22 , 8  , UNK, UNK, UNK,
536 /* 6 */ 62 , 48 , 34 , 20 , 6  , UNK, UNK, 56 , /* alt 56 */
537 /* 7 */ 63 , 49 , 35 , 21 , 7  , UNK, UNK,  41,
538 /* 8 */ 67 , 53 , 39 , 25 , 11 , 200, UNK, 208,
539 /* 9 */ 68 , 40 , 27 , 26 , 12 , 125, UNK, 205,
540 /*10 */ 87 , 28 , 43 , 14 , 13 , 54 , UNK, UNK, /* shift R 54 */
541 /*11 */ SPL, IGN, IGN, IGN, IGN, IGN, IGN, IGN,
542 /*12 */ 1  , 44 , 30 , 16 , 2  , 15 , 221, UNK,
543 /*13 */ UNK, UNK, UNK, UNK, UNK, UNK, UNK, UNK,
544 /*14 */ UNK, UNK, UNK, UNK, UNK, UNK, UNK, UNK,
545 /*15 */ UNK, UNK, UNK, UNK, UNK, UNK, UNK, UNK,
546 };
547 
548 /* Hungarian */
549 const u_int8_t jornada6x0_hu_keytrans[] = {
550 /*      0    1    2    3    4    5    6    7 */
551 /* 0 */ 59 ,  45,  31,  17,   3, UNK,  29, UNK,
552 /* 1 */ 60 ,  46,  32,  18,   4,  42, UNK, UNK,
553 /* 2 */ 61 ,  47,  33,  19,   5, UNK,  57, UNK,
554 /* 3 */ 66 ,  52,  38,  24,  10, UNK,  14, 203,
555 /* 4 */ 65 ,  51,  37,  23,   9, UNK, 184, UNK,
556 /* 5 */ 64 ,  50,  36,  22,   8, UNK, UNK, UNK,
557 /* 6 */ 62 ,  48,  34,  20,   6, UNK, UNK,  56,
558 /* 7 */ 63 ,  49,  35,  21,   7, UNK, UNK,  41,
559 /* 8 */ 67 ,  53,  39,  25,  11, 200, UNK, 208,
560 /* 9 */ 68 ,  40,  27,  26,  12, UNK, UNK, 205,
561 /*10 */ 87 ,  28,  43,  14,  13,  54, UNK, UNK,
562 /*11 */ UNK, UNK, UNK, UNK, UNK, UNK, UNK, UNK,
563 /*12 */   1,  44,  30,  16,   2,  15, UNK, UNK,
564 /*13 */ UNK, UNK, UNK, UNK, UNK, UNK, UNK, UNK,
565 /*14 */ UNK, UNK, UNK, UNK, UNK, UNK, UNK, UNK,
566 /*15 */ UNK, UNK, UNK, UNK, UNK, UNK, UNK, UNK
567 };
568 
569 const int jornada6x0_special_keymap[] = {
570 	[KEY_SPECIAL_OFF]	= 88,
571 	[KEY_SPECIAL_LIGHT]	= -1
572 };
573 
574 /*
575  * HP 620LX
576  */
577 /* Japanese */
578 const u_int8_t hp620lx_jp_keytrans[] = {
579 /*      0    1    2    3    4    5    6    7 */
580 /* 0 */	2  , 16 , 112, UNK, IGN, UNK, 42 , 30 , /* REC button */
581 /* 1 */	3  , 17 , 58 , 44 , UNK, 45 , 15 , 31 ,
582 /* 2 */	4  , 18 , UNK, 56 , 59 , 46 , 1  , 32 ,
583 /* 3 */	5  , 19 , UNK, UNK, 60 , 123, UNK, 33 ,
584 /* 4 */	6  , 20 , 47 , 57 , 61 , 48 , UNK, 34 ,
585 /* 5 */	7  , 21 , UNK, 121, 62 , 49 , UNK, 35 ,
586 /* 6 */	8  , 22 , UNK, 125, 63 , 50 , UNK, 36 ,
587 /* 7 */	9  , 23 , 52 , 115, 64 , 51 , UNK, 37 ,
588 /* 8 */	10 , 24 , 53 , 203, 65 , 200, 39 , 38 ,
589 /* 9 */	11 , 25 , 40 , 208, 66 , 205, 27 , 26 ,
590 /*10 */	12 , 13 , 28 , UNK, UNK, UNK, 41 , 43 ,
591 /*11 */	SPL, IGN, IGN, IGN, IGN, IGN, IGN, IGN, /* ON button */
592 /*12 */	29 , IGN, IGN, IGN, IGN, IGN, IGN, IGN,
593 /*13 */	14 , IGN, IGN, IGN, IGN, IGN, IGN, IGN,
594 /*14 */	UNK, UNK, UNK, UNK, UNK, UNK, UNK, UNK,
595 /*15 */	SPL, IGN, IGN, IGN, IGN, IGN, IGN, IGN  /* LED button */
596 };
597 
598 const int hp620lx_special_keymap[] = {
599 	[KEY_SPECIAL_OFF]	= 88,
600 	[KEY_SPECIAL_LIGHT]	= 120
601 };
602 
603 /*
604  * HITACHI PERSONA HPW50PAD
605  */
606 /* Japanese */
607 const u_int8_t persona_hpw50pad_jp_keytrans[] = {
608 /*      0    1    2    3    4    5    6    7 */
609 /* 0 */ SPL, UNK, 61 , 59 , UNK, 60 , 62 , UNK,
610 /* 1 */ UNK, UNK, UNK, 29 , UNK, UNK, 123, UNK,
611 /* 2 */ UNK, UNK, UNK, 1  , UNK, 56 , 46 , UNK,
612 /* 3 */ UNK, UNK, 221, 41 , UNK, 15 , 33 , UNK,
613 /* 4 */ 42 , UNK, 58 , 45 , UNK, 44 , 20 , UNK,
614 /* 5 */ 54 , UNK, 16 , 30 , UNK, 2  , 6  , UNK,
615 /* 6 */ 205, UNK, 4  , 17 , UNK, 3  , 5  , UNK,
616 /* 7 */ 14 , UNK, 18 , 31 , UNK, 32 , 19 , UNK,
617 /* 8 */ UNK, UNK, 68 , 67 , 66 , 65 , 64 , 63 ,
618 /* 9 */ UNK, UNK, 203, 121, 53 , 48 , 49 , 47 ,
619 /*10 */ UNK, UNK, 208, 112, 57 , 51 , 50 , 34 ,
620 /*11 */ UNK, UNK, 43 , 52 , 39 , 37 , 36 , 35 ,
621 /*12 */ UNK, UNK, 27 , 40 , 26 , 38 , 23 , 22 ,
622 /*13 */ UNK, UNK, 200, 28 , 115, 24 , 9  , 21 ,
623 /*14 */ UNK, UNK, 125, 12 , UNK, 10 , UNK, UNK,
624 /*15 */ UNK, UNK, 14 , 13 , 11 , 25 , 8  , 7  ,
625 };
626 
627 const int persona_hpw50pad_special_keymap[] = {
628 	[KEY_SPECIAL_OFF]	=  0,
629 	[KEY_SPECIAL_LIGHT]	= -1
630 };
631 
632 #endif /* hpcsh */
633 
634 const struct hpckbd_keymap_table {
635 	platid_t	*ht_platform;
636 	const u_int8_t	*ht_keymap;
637 	const int	*ht_special;
638 	struct {
639 		const keysym_t	*map;
640 		int size;
641 	} ht_cmdmap;
642 	kbd_t		ht_layout;
643 } hpckbd_keymap_table[] = {
644 #ifdef hpcmips
645 	{	&platid_mask_MACH_COMPAQ_C,
646 		tc5165_compaq_c_jp_keymap,
647 		tc5165_compaq_c_jp_special_keymap,
648 		NULLCMDMAP,
649 		KB_JP },
650 	{	&platid_mask_MACH_VICTOR_INTERLINK,
651 		m38813c_keymap,
652 		default_special_keymap,
653 		NULLCMDMAP,
654 		KB_JP },
655 	{	&platid_mask_MACH_SHARP_TELIOS,
656 		tc5165_telios_jp_keymap,
657 		default_special_keymap,
658 		NULLCMDMAP,
659 		KB_JP },
660 	{	&platid_mask_MACH_SHARP_MOBILON,
661 		tc5165_mobilon_keymap,
662 		tc5165_mobilon_special_keymap,
663 		NULLCMDMAP,
664 		KB_US },
665 	{	&platid_mask_MACH_NEC_MCR_500A,
666 		mobilepro750c_keytrans,
667 		NULL,
668 		NULLCMDMAP,
669 		KB_US },
670 	{	&platid_mask_MACH_NEC_MCR_520A,
671 		mobilepro_keytrans,
672 		NULL,
673 		CMDMAP(mobilepro_cmdmap),
674 		KB_US },
675 	{	&platid_mask_MACH_NEC_MCR_530A,
676 		mobilepro780_keytrans,
677 		NULL,
678 		NULLCMDMAP,
679 		KB_US },
680 	{	&platid_mask_MACH_NEC_MCR_700A,
681 		mobilepro_keytrans,
682 		NULL,
683 		NULLCMDMAP,
684 		KB_US },
685 	{	&platid_mask_MACH_NEC_MCR_730A,
686 		mobilepro_keytrans,
687 		NULL,
688 		NULLCMDMAP,
689 		KB_US },
690 	{	&platid_mask_MACH_NEC_MCR_MPRO700,
691 		mobilepro_keytrans,
692 		NULL,
693 		NULLCMDMAP,
694 		KB_US },
695 	{	&platid_mask_MACH_NEC_MCR_SIGMARION,
696 		sigmarion_jp_keytrans,
697 		NULL,
698 		CMDMAP(sigmarion_cmdmap),
699 		KB_JP },
700 	{	&platid_mask_MACH_NEC_MCR_SIGMARION2,
701 		sigmarion_jp_keytrans,
702 		NULL,
703 		CMDMAP(sigmarion_cmdmap),
704 		KB_JP },
705 	{	&platid_mask_MACH_NEC_MCR,
706 		mcr_jp_keytrans,
707 		NULL,
708 		CMDMAP(mcr_jp_cmdmap),
709 		KB_JP },
710 	{	&platid_mask_MACH_IBM_WORKPAD_Z50,
711 		z50_keytrans,
712 		NULL,
713 		NULLCMDMAP,
714 		KB_US },
715 	{	&platid_mask_MACH_SHARP_TRIPAD,
716 		tripad_keytrans,
717 		NULL,
718 		NULLCMDMAP,
719 		KB_US },
720 	{	&platid_mask_MACH_VADEM_CLIO_C,
721 		tripad_keytrans,
722 		NULL,
723 		NULLCMDMAP,
724 		KB_US },
725 	{	&platid_mask_MACH_NEC_MCCS,
726 		mccs_keytrans,
727 		NULL,
728 		CMDMAP(mccs_cmdmap),
729 		KB_JP },
730 	{	&platid_mask_MACH_FUJITSU_INTERTOP,
731 		intertop_keytrans,
732 		NULL,
733 		NULLCMDMAP,
734 		KB_JP },
735 	{	&platid_mask_MACH_CASIO_POCKETPOSTPET,
736 		pocketpostpet_keytrans,
737 		NULL,
738 		NULLCMDMAP,
739 		KB_JP },
740 #endif /* hpcmips */
741 #ifdef hpcsh
742 	/*
743 	 * HP Jornada 680/690
744 	 */
745 	/* Japanese */
746 	{	&platid_mask_MACH_HP_JORNADA_680JP,
747 		jornada6x0_jp_keytrans,
748 		jornada6x0_special_keymap,
749 		NULLCMDMAP,
750 		KB_JP },
751 	{	&platid_mask_MACH_HP_JORNADA_690JP,
752 		jornada6x0_jp_keytrans,
753 		jornada6x0_special_keymap,
754 		NULLCMDMAP,
755 		KB_JP },
756 	/* US (international?) */
757 	{	&platid_mask_MACH_HP_JORNADA_680,
758 		jornada6x0_us_keytrans,
759 		jornada6x0_special_keymap,
760 		NULLCMDMAP,
761 		KB_US },
762 	{	&platid_mask_MACH_HP_JORNADA_690,
763 		jornada6x0_us_keytrans,
764 		jornada6x0_special_keymap,
765 		NULLCMDMAP,
766 		KB_US },
767 	/* Hungarian */
768 	{	&platid_mask_MACH_HP_JORNADA_680HU,
769 		jornada6x0_hu_keytrans,
770 		jornada6x0_special_keymap,
771 		NULLCMDMAP,
772 		KB_US }, /* XXX should be KB_HU */
773 	{	&platid_mask_MACH_HP_JORNADA_690HU,
774 		jornada6x0_hu_keytrans,
775 		jornada6x0_special_keymap,
776 		NULLCMDMAP,
777 		KB_US }, /* XXX should be KB_HU */
778 	/* German */
779 	{	&platid_mask_MACH_HP_JORNADA_680DE,
780 		jornada6x0_hu_keytrans, /* XXX may be */
781 		jornada6x0_special_keymap,
782 		NULLCMDMAP,
783 		KB_DE },
784 	{	&platid_mask_MACH_HP_JORNADA_690DE,
785 		jornada6x0_hu_keytrans, /* XXX may be */
786 		jornada6x0_special_keymap,
787 		NULLCMDMAP,
788 		KB_DE },
789 	/*
790 	 * HP 620LX
791 	 */
792 	/* Japanese */
793 	{	&platid_mask_MACH_HP_LX_620JP,
794 		hp620lx_jp_keytrans,
795 		hp620lx_special_keymap,
796 		NULLCMDMAP,
797 		KB_JP },
798 	/*
799 	 * PERSONA HPW50PAD
800 	 */
801 	/* Japanese */
802 	{ 	&platid_mask_MACH_HITACHI_PERSONA_HPW50PAD,
803 		persona_hpw50pad_jp_keytrans,
804 		persona_hpw50pad_special_keymap,
805 		NULLCMDMAP,
806 		KB_JP },
807 #endif /* hpcsh */
808 	{ NULL } /* end mark */
809 };
810