Home | History | Annotate | Line # | Download | only in hpc
      1 /*	$NetBSD: hpckbdkeymap.h,v 1.51 2011/08/06 03:53:40 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  *
     16  * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
     17  * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
     18  * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
     19  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
     20  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
     21  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
     22  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
     23  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
     24  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
     25  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
     26  * POSSIBILITY OF SUCH DAMAGE.
     27  */
     28 
     29 #define UNK		255	/* unknown */
     30 #define IGN		254	/* ignore */
     31 #define SPL		253	/* special key */
     32 #define KC(n)		KS_KEYCODE(n)
     33 #define CMDMAP(map)	{ map, (sizeof(map)/sizeof(keysym_t)) }
     34 #define NULLCMDMAP	{ NULL, 0 }
     35 
     36 #define KEY_SPECIAL_OFF		0
     37 #define KEY_SPECIAL_LIGHT	1
     38 
     39 const uint8_t default_keymap[] = {
     40 /*      0    1    2    3    4    5    6    7 */
     41 /* 0 */	UNK, UNK, UNK, UNK, UNK, UNK, UNK, UNK,
     42 /* 1 */	UNK, UNK, UNK, UNK, UNK, UNK, UNK, UNK,
     43 /* 2 */	UNK, UNK, UNK, UNK, UNK, UNK, UNK, UNK,
     44 /* 3 */	UNK, UNK, UNK, UNK, UNK, UNK, UNK, UNK,
     45 /* 4 */	UNK, UNK, UNK, UNK, UNK, UNK, UNK, UNK,
     46 /* 5 */	UNK, UNK, UNK, UNK, UNK, UNK, UNK, UNK,
     47 /* 6 */	UNK, UNK, UNK, UNK, UNK, UNK, UNK, UNK,
     48 /* 7 */	UNK, UNK, UNK, UNK, UNK, UNK, UNK, UNK,
     49 /* 8 */	UNK, UNK, UNK, UNK, UNK, UNK, UNK, UNK,
     50 /* 9 */	UNK, UNK, UNK, UNK, UNK, UNK, UNK, UNK,
     51 /*10 */	UNK, UNK, UNK, UNK, UNK, UNK, UNK, UNK,
     52 /*11 */	UNK, UNK, UNK, UNK, UNK, UNK, UNK, UNK,
     53 /*12 */	UNK, UNK, UNK, UNK, UNK, UNK, UNK, UNK,
     54 /*13 */	UNK, UNK, UNK, UNK, UNK, UNK, UNK, UNK,
     55 /*14 */	UNK, UNK, UNK, UNK, UNK, UNK, UNK, UNK,
     56 /*15 */	UNK, UNK, UNK, UNK, UNK, UNK, UNK, UNK
     57 };
     58 
     59 const int default_special_keymap[] = {
     60 	[KEY_SPECIAL_OFF]	= -1,
     61 	[KEY_SPECIAL_LIGHT]	= -1
     62 };
     63 
     64 #ifdef hpcmips
     65 const uint8_t tc5165_mobilon_keymap[] = {
     66 /*      0    1    2    3    4    5    6    7 */
     67 /* 0 */	37 , 45 , 44 , UNK, 9  , 51 , 23 , UNK,
     68 /* 1 */	UNK, 56 , UNK, UNK, UNK, UNK, UNK, UNK,
     69 /* 2 */	UNK, UNK, 29 , UNK, UNK, UNK, UNK, UNK,
     70 /* 3 */	24 , 203, UNK, 38 , 10 , 27 , 13 , UNK,
     71 /* 4 */	40 , UNK, UNK, 39 , 26 , 53 , 11 , 12 ,
     72 /* 5 */	UNK, UNK, UNK, 53 , 25 , UNK, UNK, SPL, /* Light */
     73 /* 6 */	208, UNK, UNK, UNK, 52 , UNK, 43 , 14 ,
     74 /* 7 */	205, 200, UNK, UNK, SPL, UNK, UNK, 28 , /* Off key */
     75 /* 8 */	UNK, 41 , 59 , 15 , 2  , UNK, UNK, UNK,
     76 /* 9 */	63 , 64 , 1  , UNK, 65 , 16 , 17 , UNK,
     77 /*10 */	60 , UNK, 61 , 62 , 3  , UNK, UNK, UNK,
     78 /*11 */	UNK, UNK, UNK, 42 , 58 , UNK, UNK, UNK,
     79 /*12 */	47 , 33 , 46 , 5  , 4  , 18 , 19 , UNK,
     80 /*13 */	34 , 35 , 20 , 48 , 6  , 7  , 21 , 49 ,
     81 /*14 */	22 , 31 , 32 , 36 , 8  , 30 , 50 , 57 ,
     82 /*15 */	UNK, IGN, UNK, UNK, UNK, UNK, UNK, UNK /* Windows key */
     83 };
     84 
     85 const int tc5165_mobilon_special_keymap[] = {
     86 	[KEY_SPECIAL_OFF]	= -1,	/* 60 */
     87 	[KEY_SPECIAL_LIGHT]	= 47
     88 };
     89 
     90 const uint8_t tc5165_telios_jp_keymap[] = {
     91 /*      0    1    2    3    4    5    6    7 */
     92 /* 0 */	58,  15,  IGN, 1,   IGN, IGN, IGN, IGN,
     93 /* 1 */	IGN, IGN, IGN, IGN, 54,  42,  IGN, IGN,
     94 /* 2 */	31,  18,  4,   IGN, IGN, 32,  45,  59,
     95 /* 3 */	33,  19,  5,   61,  IGN, 46,  123, 60,
     96 /* 4 */	35,  21,  8,   64,  IGN, 48,  49,  63,
     97 /* 5 */	17,  16,  3,   IGN, 2,   30,  44,  41,
     98 /* 6 */	IGN, IGN, IGN, IGN, IGN, IGN, 221, IGN,
     99 /* 7 */	IGN, IGN, IGN, IGN, IGN, IGN, 56,  IGN,
    100 /* 8 */	34,  20,  7,   IGN, 6,   47,  57,  62,
    101 /* 9 */	IGN, IGN, IGN, IGN, IGN, IGN, 29,  IGN,
    102 /*10 */	27,  125, 13,  203, 208, 40,  115, 68,
    103 /*11 */	39,  26,  25,  112, 12,  52,  53,  67,
    104 /*12 */	37,  24,  11,  121, 10,  38,  51,  66,
    105 /*13 */	23,  22,  9,   IGN, IGN, 36,  50,  65,
    106 /*14 */	28,  43,  14,  200, 205, IGN, IGN, 211,
    107 /*15 */	IGN, IGN, IGN, IGN, IGN, IGN, 184, IGN
    108 };
    109 
    110 static const keysym_t tc5165_telios_jp_cmdmap[] = {
    111 /*	pos      command		normal		shifted		*/
    112 	KC(184), KS_Cmd,		KS_Alt_R,	KS_Multi_key,
    113 	KC(205), KS_Cmd_BrightnessUp,	KS_Right,
    114 	KC(203), KS_Cmd_BrightnessDown,	KS_Left,
    115 	KC(57),  KS_Cmd_BacklightToggle,KS_space,
    116 };
    117 
    118 const uint8_t tc5165_compaq_c_jp_keymap[] = {
    119 /*      0    1    2    3    4    5    6    7 */
    120 /* 0 */	38,  50,  49,  48,  47,  46,  45,  44,
    121 /* 1 */	56,  IGN, IGN, IGN, IGN, IGN, IGN, IGN,
    122 /* 2 */	13,  IGN, 112, 121, 123, 41,  28,  57,
    123 /* 3 */	205, 203, 208, 200, 39,  53,  52,  51,
    124 /* 4 */	24,  25,  40,  IGN, 43,  26,  115, 58,
    125 /* 5 */	54,  IGN, IGN, IGN, IGN, IGN, IGN, IGN,
    126 /* 6 */	IGN, IGN, IGN, SPL, IGN, IGN, IGN, IGN, /* Light */
    127 /* 7 */	IGN, IGN, IGN, IGN, IGN, IGN, IGN, IGN,
    128 /* 8 */	42,  IGN, IGN, IGN, IGN, IGN, IGN, IGN,
    129 /* 9 */	29,  IGN, IGN, IGN, IGN, IGN, IGN, IGN,
    130 /*10 */	221, IGN, IGN, IGN, IGN, IGN, IGN, IGN,
    131 /*11 */	221, IGN, IGN, IGN, IGN, IGN, IGN, IGN,
    132 /*12 */	14,  27,  12,  11,  10,  15,  1,   125,
    133 /*13 */	9,   8,   7,   6,   5,   4,   3,   2,
    134 /*14 */	23,  22,  21,  20,  19,  18,  17,  16,
    135 /*15 */	37,  36,  35,  34,  33,  32,  31,  30
    136 };
    137 
    138 const int tc5165_compaq_c_jp_special_keymap[] = {
    139 	[KEY_SPECIAL_OFF]	= -1, /* don't have off button */
    140 	[KEY_SPECIAL_LIGHT]	= 51
    141 };
    142 
    143 const uint8_t m38813c_keymap[] = {
    144 /*      0    1    2    3    4    5    6    7 */
    145 /* 0 */	0,   1,   2,   3,   4,   5,   6,   7,
    146 /* 1 */	8,   9,   10,  11,  12,  13,  14,  15,
    147 /* 2 */	16,  17,  18,  19,  20,  21,  22,  23,
    148 /* 3 */	24,  25,  26,  27,  28,  29,  30,  31,
    149 /* 4 */	32,  33,  34,  35,  36,  37,  38,  39,
    150 /* 5 */	40,  41,  42,  43,  44,  45,  46,  47,
    151 /* 6 */	48,  49,  50,  51,  52,  53,  54,  55,
    152 /* 7 */	56,  57,  58,  59,  60,  61,  62,  63,
    153 /* 8 */	64,  65,  66,  67,  68,  69,  70,  71,
    154 /* 9 */	200, 73,  74,  203, 76,  205,  78,  79,
    155 /*10 */	208, 81,  82,  83,  84,  85,  86,  87,
    156 /*11 */	88,  89,  90,  91,  92,  93,  94,  95,
    157 /*12 */	96,  97,  98,  99,  100, 101, 102, 103,
    158 /*13 */	104, 105, 106, 107, 108, 109, 110, 111,
    159 /*14 */	112, 113, 114, 115, 116, 117, 118, 119,
    160 /*15 */	120, 121, 122, 123, 124, 125, 126, 127
    161 };
    162 
    163 /* NEC MobileGearII MCR series (Japan) */
    164 static uint8_t mcr_jp_keytrans[] = {
    165 /*00	right	ent	p	.	y	b	z	space	*/
    166 /*08	down	/	o	,	t	v	a	nfer	*/
    167 /*10	left	\	i	m	r	c	w	menu	*/
    168 /*18	^	-	u	-	e	x	q	1	*/
    169 /*20	pgdn	h/z	0	l	:	g	tab	f1	*/
    170 /*28	xfer	;	9	n	5	f	2	k	*/
    171 /*30	up	[	8	j	4	d	6	-	*/
    172 /*38	-	@	7	h	3	]	s	-	*/
    173 /*40	caps	-	-	-	bs	fnc	f8	f3	*/
    174 /*48	-	alt	-	-	|	k/h	f7	f4	*/
    175 /*50	-	-	ctrl	-	f10	pgup	f6	f2	*/
    176 /*58	-	-	-	shift	del	f9	f5	esc	*/
    177 /*----------------------------------------------------------------------*/
    178 /*00*/	205,	 28,	 25,	 52,	 21,	 48,	 44,	 57,
    179 /*08*/	208,	 53,	 24,	 51,	 20,	 47,	 30,	123,
    180 /*10*/	203,	115,	 23,	 50,	 19,	 46,	 17,	221,
    181 /*18*/	 13,	IGN,	 22,	IGN,	 18,	 45,	 16,	  2,
    182 /*20*/	 81,	 41,	 11,	 38,	 40,	 34,	 15,	 59,
    183 /*28*/	121,	 39,	 10,	 49,	  6,	 33,	  3,	 37,
    184 /*30*/	200,	 27,	  9,	 36,	  5,	 32,	  7,	IGN,
    185 /*38*/	 12,	 26,	  8,	 35,	  4,	 43,	 31,	IGN,
    186 /*40*/	 58,	IGN,	IGN,	IGN,	 14,	184,	 66,	 61,
    187 /*48*/	IGN,	 56,	IGN,	IGN,	125,	112,	 65,	 62,
    188 /*50*/	IGN,	IGN,	 29,	IGN,	 68,	 73,	 64,	 60,
    189 /*58*/	IGN,	IGN,	IGN,	 42,	 14,	 67,	 63,	  1,
    190 };
    191 
    192 static const keysym_t mcr_jp_cmdmap[] = {
    193 /*	pos      command		normal		shifted		*/
    194 	KC(184), KS_Cmd,		KS_Alt_R,	KS_Multi_key,
    195 	KC(73),  KS_Cmd_BrightnessUp,	KS_KP_Prior,	KS_KP_9,
    196 	KC(81),  KS_Cmd_BrightnessDown,	KS_KP_Next,	KS_KP_3,
    197 	KC(51),  KS_Cmd_ContrastDown,	KS_comma,	KS_less,
    198 	KC(52),  KS_Cmd_ContrastUp,	KS_period,	KS_greater,
    199 	KC(57),  KS_Cmd_BacklightToggle,KS_space,
    200 };
    201 
    202 /* IBM WorkPad z50 */
    203 static uint8_t z50_keytrans[] = {
    204 /*00	f1	f3	f5	f7	f9	-	-	f11	*/
    205 /*08	f2	f4	f6	f8	f10	-	-	f12	*/
    206 /*10	'	[	-	0	p	;	up	/	*/
    207 /*18	-	-	-	9	o	l	.	-	*/
    208 /*20	left	]	=	8	i	k	,	-	*/
    209 /*28	h	y	6	7	u	j	m	n	*/
    210 /*30	-	bs	num	del	-	\	ent	sp	*/
    211 /*38	g	t	5	4	r	f	v	b	*/
    212 /*40	-	-	-	3	e	d	c	right	*/
    213 /*48	-	-	-	2	w	s	x	down	*/
    214 /*50	esc	tab	~	1	q	a	z	-	*/
    215 /*58	menu	Ls	Lc	Rc	La	Ra	Rs	-	*/
    216 /*----------------------------------------------------------------------*/
    217 /*00*/	 59,	 61,	 63,	 65,	 67,	IGN,	IGN,	 87,
    218 /*08*/	 60,	 62,	 64,	 66,	 68,	IGN,	IGN,	 88,
    219 /*10*/	 40,	 26,	 12,	 11,	 25,	 39,	200,	 53,
    220 /*18*/	IGN,	IGN,	IGN,	 10,	 24,	 38,	 52,	IGN,
    221 /*20*/	203,	 27,	 13,	  9,	 23,	 37,	 51,	IGN,
    222 /*28*/	 35,	 21,	  7,	  8,	 22,	 36,	 50,	 49,
    223 /*30*/	IGN,	 14,	 69,	 14,	IGN,	 43,	 28,	 57,
    224 /*38*/	 34,	 20,	  6,	  5,	 19,	 33,	 47,	 48,
    225 /*40*/	IGN,	IGN,	IGN,	  4,	 18,	 32,	 46,	205,
    226 /*48*/	IGN,	IGN,	IGN,	  3,	 17,	 31,	 45,	208,
    227 /*50*/	  1,	 15,	 41,	  2,	 16,	 30,	 44,	IGN,
    228 /*58*/	221,	 42,	 29,	 29,	 56,	 56,	 54,	IGN,
    229 };
    230 
    231 /* Sharp Tripad PV6000 and VADEM CLIO */
    232 static uint8_t tripad_keytrans[] = {
    233 /*00	lsh	tab	`	q	esc	1	WIN	-	*/
    234 /*08	ctrl	z	x	a	s	w	e	2	*/
    235 /*10	lalt	sp	c	v	d	f	r	3	*/
    236 /*18	b	n	g	h	t	y	4	5	*/
    237 /*20	m	,	j	k	u	i	6	7	*/
    238 /*28	Fn	caps	l	o	p	8	9	0	*/
    239 /*30	[	]	la	.	/	;	-	=	*/
    240 /*38	rsh	ra	ua	da	'	ent	\	del	*/
    241 /*40	-	-	-	-	-	-	-	-	*/
    242 /*48	-	-	-	-	-	-	-	-	*/
    243 /*50	-	-	-	-	-	-	-	-	*/
    244 /*58	-	-	-	-	-	-	-	-	*/
    245 /*----------------------------------------------------------------------*/
    246 /*00*/	 42,	 15,	 41,	 16,	  1,	  2,	104,	221,
    247 /*08*/	 29,	 44,	 45,	 30,	 31,	 17,	 18,	  3,
    248 /*10*/	 56,	 57,	 46,	 47,	 32,	 33,	 19,	  4,
    249 /*18*/	 48,	 49,	 34,	 35,	 20,	 21,	  5,	  6,
    250 /*20*/	 50,	 51,	 36,	 37,	 22,	 23,	  7,	  8,
    251 /*28*/	184,	 58,	 38,	 24,	 25,	  9,	 10,	 11,
    252 /*30*/	 26,	 27,	203,	 52,	 53,	 39,	 12,	 13,
    253 /*38*/	 54,	205,	200,	208,	 40,	 28,	 43,	 14,
    254 /*40*/	IGN,	IGN,	IGN,	IGN,	IGN,	IGN,	IGN,	IGN,
    255 /*48*/	IGN,	IGN,	IGN,	IGN,	IGN,	IGN,	IGN,	IGN,
    256 /*50*/	IGN,	IGN,	IGN,	IGN,	IGN,	IGN,	IGN,	IGN,
    257 /*58*/	IGN,	IGN,	IGN,	IGN,	IGN,	IGN,	IGN,	IGN,
    258 };
    259 
    260 static const keysym_t tripad_cmdmap[] = {
    261 /*  pos      command		normal		shifted		fn    */
    262 KC(2),	 KS_Cmd_Screen0,	KS_1,		KS_exclam,	KS_f1,
    263 KC(3),	 KS_Cmd_Screen1,	KS_2,		KS_at,		KS_f2,
    264 KC(4),	 KS_Cmd_Screen2,	KS_3,		KS_numbersign,	KS_f3,
    265 KC(5),	 KS_Cmd_Screen3,	KS_4,		KS_dollar,	KS_f4,
    266 KC(6),	 KS_Cmd_Screen4,	KS_5,		KS_percent,	KS_f5,
    267 KC(7),	 KS_Cmd_Screen5,	KS_6,		KS_asciicircum,	KS_f6,
    268 KC(8),	 KS_Cmd_Screen6,	KS_7,		KS_ampersand,	KS_f7,
    269 KC(9),	 KS_Cmd_Screen7,	KS_8,		KS_asterisk,	KS_f8,
    270 KC(10),  KS_Cmd_Screen8,	KS_9,		KS_parenleft,	KS_f9,
    271 KC(11),  KS_Cmd_Screen9,	KS_0,		KS_parenright,	KS_f10,
    272 KC(12),  KS_Cmd_BrightnessDown,	KS_minus,	KS_underscore,	KS_f11,
    273 KC(13),  KS_Cmd_BrightnessUp,	KS_equal,	KS_plus,	KS_f12,
    274 KC(20),  KS_Cmd_BacklightToggle, KS_t,
    275 KC(33),  KS_Cmd_BacklightOff,	KS_f,
    276 KC(49),  KS_Cmd_BacklightOn,	KS_n,
    277 KC(51),  KS_Cmd_ContrastDown,	KS_comma,	KS_less,
    278 KC(52),  KS_Cmd_ContrastUp,	KS_period,	KS_greater,
    279 KC(184), KS_Mode_switch,	KS_Multi_key,
    280 KC(200), KS_Cmd_ScrollSlowUp,	KS_Up,		KS_Up,		KS_Prior,
    281 KC(203), KS_Cmd_ScrollFastUp,	KS_Left,	KS_Left,	KS_Home,
    282 KC(205), KS_Cmd_ScrollFastDown,	KS_Right,	KS_Right,	KS_End,
    283 KC(208), KS_Cmd_ScrollSlowDown,	KS_Down,	KS_Down,	KS_Next,
    284 };
    285 
    286 /* NEC Mobile Gear MCCS series */
    287 static uint8_t mccs_keytrans[] = {
    288 /*00	caps	cr	rar	p	.	y	b	z	*/
    289 /*08	alt	[	dar	o	,	t	v	a	*/
    290 /*10	zen	@	lar	i	m	r	c	w	*/
    291 /*18	lctrl	;	uar	u	n	e	x	q	*/
    292 /*20	lshft	bs	\	0	l	6	g	tab	*/
    293 /*28	nconv	|	/	9	k	5	f	2	*/
    294 /*30	conv	=	]	8	j	4	d	1	*/
    295 /*38	hira	-	'	7	h	3	s	esc	*/
    296 /*40	-	sp	-	-	-	-	-	-	*/
    297 /*48	-	-	-	-	-	-	-	-	*/
    298 /*50	-	-	-	-	-	-	-	-	*/
    299 /*58	-	-	-	-	-	-	-	-	*/
    300 /*----------------------------------------------------------------------*/
    301 /*00*/	 58,	 28,	205,	 25,	 52,	 21,	 48,	 44,
    302 /*08*/	 56,	 27,	208,	 24,	 51,	 20,	 47,	 30,
    303 /*10*/	 41,	 26,	203,	 23,	 50,	 19,	 46,	 17,
    304 /*18*/	 29,	 39,	200,	 22,	 49,	 18,	 45,	 16,
    305 /*20*/	 42,	 14,	115,	 11,	 38,	  7,	 34,	 15,
    306 /*28*/	123,	125,	 53,	 10,	 37,	  6,	 33,	  3,
    307 /*30*/	121,	 13,	 43,	  9,	 36,	  5,	 32,	  2,
    308 /*38*/	112,	 12,	 40,	  8,	 35,	  4,	 31,	  1,
    309 /*40*/	IGN,	 57,	IGN,	IGN,	IGN,	IGN,	IGN,	IGN,
    310 /*48*/	IGN,	IGN,	IGN,	IGN,	IGN,	IGN,	IGN,	IGN,
    311 /*50*/	IGN,	IGN,	IGN,	IGN,	IGN,	IGN,	IGN,	IGN,
    312 /*58*/	IGN,	IGN,	IGN,	IGN,	IGN,	IGN,	IGN,	IGN,
    313 };
    314 
    315 static const keysym_t mccs_cmdmap[] = {
    316 /*	pos      command		normal		shifted		*/
    317 	KC(51),  KS_Cmd_ContrastDown,	KS_comma,	KS_less,
    318 	KC(52),  KS_Cmd_ContrastUp,	KS_period,	KS_greater,
    319 	KC(57),  KS_Cmd_BacklightToggle,KS_space,
    320 };
    321 
    322 static uint8_t mobilepro_keytrans[] = {
    323 /*00	space	]	\	/	left	down	enter	l	*/
    324 /*08	-	[	'	;	right	up	.	o	*/
    325 /*10	-	-	-	Windows	v	c	x	z	*/
    326 /*18	-	=	\-	`	f	d	s	a	*/
    327 /*20	8	7	6	5	r	e	w	q	*/
    328 /*28	,	m	n	b	-	-	0	9	*/
    329 /*30	k	j	h	g	4	3	2	1	*/
    330 /*38	i	u	y	t	-	caps	del	esc	*/
    331 /*40	alt_R	-	-	-	BS	p	TAB	Fn	*/
    332 /*48	-	alt_L	-	-	pgdn	pgup	f10	f9	*/
    333 /*50	-	-	ctrl	-	f8	f7	f6	f5	*/
    334 /*58	-	-	-	shift	f4	f3	f2	f1	*/
    335 /*----------------------------------------------------------------------*/
    336 /*00*/	 57,	 27,	 43,	 53,	203,	208,	 28,	 38,
    337 /*08*/	IGN,	 26,	 40,	 39,	205,	200,	 52,	 24,
    338 /*10*/	IGN,	IGN,	IGN,	221,	 47,	 46,	 45,	 44,
    339 /*18*/	IGN,	 13,	 12,	 41,	 33,	 32,	 31,	 30,
    340 /*20*/	  9,	  8,	  7,	  6,	 19,	 18,	 17,	 16,
    341 /*28*/	 51,	 50,	 49,	 48,	IGN,	IGN,	 11,	 10,
    342 /*30*/	 37,	 36,	 35,	 34,	  5,	  4,	  3,	  2,
    343 /*38*/	 23,	 22,	 21,	 20,	IGN,	 58,	 14,	  1,
    344 /*40*/	184,	IGN,	IGN,	IGN,	 14,	 25,	 15,	219,
    345 /*48*/	IGN,	 56,	IGN,	IGN,	 81,	 73,	 68,	 67,
    346 /*50*/	IGN,	IGN,	 29,	IGN,	 66,	 65,	 64,	 63,
    347 /*58*/	IGN,	IGN,	IGN,	 42,	 62,	 61,	 60,	 59,
    348 };
    349 
    350 static const keysym_t mobilepro_cmdmap[] = {
    351 /*	pos      command		normal		shifted		*/
    352 	KC(219), KS_Cmd,		KS_Meta_L,	KS_Multi_key,
    353 	KC(73),  KS_Cmd_BrightnessUp,	KS_KP_Prior,	KS_KP_9,
    354 	KC(81),  KS_Cmd_BrightnessDown,	KS_KP_Next,	KS_KP_3,
    355 	KC(51),  KS_Cmd_ContrastDown,	KS_comma,	KS_less,
    356 	KC(52),  KS_Cmd_ContrastUp,	KS_period,	KS_greater,
    357 	KC(57),  KS_Cmd_BacklightToggle,KS_space,
    358 };
    359 
    360 /* NEC MobilePro 750c by "Castor Fu" <castor (at) geocast.com> */
    361 static uint8_t mobilepro750c_keytrans[] = {
    362 /*00	right	\	p	.	y	b	z	space	*/
    363 /*08	down	/	o	,	t	v	a	-	*/
    364 /*10	left	enter	i	m	r	c	w	Win	*/
    365 /*18	num	]	u	n	e	x	q	caps	*/
    366 /*20	pgdn	-	0	l	:	g	tab	esc	*/
    367 /*28	-	;	9	k	5	f	2	`	*/
    368 /*30	up	[	8	j	4	d	1	'	*/
    369 /*38	-	@	7	h	3	s	del	-	*/
    370 /*40	shift	-	-	-	bs	f12	f8	f4	*/
    371 /*48	-	alt	-	-	|	f11	f7	f3	*/
    372 /*50	-	-	ctrl	-	f10	f10	f6	f2	*/
    373 /*58	-	-	-	shift	del	f9	f5	f1	*/
    374 /*----------------------------------------------------------------------*/
    375 /*00*/	205,	43,	25,	52,	21,	48,	44,	57,
    376 /*08*/	208,	53,	24,	51,	20,	47,	30,	IGN,
    377 /*10*/	203,	28,	23,	50,	19,	46,	17,	221,
    378 /*18*/	69,	27,	22,	49,	18,	45,	16,	58,
    379 /*20*/	81,	IGN,	11,	38,	7,	34,	15,	1,
    380 /*28*/	IGN,	39,	10,	37,	6,	33,	3,	41,
    381 /*30*/	200,	26,	9,	36,	5,	32,	2,	40,
    382 /*38*/	12,	26,	8,	35,	4,	31,	83,	IGN,
    383 /*40*/	42,	IGN,	IGN,	IGN,	14,	88,	66,	62,
    384 /*48*/	IGN,	56,	IGN,	IGN,	125,	87,	65,	61,
    385 /*50*/	IGN,	IGN,	29,	IGN,	68,	68,	64,	60,
    386 /*58*/	IGN,	IGN,	IGN,	42,	13,	67,	63,	59,
    387 };
    388 
    389 /* NEC MobilePro 780 */
    390 static uint8_t mobilepro780_keytrans[] = {
    391 /*00	space	]	\	/	left	right	enter	l	*/
    392 /*08	-	[	'	;	up	down	.	o	*/
    393 /*10	-	-	-	Windows	v	c	x	z	*/
    394 /*18	-	=	\-	`	f	d	s	a	*/
    395 /*20	8	7	6	5	r	e	w	q	*/
    396 /*28	,	m	n	b	-	-	0	9	*/
    397 /*30	k	j	h	g	4	3	2	1	*/
    398 /*38	i	u	y	t	-	caps	del	esc	*/
    399 /*40	alt_R	-	-	-	BS	p	TAB	Fn	*/
    400 /*48	-	alt_L	-	-	f12	f11	f10	f9	*/
    401 /*50	-	-	ctrl	-	f8	f7	f6	f5	*/
    402 /*58	-	-	-	shift	f4	f3	f2	f1	*/
    403 /*----------------------------------------------------------------------*/
    404 /*00*/	 57,	 27,	 43,	 53,	203,	205,	 28,	 38,
    405 /*08*/	IGN,	 26,	 40,	 39,	200,	208,	 52,	 24,
    406 /*10*/	IGN,	IGN,	IGN,	221,	 47,	 46,	 45,	 44,
    407 /*18*/	IGN,	 13,	 12,	 41,	 33,	 32,	 31,	 30,
    408 /*20*/	  9,	  8,	  7,	  6,	 19,	 18,	 17,	 16,
    409 /*28*/	 51,	 50,	 49,	 48,	IGN,	IGN,	 11,	 10,
    410 /*30*/	 37,	 36,	 35,	 34,	  5,	  4,	  3,	  2,
    411 /*38*/	 23,	 22,	 21,	 20,	IGN,	 58,	 14,	  1,
    412 /*40*/	184,	IGN,	IGN,	IGN,	 14,	 25,	 15,	IGN,
    413 /*48*/	IGN,	 56,	IGN,	IGN,	 88,	 87,	 68,	 67,
    414 /*50*/	IGN,	IGN,	 29,	IGN,	 66,	 65,	 64,	 63,
    415 /*58*/	IGN,	IGN,	IGN,	 42,	 62,	 61,	 60,	 59,
    416 };
    417 
    418 /* NEC MobilePro 8x0 */
    419 static uint8_t mobilepro8x0_keytrans[] = {
    420 /*00	space	]	\	/	left	right	enter	l	*/
    421 /*08	-	[	'	;	up	down	.	o	*/
    422 /*10	-	-	-	Windows	v	c	x	z	*/
    423 /*18	-	=	\-	`	f	d	s	a	*/
    424 /*20	8	7	6	5	r	e	w	q	*/
    425 /*28	,	m	n	b	-	-	0	9	*/
    426 /*30	k	j	h	g	4	3	2	1	*/
    427 /*38	i	u	y	t	-	caps	del	esc	*/
    428 /*40	alt_R	-	-	-	BS	p	TAB	Fn	*/
    429 /*48	-	alt_L	-	-	pgdn	pgup	f10	f9	*/
    430 /*50	-	-	ctrl	-	f8	f7	f6	f5	*/
    431 /*58	-	-	-	shift	f4	f3	f2	f1	*/
    432 /*----------------------------------------------------------------------*/
    433 /*00*/	 57,	 27,	 43,	 53,	203,	205,	 28,	 38,
    434 /*08*/	IGN,	 26,	 40,	 39,	200,	208,	 52,	 24,
    435 /*10*/	IGN,	IGN,	IGN,	221,	 47,	 46,	 45,	 44,
    436 /*18*/	IGN,	 13,	 12,	 41,	 33,	 32,	 31,	 30,
    437 /*20*/	  9,	  8,	  7,	  6,	 19,	 18,	 17,	 16,
    438 /*28*/	 51,	 50,	 49,	 48,	IGN,	IGN,	 11,	 10,
    439 /*30*/	 37,	 36,	 35,	 34,	  5,	  4,	  3,	  2,
    440 /*38*/	 23,	 22,	 21,	 20,	IGN,	 58,	 14,	  1,
    441 /*40*/	184,	IGN,	IGN,	IGN,	 14,	 25,	 15,	219,
    442 /*48*/	IGN,	 56,	IGN,	IGN,	 81,	 73,	 68,	 67,
    443 /*50*/	IGN,	IGN,	 29,	IGN,	 66,	 65,	 64,	 63,
    444 /*58*/	IGN,	IGN,	IGN,	 42,	 62,	 61,	 60,	 59,
    445 };
    446 
    447 static const keysym_t mobilepro8x0_cmdmap[] = {
    448 /*	pos      command		normal		shifted		*/
    449 	KC(219), KS_Cmd,		KS_Meta_L,	KS_Multi_key,
    450 	KC(73),  KS_Cmd_BrightnessUp,	KS_KP_Prior,	KS_KP_9,
    451 	KC(81),  KS_Cmd_BrightnessDown,	KS_KP_Next,	KS_KP_3,
    452 	KC(51),  KS_Cmd_ContrastDown,	KS_comma,	KS_less,
    453 	KC(52),  KS_Cmd_ContrastUp,	KS_period,	KS_greater,
    454 	KC(57),  KS_Cmd_BacklightToggle,KS_space,
    455 };
    456 
    457 /* FUJITSU INTERTOP CX300 */
    458 static uint8_t intertop_keytrans[] = {
    459 /*00	space   a2      1       tab     enter   caps    left    zenkaku	*/
    460 /*08	hiraga  a1      2       q       -       a       fnc     esc	*/
    461 /*10	ins     w       3       s       del     ]       down    x	*/
    462 /*18	z       e       4       d       a10     \       right   c	*/
    463 /*20	backsla r       ;       f       a9      @       ^       v	*/
    464 /*28	/       t       5       g       a8      p       -       b	*/
    465 /*30	.       y       6       h       a7      l       0       n	*/
    466 /*38	-       u       7       j       a5      o       bs      m	*/
    467 /*40	-       a3      8       a4      -       i       k       ,	*/
    468 /*48	num     :       9       [       a6      -       up      -	*/
    469 /*50	-       -       -       -       shift_L -       -       shift_R	*/
    470 /*58	ctrl    win     muhenka henkan  alt     -       -       -	*/
    471 /*----------------------------------------------------------------------*/
    472 /*00*/	57,	60,	2,	15,	28,	58,	205,	41,
    473 /*08*/	112,	59,	3,	16,	IGN,	30,	56,	1,
    474 /*10*/	210,	17,	4,	31,	83,	43,	208,	45,
    475 /*18*/	44,	18,	5,	32,	68,	125,	203,	46,
    476 /*20*/	115,	19,	39,	33,	67,	26,	13,	47,
    477 /*28*/	53,	20,	6,	34,	66,	25,	12,	48,
    478 /*30*/	52,	21,	7,	35,	65,	38,	11,	49,
    479 /*38*/	IGN,	22,	8,	36,	63,	24,	14,	50,
    480 /*40*/	IGN,	61,	9,	62,	IGN,	23,	37,	51,
    481 /*48*/	69,	40,	10,	27,	64,	IGN,	200,	IGN,
    482 /*50*/	IGN,	IGN,	IGN,	IGN,	42,	IGN,	IGN,	54,
    483 /*58*/	29,	221,	123,	121,	184,	IGN,	IGN,	IGN,
    484 };
    485 
    486 /* DoCoMo sigmarion (Japan) */
    487 static uint8_t sigmarion_jp_keytrans[] = {
    488 /*00	right	ent	p	.	y	b	z	space	*/
    489 /*08	down	/	o	,	t	v	a	nfer	*/
    490 /*10	left	\	i	m	r	c	w	menu	*/
    491 /*18	|	-	u	-	e	x	q	1	*/
    492 /*20	pgdn	h/z	0	l	:	g	tab	f1	*/
    493 /*28	xfer	;	9	n	5	f	2	k	*/
    494 /*30	up	[	8	j	4	d	6	-	*/
    495 /*38	-	@	7	h	3	]	s	-	*/
    496 /*40	caps	-	-	-	bs	fnc	f8	f3	*/
    497 /*48	-	alt	-	-	^	k/h	f7	f4	*/
    498 /*50	-	-	ctrl	-	f10	pgup	f6	f2	*/
    499 /*58	-	-	-	shift	del	f9	f5	esc	*/
    500 /*----------------------------------------------------------------------*/
    501 /*00*/	205,	 28,	 25,	 52,	 21,	 48,	 44,	 57,
    502 /*08*/	208,	 53,	 24,	 51,	 20,	 47,	 30,	123,
    503 /*10*/	203,	115,	 23,	 50,	 19,	 46,	 17,	221,
    504 /*18*/	125,	IGN,	 22,	IGN,	 18,	 45,	 16,	  2,
    505 /*20*/	 81,	 41,	 11,	 38,	 40,	 34,	 15,	IGN,
    506 /*28*/	121,	 39,	 10,	 49,	  6,	 33,	  3,	 37,
    507 /*30*/	200,	 27,	  9,	 36,	  5,	 32,	  7,	IGN,
    508 /*38*/	 12,	 26,	  8,	 35,	  4,	 43,	 31,	IGN,
    509 /*40*/	 58,	IGN,	IGN,	IGN,	 14,	184,	 66,	IGN,
    510 /*48*/	IGN,	 56,	IGN,	IGN,	 13,	112,	 65,	IGN,
    511 /*50*/	IGN,	IGN,	 29,	IGN,	 68,	 73,	 64,	IGN,
    512 /*58*/	IGN,	IGN,	IGN,	 42,	 14,	 67,	IGN,	  1,
    513 };
    514 
    515 static const keysym_t sigmarion_cmdmap[] = {
    516 /*	pos      command		normal		shifted		*/
    517 	KC(184), KS_Cmd,		KS_Alt_R,	KS_Multi_key,
    518 	KC(64),  KS_Cmd_Screen0,	KS_f6,		KS_f1,
    519 	KC(65),  KS_Cmd_Screen1,	KS_f7,		KS_f2,
    520 	KC(66),  KS_Cmd_Screen2,	KS_f8,		KS_f3,
    521 	KC(67),  KS_Cmd_Screen3,	KS_f9,		KS_f4,
    522 	KC(68),  KS_Cmd_Screen4,	KS_f10,		KS_f5,
    523 	KC(27),  KS_Cmd_BrightnessUp,	KS_bracketleft,	KS_braceleft,
    524 	KC(43),  KS_Cmd_BrightnessDown,	KS_bracketright,KS_braceright,
    525 	KC(51),  KS_Cmd_ContrastDown,	KS_comma,	KS_less,
    526 	KC(52),  KS_Cmd_ContrastUp,	KS_period,	KS_greater,
    527 	KC(57),  KS_Cmd_BacklightToggle,KS_space,
    528 };
    529 
    530 /* NTT DoCoMo Pocket PostPet (Japan) */
    531 static uint8_t pocketpostpet_keytrans[] = {
    532 /*00	esc	1	q	a	ctrl	-	down	left	*/
    533 /*08	tab	2	w	s	z	-	right	up	*/
    534 /*10	pgup	3	e	d	x	shift	-	-	*/
    535 /*18	pgdn	4	r	f	c	alt	-	-	*/
    536 /*20	f5	5	t	g	v	nfer	-	-	*/
    537 /*28	f6	6	y	h	b	-	-	-	*/
    538 /*30	f7	7	u	j	n	space	-	-	*/
    539 /*38	f8	8	i	k	m	-	-	-	*/
    540 /*40	f9	9	o	l	,	xfer	-	-	*/
    541 /*48	f10	0	p	;	.	-	-	-	*/
    542 /*50	\|	minus	@	:	/	ent	-	-	*/
    543 /*58	bs	^	[	]	\_	del	-	-	*/
    544 /* MailCheck  -> tab	*/
    545 /* Prev       -> pgup	*/
    546 /* Next       -> pgdn	*/
    547 /* tab        -> ctrl	*/
    548 /* h/z        -> menu	*/
    549 /* k/h        -> alt	*/
    550 /* knj        -> nfer	*/
    551 /* eng        -> xfer	*/
    552 /*----------------------------------------------------------------------*/
    553 /*00*/	1,	2,	16,	30,	29,	UNK,	208,	203,
    554 /*08*/	15,	3,	17,	31,	44,	UNK,	205,	200,
    555 /*10*/	73,	4,	18,	32,	45,	42,	UNK,	UNK,
    556 /*08*/	81,	5,	19,	33,	46,	56,	UNK,	UNK,
    557 /*20*/	63,	6,	20,	34,	47,	123,	UNK,	UNK,
    558 /*28*/	64,	7,	21,	35,	48,	UNK,	UNK,	UNK,
    559 /*30*/	65,	8,	22,	36,	49,	57,	UNK,	UNK,
    560 /*38*/	66,	9,	23,	37,	50,	UNK,	UNK,	UNK,
    561 /*40*/	67,	10,	24,	38,	51,	121,	UNK,	UNK,
    562 /*48*/	68,	11,	25,	39,	52,	UNK,	UNK,	UNK,
    563 /*50*/	125,	12,	26,	40,	53,	28,	UNK,	UNK,
    564 /*58*/	14,	13,	27,	43,	115,	14,	UNK,	UNK,
    565 };
    566 #endif /* hpcmips */
    567 
    568 #ifdef hpcsh
    569 /*
    570  * HP Jornada 680/690
    571  */
    572 /* Japanese */
    573 const uint8_t jornada6x0_jp_keytrans[] = {
    574 /*      0    1    2    3    4    5    6    7 */
    575 /* 0 */ 59 , 45 , 31 , 17 , 3  , UNK, 29 , UNK, /* ctrl 29 */
    576 /* 1 */ 60 , 46 , 32 , 18 , 4  , 42 , UNK, UNK, /* shift L 42 */
    577 /* 2 */ 61 , 47 , 33 , 19 , 5  , UNK, 57 , UNK,
    578 /* 3 */ 66 , 52 , 38 , 24 , 10 , UNK, 14 , 203,
    579 /* 4 */ 65 , 51 , 37 , 23 , 9  , UNK, 115, UNK,
    580 /* 5 */ 64 , 50 , 36 , 22 , 8  , UNK, 121, UNK,
    581 /* 6 */ 62 , 48 , 34 , 20 , 6  , UNK, UNK, 56 , /* alt 56 */
    582 /* 7 */ 63 , 49 , 35 , 21 , 7  , UNK, UNK, 123,
    583 /* 8 */ IGN, 53 , 39 , 25 , 11 , 200, UNK, 208,
    584 /* 9 */ 112, 40 , 27 , 26 , 12 , 125, UNK, 205,
    585 /*10 */ 41 , 28 , 43 , 14 , 13 , 54 , UNK, UNK, /* shift R 54 */
    586 /*11 */ SPL, IGN, IGN, IGN, IGN, IGN, IGN, IGN,
    587 /*12 */ 1  , 44 , 30 , 16 , 2  , 15 , 221, UNK,
    588 /*13 */ UNK, UNK, UNK, UNK, UNK, UNK, UNK, UNK,
    589 /*14 */ UNK, UNK, UNK, UNK, UNK, UNK, UNK, UNK,
    590 /*15 */ UNK, UNK, UNK, UNK, UNK, UNK, UNK, UNK,
    591 };
    592 
    593 /* US/UK - Fn to the left of the space bar and missing few keys */
    594 const uint8_t jornada6x0_us_keytrans[] = {
    595 /*      0    1    2    3    4    5    6    7 */
    596 /* 0 */ 59 , 45 , 31 , 17 , 3  , UNK, 29 , UNK,
    597 /* 1 */ 60 , 46 , 32 , 18 , 4  , 42 , UNK, UNK,
    598 /* 2 */ 61 , 47 , 33 , 19 , 5  , UNK, 57 , UNK,
    599 /* 3 */ 66 , 52 , 38 , 24 , 10 , UNK, 211, 203,
    600 /* 4 */ 65 , 51 , 37 , 23 , 9  , UNK, 53 , UNK,
    601 /* 5 */ 64 , 50 , 36 , 22 , 8  , UNK, UNK, UNK,
    602 /* 6 */ 62 , 48 , 34 , 20 , 6  , UNK, UNK, 56 ,
    603 /* 7 */ 63 , 49 , 35 , 21 , 7  , UNK, UNK, 184,
    604 /* 8 */ 67 , UNK, 39 , 25 , 11 , 200, UNK, 208,
    605 /* 9 */ 68 , 40 , UNK, 43 , 12 , UNK, UNK, 205,
    606 /*10 */ 87 , 28 , UNK, 14 , 13 , 54 , UNK, UNK,
    607 /*11 */ SPL, IGN, IGN, IGN, IGN, IGN, IGN, IGN,
    608 /*12 */ 1  , 44 , 30 , 16 , 2  , 15 , 219, UNK,
    609 /*13 */ UNK, UNK, UNK, UNK, UNK, UNK, UNK, UNK,
    610 /*14 */ UNK, UNK, UNK, UNK, UNK, UNK, UNK, UNK,
    611 /*15 */ UNK, UNK, UNK, UNK, UNK, UNK, UNK, UNK,
    612 };
    613 
    614 /* International - AltGr to the right and extra keys in three middle rows */
    615 const uint8_t jornada6x0_intl_keytrans[] = {
    616 /*      0    1    2    3    4    5    6    7 */
    617 /* 0 */ 59 , 45 , 31 , 17 , 3  , UNK, 29 , UNK,
    618 /* 1 */ 60 , 46 , 32 , 18 , 4  , 42 , UNK, UNK,
    619 /* 2 */ 61 , 47 , 33 , 19 , 5  , UNK, 57 , UNK,
    620 /* 3 */ 66 , 52 , 38 , 24 , 10 , UNK, 211, 203,
    621 /* 4 */ 65 , 51 , 37 , 23 , 9  , UNK, 184, UNK,
    622 /* 5 */ 64 , 50 , 36 , 22 , 8  , UNK, UNK, UNK,
    623 /* 6 */ 62 , 48 , 34 , 20 , 6  , UNK, UNK, 56 ,
    624 /* 7 */ 63 , 49 , 35 , 21 , 7  , UNK, UNK, 41 ,
    625 /* 8 */ 67 , 53 , 39 , 25 , 11 , 200, UNK, 208,
    626 /* 9 */ 68 , 40 , 27 , 26 , 12 , UNK, UNK, 205,
    627 /*10 */ 87 , 28 , 43 , 14 , 13 , 54 , UNK, UNK,
    628 /*11 */ SPL, IGN, IGN, IGN, IGN, IGN, IGN, IGN,
    629 /*12 */ 1  , 44 , 30 , 16 , 2  , 15 , 219, UNK,
    630 /*13 */ UNK, UNK, UNK, UNK, UNK, UNK, UNK, UNK,
    631 /*14 */ UNK, UNK, UNK, UNK, UNK, UNK, UNK, UNK,
    632 /*15 */ UNK, UNK, UNK, UNK, UNK, UNK, UNK, UNK,
    633 };
    634 
    635 const int jornada6x0_special_keymap[] = {
    636 	[KEY_SPECIAL_OFF]	= -1,
    637 	[KEY_SPECIAL_LIGHT]	= -1
    638 };
    639 
    640 
    641 /*
    642  * HP 620LX
    643  */
    644 /* Japanese */
    645 const uint8_t hp620lx_jp_keytrans[] = {
    646 /*      0    1    2    3    4    5    6    7 */
    647 /* 0 */	2  , 16 , 112, UNK, IGN, UNK, 42 , 30 , /* REC button */
    648 /* 1 */	3  , 17 , 58 , 44 , UNK, 45 , 15 , 31 ,
    649 /* 2 */	4  , 18 , UNK, 56 , 59 , 46 , 1  , 32 ,
    650 /* 3 */	5  , 19 , UNK, UNK, 60 , 123, UNK, 33 ,
    651 /* 4 */	6  , 20 , 47 , 57 , 61 , 48 , UNK, 34 ,
    652 /* 5 */	7  , 21 , UNK, 121, 62 , 49 , UNK, 35 ,
    653 /* 6 */	8  , 22 , UNK, 125, 63 , 50 , UNK, 36 ,
    654 /* 7 */	9  , 23 , 52 , 115, 64 , 51 , UNK, 37 ,
    655 /* 8 */	10 , 24 , 53 , 203, 65 , 200, 39 , 38 ,
    656 /* 9 */	11 , 25 , 40 , 208, 66 , 205, 27 , 26 ,
    657 /*10 */	12 , 13 , 28 , UNK, UNK, UNK, 41 , 43 ,
    658 /*11 */	SPL, IGN, IGN, IGN, IGN, IGN, IGN, IGN, /* ON button */
    659 /*12 */	29 , IGN, IGN, IGN, IGN, IGN, IGN, IGN,
    660 /*13 */	14 , IGN, IGN, IGN, IGN, IGN, IGN, IGN,
    661 /*14 */	UNK, UNK, UNK, UNK, UNK, UNK, UNK, UNK,
    662 /*15 */	SPL, IGN, IGN, IGN, IGN, IGN, IGN, IGN  /* LED button */
    663 };
    664 
    665 /* Other models */
    666 const uint8_t hp620lx_intl_keytrans[] = {
    667 /*      0    1    2    3    4    5    6    7 */
    668 /* 0 */	2  , 16 , 219, UNK, IGN, UNK, 42 , 30 , /* REC button */
    669 /* 1 */	3  , 17 , 15 , 44 , UNK, 45 , 41 , 31 ,
    670 /* 2 */	4  , 18 , UNK, 69 , 59 , 46 , 1  , 32 ,
    671 /* 3 */	5  , 19 , UNK, UNK, 60 , 56 , UNK, 33 ,
    672 /* 4 */	6  , 20 , 47 , 57 , 61 , 48 , UNK, 34 ,
    673 /* 5 */	7  , 21 , UNK, UNK, 62 , 49 , UNK, 35 ,
    674 /* 6 */	8  , 22 , UNK, 184, 63 , 50 , UNK, 36 ,
    675 /* 7 */	9  , 23 , 52 , 211, 64 , 51 , UNK, 37 ,
    676 /* 8 */	10 , 24 , 53 , 203, 65 , 200, 39 , 38 ,
    677 /* 9 */	11 , 25 , 40 , 208, 66 , 205, 27 , 26 ,
    678 /*10 */	12 , 13 , 28 , UNK, UNK, UNK, 54 , 43 ,
    679 /*11 */	SPL, IGN, IGN, IGN, IGN, IGN, IGN, IGN, /* ON button */
    680 /*12 */	29 , IGN, IGN, IGN, IGN, IGN, IGN, IGN,
    681 /*13 */	14 , IGN, IGN, IGN, IGN, IGN, IGN, IGN,
    682 /*14 */	UNK, UNK, UNK, UNK, UNK, UNK, UNK, UNK,
    683 /*15 */	SPL, IGN, IGN, IGN, IGN, IGN, IGN, IGN  /* LED button */
    684 };
    685 
    686 const int hp620lx_special_keymap[] = {
    687 	[KEY_SPECIAL_OFF]	= -1,	/* 88 */
    688 	[KEY_SPECIAL_LIGHT]	= 120
    689 };
    690 
    691 
    692 /*
    693  * HITACHI PERSONA HPW50PAD
    694  */
    695 /* Japanese */
    696 const uint8_t persona_hpw50pad_jp_keytrans[] = {
    697 /*      0    1    2    3    4    5    6    7 */
    698 /* 0 */ 59 , 61 , 63 , 65 , 67 , SPL, UNK, UNK, /* ON button */
    699 /* 1 */ 29 , UNK, 47 , 48 , 121, UNK, UNK, UNK,
    700 /* 2 */  1 , UNK, 34 , 51 , 112, UNK, UNK, UNK,
    701 /* 3 */ 41 , 221, 35 , 37 , 52 , UNK, UNK, UNK,
    702 /* 4 */ 45 , 58 , 22 , 38 , 40 , 42 , UNK, UNK,
    703 /* 5 */ 30 , 16 , 21 , 24 , 28 , 54 , UNK, UNK,
    704 /* 6 */ 17 ,  4 , UNK, 10 , 12 , 205, UNK, UNK,
    705 /* 7 */ 31 , 18 ,  7 , 25 , 13 , 83 , UNK, UNK,
    706 /* 8 */ 60 , 62 , 64 , 66 , 68 , UNK, UNK, UNK,
    707 /* 9 */ UNK, 123, 49 , 53 , 203, UNK, UNK, UNK,
    708 /*10 */ 56 , 46 , 50 , 57 , 208, UNK, UNK, UNK,
    709 /*11 */ 15 , 33 , 36 , 39 , 43 , UNK, UNK, UNK,
    710 /*12 */ 44 , 20 , 23 , 26 , 27 , UNK, UNK, UNK,
    711 /*13 */  2 ,  6 ,  9 , 115, 200, UNK, UNK, UNK,
    712 /*14 */  3 ,  5 , UNK, UNK, 125, UNK, UNK, UNK,
    713 /*15 */ 32 , 19 ,  8 , 11 , 14 , UNK, UNK, UNK,
    714 };
    715 
    716 const int persona_hpw50pad_special_keymap[] = {
    717 	[KEY_SPECIAL_OFF]	= 5,
    718 	[KEY_SPECIAL_LIGHT]	= -1
    719 };
    720 
    721 static const keysym_t persona_hpw50pad_jp_keydesc[] = {
    722 /*	pos	command			normal		shifted		*/
    723 	KC(63),	KS_Cmd_ContrastDown,	KS_f5,
    724 	KC(64),	KS_Cmd_ContrastUp,	KS_f6,
    725 	KC(65),	KS_Cmd_BrightnessDown,	KS_f7,
    726 	KC(66),	KS_Cmd_BrightnessUp,	KS_f8,
    727 
    728 	KC(200),KS_Cmd_ScrollFastUp,	KS_Up,
    729 	KC(208),KS_Cmd_ScrollFastDown,	KS_Down,
    730 	KC(203),KS_KP_Home,		KS_Left,
    731 	KC(205),KS_KP_End,		KS_Right,
    732 };
    733 
    734 /*
    735  * HITACHI PERSONA HPW200EC
    736 */
    737 /* US */
    738 const uint8_t persona_hpw200ec_keytrans[] = {
    739 /*      0    1    2    3    4    5    6    7 */
    740 /* 0 */  3 ,  2 , 71 , 69 , 67 , SPL, UNK, UNK,
    741 /* 1 */ 11 , UNK, 79 , 77 , 75 , UNK, UNK, UNK,
    742 /* 2 */ 19 , UNK, UNK, 85 , 83 , UNK, UNK, UNK,
    743 /* 3 */ 27 , 26 , 95 , 93 , 91 , UNK, UNK, UNK,
    744 /* 4 */ 35 , 34 , 103, 101, 99 , 32 , UNK, UNK,
    745 /* 5 */ 43 , 42 , 111, 109, 107, 40 , UNK, UNK,
    746 /* 6 */ 51 , 50 , 119, 117, 115, 48 , UNK, UNK,
    747 /* 7 */ 59 , 58 , UNK, UNK, 123, 56 , UNK, UNK,
    748 /* 8 */  5 ,  6 , 70 , 68 , 66 , UNK, UNK, UNK,
    749 /* 9 */ UNK, UNK, 78 , 76 , 74 , UNK, UNK, UNK,
    750 /*10 */ 21 , UNK, UNK, 84 , 82 , UNK, UNK, UNK,
    751 /*11 */ 29 , 30 , 94 , 92 , 90 , UNK, UNK, UNK,
    752 /*12 */ UNK, 26 , 102, 100, 98 , UNK, UNK, UNK,
    753 /*13 */ UNK, 46 , 110, 108, 106, 104, UNK, UNK,
    754 /*14 */ 53 , 54 , 118, 124, 114, UNK, UNK, UNK,
    755 /*15 */ 61 , 62 , 126, UNK, 122, UNK, UNK, UNK,
    756 };
    757 
    758 const int persona_hpw200ec_special_keymap[] = {
    759 	[KEY_SPECIAL_OFF]	= 5,
    760 	[KEY_SPECIAL_LIGHT]	= -1
    761 };
    762 
    763 #endif /* hpcsh */
    764 
    765 #ifdef hpcarm
    766 /*
    767  * HP Jornada 710/720/728
    768  */
    769 
    770 /* Japanese */
    771 const uint8_t jornada7xx_jp_keytrans[] = {
    772 /* 00 */ UNK,  1 , 59 , 60 , 61 , 62 , 63 , 64 ,
    773 /* 08 */ 65 , 66 , 67 , 112, 41 , IGN, IGN, IGN,
    774 /* 10 */ UNK,  2 ,  3 ,  4 ,  5 ,  6 ,  7 ,  8 ,
    775 /* 18 */  9 , 10 , 11 , 12 , 13 , UNK, UNK, UNK,
    776 /* 20 */ UNK, 16 , 17 , 18 , 19 , 20 , 21 , 22 ,
    777 /* 28 */  23, 24 , 25 , 26 , UNK, UNK, UNK, UNK,
    778 /* 30 */ UNK, 30 , 31 , 32 , 33 , 34 , 35 , 36 ,
    779 /* 38 */  37, 38 , 39 , 27 , 43 , UNK, UNK, UNK,
    780 /* 40 */ UNK, 44 , 45 , 46 , 47 , 48 , 49 , 50 ,
    781 /* 48 */  51, 52 , 53 , 40 , 28 , UNK, UNK, UNK,
    782 /* 50 */ UNK, 15 , UNK, 42 , UNK, UNK, UNK, UNK,
    783 /* 58 */ UNK, UNK, 200, 125, 54 , UNK, UNK, UNK,
    784 /* 60 */ UNK, UNK, UNK, UNK, UNK, 56 , 123, UNK,
    785 /* 68 */ UNK, 203, 208, 205, UNK, UNK, UNK, UNK,
    786 /* 70 */ UNK, 184, 29 , UNK, 57 , UNK, UNK, 121,
    787 /* 78 */ 53 , 14 , UNK, UNK, UNK, UNK, UNK, SPL,
    788 };
    789 
    790 /* US/UK - Fn to the left of the space bar and missing few keys */
    791 const uint8_t jornada7xx_us_keytrans[] = {
    792 /* 00 */ UNK,  1 , 59 , 60 , 61 , 62 , 63 , 64 ,
    793 /* 08 */ 65 , 66 , 67 , 68 , 87 , IGN, IGN, IGN,
    794 /* 10 */ UNK,  2 ,  3 ,  4 ,  5 ,  6 ,  7 ,  8 ,
    795 /* 18 */  9 , 10 , 11 , 12 , 13 , UNK, UNK, UNK,
    796 /* 20 */ UNK, 16 , 17 , 18 , 19 , 20 , 21 , 22 ,
    797 /* 28 */  23, 24 , 25 , 43 , 14 , UNK, UNK, UNK,
    798 /* 30 */ UNK, 30 , 31 , 32 , 33 , 34 , 35 , 36 ,
    799 /* 38 */  37, 38 , 39 , 40 , UNK, UNK, UNK, UNK,
    800 /* 40 */ UNK, 44 , 45 , 46 , 47 , 48 , 49 , 50 ,
    801 /* 48 */  51, 52 , UNK, 40 , 28 , UNK, UNK, UNK,
    802 /* 50 */ UNK, 15 , UNK, 42 , UNK, UNK, UNK, UNK,
    803 /* 58 */ UNK, UNK, 200, UNK, 54 , UNK, UNK, UNK,
    804 /* 60 */ UNK, UNK, UNK, UNK, UNK, 56 , 184, UNK,
    805 /* 68 */ UNK, 203, 208, 205, UNK, UNK, UNK, UNK,
    806 /* 70 */ UNK, 221, 29 , UNK, 57 , UNK, UNK, UNK,
    807 /* 78 */ 53 , 14 , UNK, UNK, UNK, UNK, UNK, SPL,
    808 };
    809 
    810 /* International - AltGr to the right and extra keys in three middle rows */
    811 const uint8_t jornada7xx_intl_keytrans[] = {
    812 /* 00 */ UNK,  1 , 59 , 60 , 61 , 62 , 63 , 64 ,
    813 /* 08 */ 65 , 66 , 67 , 68 , 87 , IGN, IGN, IGN,
    814 /* 10 */ UNK,  2 ,  3 ,  4 ,  5 ,  6 ,  7 ,  8 ,
    815 /* 18 */  9 , 10 , 11 , 12 , 13 , UNK, UNK, UNK,
    816 /* 20 */ UNK, 16 , 17 , 18 , 19 , 20 , 21 , 22 ,
    817 /* 28 */  23, 24 , 25 , 26 , 14 , UNK, UNK, UNK,
    818 /* 30 */ UNK, 30 , 31 , 32 , 33 , 34 , 35 , 36 ,
    819 /* 38 */  37, 38 , 39 , 27 , 43 , UNK, UNK, UNK,
    820 /* 40 */ UNK, 44 , 45 , 46 , 47 , 48 , 49 , 50 ,
    821 /* 48 */  51, 52 , 53 , 40 , 28 , UNK, UNK, UNK,
    822 /* 50 */ UNK, 15 , UNK, 42 , UNK, UNK, UNK, UNK,
    823 /* 58 */ UNK, UNK, 200, UNK, 54 , UNK, UNK, UNK,
    824 /* 60 */ UNK, UNK, UNK, UNK, UNK, 56 , 41 , UNK,
    825 /* 68 */ UNK, 203, 208, 205, UNK, UNK, UNK, UNK,
    826 /* 70 */ UNK, 221, 29 , UNK, 57 , UNK, UNK, UNK,
    827 /* 78 */ 184, 211, UNK, UNK, UNK, UNK, UNK, SPL,
    828 };
    829 
    830 const int jornada7xx_special_keymap[] = {
    831 	[KEY_SPECIAL_OFF]	= 127,
    832 	[KEY_SPECIAL_LIGHT]	= -1
    833 };
    834 
    835 /*
    836  * Sharp W-ZERO3 series
    837  */
    838 /*
    839  * WS003SH/WS004SH/WS007SH keyscan map
    840 	CTRL	(none)	TAB	(none)	CALL	MAIL	IE
    841 	1	2	q	w	a	z	MOJI
    842 	3	4	e	s	d	x	(none)
    843 	5	r	t	f	c	-	OK
    844 	6	y	g	v	b	SPACE	ACTION
    845 	7	8	u	h	n	/	,
    846 	9	i	j	m	.	(none)	LEFT
    847 	0	o	k	l	(none)	UP	DOWN
    848 	BS	p	(none)	(none)	ENTER	(none)	RIGHT
    849 	(none)	(none)	(none)	(none)	(none)	(none)	(none)
    850 	ROTATE	VOL-	(none)	SHIFT	WIN	LSOFT	RSOFT
    851 	CAMERA	VOL+	(none)	(none)	(none)	FN	(none)
    852 */
    853 /* Japanese */
    854 const uint8_t ws003sh_jp_keytrans[] = {
    855 /*	row#0,	row#1,	row#2,	row#3,	row#4,	row#5,	row#6,	*/
    856 /*00*/	29,	UNK,	15,	UNK,	IGN,	IGN,	IGN,
    857 /*01*/	2,	3,	16,	17,	30,	44,	1,
    858 /*02*/	4,	5,	18,	31,	32,	45,	UNK,
    859 /*03*/	6,	19,	20,	33,	46,	12,	28,
    860 /*04*/	7,	21,	34,	47,	48,	57,	28,
    861 /*05*/	8,	9,	22,	35,	49,	53,	51,
    862 /*06*/	10,	23,	36,	50,	52,	UNK,	203,
    863 /*07*/	11,	24,	37,	38,	UNK,	200,	208,
    864 /*08*/	14,	25,	UNK,	UNK,	28,	UNK,	205,
    865 /*09*/	UNK,	UNK,	UNK,	UNK,	UNK,	UNK,	UNK,
    866 /*10*/	IGN,	174,	UNK,	42,	IGN,	IGN,	IGN,
    867 /*11*/	IGN,	176,	UNK,	UNK,	UNK,	184,	SPL,
    868 };
    869 
    870 const int ws003sh_special_keymap[] = {
    871 	[KEY_SPECIAL_OFF]	= 83,
    872 	[KEY_SPECIAL_LIGHT]	= -1
    873 };
    874 
    875 static const keysym_t ws003sh_jp_keydesc[] = {
    876 /*  pos		normal		shifted		altgr	*/
    877     KC(4),	KS_3,		KS_numbersign,	KS_Cmd_BrightnessDown,
    878     KC(5),	KS_4,		KS_dollar,	KS_Cmd_BrightnessUp,
    879     KC(8),	KS_7,		KS_apostrophe,	KS_grave,
    880     KC(9),	KS_8,		KS_parenleft,	KS_braceleft,
    881     KC(10),	KS_9,		KS_parenright,	KS_braceright,
    882     KC(12),	KS_minus,	KS_equal,	KS_backslash,
    883     KC(14),	KS_Delete,	KS_Delete,	KS_BackSpace,
    884     KC(15),	KS_Tab,		KS_Tab,		KS_Escape,
    885     KC(17),	KS_w,		KS_W,		KS_asciicircum,
    886     KC(18),	KS_e,		KS_E,		KS_asciitilde,
    887     KC(19),	KS_r,		KS_R,		KS_bar,
    888     KC(22),	KS_u,		KS_U,		KS_bracketleft,
    889     KC(23),	KS_i,		KS_I,		KS_bracketright,
    890     KC(24),	KS_o,		KS_O,		KS_underscore,
    891     KC(25),	KS_p,		KS_P,		KS_at,
    892     KC(37),	KS_k,		KS_K,		KS_plus,
    893     KC(38),	KS_l,		KS_L,		KS_asterisk,
    894     KC(42),	KS_Shift_L,	KS_Shift_L,	KS_Shift_Lock,
    895     KC(51),	KS_comma,	KS_semicolon,	KS_less,
    896     KC(52),	KS_period,	KS_colon,	KS_greater,
    897     KC(184),	KS_Mode_switch,	KS_Multi_key,
    898     KC(200),	KS_Up,		KS_Up,		KS_Prior,
    899     KC(203),	KS_Left,	KS_Left,	KS_Home,
    900     KC(205),	KS_Right,	KS_Right,	KS_End,
    901     KC(208),	KS_Down,	KS_Down,	KS_Next,
    902 };
    903 
    904 /*
    905  * WS011SH keyscan map
    906 	Ctrl	(none)	Tab	(none)	(none)	(none)	(none)
    907 	(none)	(none)	Q	W	A	Z	MOJI
    908 	(none)	(none)	E	S	D	X	HAN/ZEN
    909 	(none)	R	T	F	C	-	OK
    910 	(none)	Y	G	V	B	Space	(none)
    911 	(none)	(none)	U	H	N	/	,
    912 	(none)	I	J	M	.	(none)	LEFT
    913 	(none)	O	K	L	(none)	UP	DOWN
    914 	Del	P	(none)	(none)	Enter	(none)	RIGHT
    915 	(none)	(none)	(none)	(none)	(none)	(none)	(none)
    916 	ROTATE	(none)	(none)	SHIFT	(none)	(none)	(none)
    917 	(none)	(none)	(none)	(none)	(none)	FN	(none)
    918 */
    919 /* Japanese */
    920 const uint8_t ws011sh_jp_keytrans[] = {
    921 /*	row#0,	row#1,	row#2,	row#3,	row#4,	row#5,	row#6,	*/
    922 /*00*/	29,	UNK,	15,	UNK,	UNK,	UNK,	UNK,
    923 /*01*/	UNK,	UNK,	16,	17,	30,	44,	1,
    924 /*02*/	UNK,	UNK,	18,	31,	32,	45,	41,
    925 /*03*/	UNK,	19,	20,	33,	46,	12,	3,
    926 /*04*/	UNK,	21,	34,	47,	48,	57,	UNK,
    927 /*05*/	UNK,	UNK,	22,	35,	49,	53,	51,
    928 /*06*/	UNK,	23,	36,	50,	52,	UNK,	203,
    929 /*07*/	UNK,	24,	37,	38,	UNK,	200,	208,
    930 /*08*/	14,	25,	UNK,	UNK,	28,	UNK,	205,
    931 /*09*/	UNK,	UNK,	UNK,	UNK,	UNK,	UNK,	UNK,
    932 /*10*/	IGN,	UNK,	UNK,	42,	UNK,	UNK,	UNK,
    933 /*11*/	UNK,	UNK,	UNK,	UNK,	UNK,	184,	SPL,
    934 };
    935 
    936 const int ws011sh_special_keymap[] = {
    937 	[KEY_SPECIAL_OFF]	= 83,
    938 	[KEY_SPECIAL_LIGHT]	= -1
    939 };
    940 
    941 static const keysym_t ws011sh_jp_keydesc[] = {
    942 /*  pos		normal		shifted		altgr	*/
    943     KC(3),	KS_grave,	KS_braceleft,	KS_braceright,
    944     KC(12),	KS_minus,	KS_equal,	KS_backslash,
    945     KC(14),	KS_Delete,	KS_Delete,	KS_BackSpace,
    946     KC(15),	KS_Tab,		KS_Tab,		KS_Escape,
    947     KC(16),	KS_q,		KS_Q,		KS_quotedbl,
    948     KC(17),	KS_w,		KS_W,		KS_numbersign,
    949     KC(18),	KS_e,		KS_E,		KS_dollar,
    950     KC(19),	KS_r,		KS_R,		KS_percent,
    951     KC(20),	KS_t,		KS_T,		KS_ampersand,
    952     KC(21),	KS_y,		KS_Y,		KS_1,
    953     KC(22),	KS_u,		KS_U,		KS_2,
    954     KC(23),	KS_i,		KS_I,		KS_3,
    955     KC(24),	KS_o,		KS_O,		KS_underscore,
    956     KC(25),	KS_p,		KS_P,		KS_at,
    957     KC(30),	KS_a,		KS_A,		KS_bracketleft,
    958     KC(31),	KS_s,		KS_S,		KS_apostrophe,
    959     KC(32),	KS_d,		KS_D,		KS_parenleft,
    960     KC(33),	KS_f,		KS_F,		KS_parenright,
    961     KC(34),	KS_g,		KS_G,		KS_asterisk,
    962     KC(35),	KS_h,		KS_H,		KS_4,
    963     KC(36),	KS_j,		KS_J,		KS_5,
    964     KC(37),	KS_k,		KS_K,		KS_6,
    965     KC(38),	KS_l,		KS_L,		KS_plus,
    966     KC(41),	KS_Zenkaku_Hankaku, KS_Zenkaku_Hankaku, KS_exclam,
    967     KC(42),	KS_Shift_L,	KS_Shift_L,	KS_Shift_Lock,
    968     KC(44),	KS_z,		KS_Z,		KS_bracketright,
    969     KC(45),	KS_x,		KS_X,		KS_asciicircum,
    970     KC(46),	KS_c,		KS_C,		KS_asciitilde,
    971     KC(47),	KS_v,		KS_V,		KS_bar,
    972     KC(48),	KS_b,		KS_B,		KS_7,
    973     KC(49),	KS_n,		KS_N,		KS_8,
    974     KC(50),	KS_m,		KS_M,		KS_9,
    975     KC(51),	KS_comma,	KS_less,	KS_semicolon,
    976     KC(52),	KS_period,	KS_greater,	KS_colon,
    977     KC(53),	KS_slash,	KS_question,	KS_0,
    978     KC(57),	KS_space,
    979     KC(184),	KS_Mode_switch,	KS_Multi_key,
    980     KC(200),	KS_Up,		KS_Up,		KS_Prior,
    981     KC(203),	KS_Left,	KS_Left,	KS_Home,
    982     KC(205),	KS_Right,	KS_Right,	KS_End,
    983     KC(208),	KS_Down,	KS_Down,	KS_Next,
    984 };
    985 
    986 /*
    987  * WS020SH keyscan map
    988 	Ctrl	(none)	Tab	(none)	(none)	(none)	(none)
    989 	(none)	(none)	Q	W	A	Z	MOJI
    990 	(none)	(none)	E	S	D	X	HAN/ZEN
    991 	(none)	R	T	F	C	-	OK
    992 	(none)	Y	G	V	B	Space	(none)
    993 	(none)	(none)	U	H	N	/	,
    994 	(none)	I	J	M	.	(none)	LEFT
    995 	(none)	O	K	L	(none)	UP	(none)
    996 	Del	P	(none)	(none)	Enter	(none)	RIGHT
    997 	(none)	(none)	(none)	(none)	(none)	DOWN	(none)
    998 	ROTATE	MEDIA	(none)	LSHIFT	RSHIFT	(none)	(none)
    999 	(none)	(none)	(none)	(none)	(none)	FN	(none)
   1000 */
   1001 /* Japanese */
   1002 const uint8_t ws020sh_jp_keytrans[] = {
   1003 /*	row#0,	row#1,	row#2,	row#3,	row#4,	row#5,	row#6,	*/
   1004 /*00*/	29,	UNK,	15,	UNK,	UNK,	UNK,	UNK,
   1005 /*01*/	UNK,	UNK,	16,	17,	30,	44,	1,
   1006 /*02*/	UNK,	UNK,	18,	31,	32,	45,	41,
   1007 /*03*/	UNK,	19,	20,	33,	46,	12,	3,
   1008 /*04*/	UNK,	21,	34,	47,	48,	57,	UNK,
   1009 /*05*/	UNK,	UNK,	22,	35,	49,	53,	51,
   1010 /*06*/	UNK,	23,	36,	50,	52,	UNK,	203,
   1011 /*07*/	UNK,	24,	37,	38,	UNK,	200,	UNK,
   1012 /*08*/	14,	25,	UNK,	UNK,	28,	UNK,	205,
   1013 /*09*/	UNK,	UNK,	UNK,	UNK,	UNK,	208,	UNK,
   1014 /*10*/	IGN,	IGN,	UNK,	42,	54,	UNK,	UNK,
   1015 /*11*/	UNK,	UNK,	UNK,	UNK,	UNK,	184,	SPL,
   1016 };
   1017 
   1018 const int ws020sh_special_keymap[] = {
   1019 	[KEY_SPECIAL_OFF]	= 83,
   1020 	[KEY_SPECIAL_LIGHT]	= -1
   1021 };
   1022 
   1023 static const keysym_t ws020sh_jp_keydesc[] = {
   1024 /*  pos		normal		shifted		altgr	*/
   1025     KC(3),	KS_grave,	KS_braceleft,	KS_braceright,
   1026     KC(12),	KS_minus,	KS_equal,	KS_backslash,
   1027     KC(14),	KS_Delete,	KS_Delete,	KS_BackSpace,
   1028     KC(15),	KS_Tab,		KS_Tab,		KS_Escape,
   1029     KC(16),	KS_q,		KS_Q,		KS_quotedbl,
   1030     KC(17),	KS_w,		KS_W,		KS_numbersign,
   1031     KC(18),	KS_e,		KS_E,		KS_dollar,
   1032     KC(19),	KS_r,		KS_R,		KS_percent,
   1033     KC(20),	KS_t,		KS_T,		KS_ampersand,
   1034     KC(21),	KS_y,		KS_Y,		KS_underscore,
   1035     KC(22),	KS_u,		KS_U,		KS_1,
   1036     KC(23),	KS_i,		KS_I,		KS_2,
   1037     KC(24),	KS_o,		KS_O,		KS_3,
   1038     KC(25),	KS_p,		KS_P,		KS_at,
   1039     KC(30),	KS_a,		KS_A,		KS_bracketleft,
   1040     KC(31),	KS_s,		KS_S,		KS_apostrophe,
   1041     KC(32),	KS_d,		KS_D,		KS_parenleft,
   1042     KC(33),	KS_f,		KS_F,		KS_parenright,
   1043     KC(34),	KS_g,		KS_G,		KS_asterisk,
   1044     KC(35),	KS_h,		KS_H,		KS_4,
   1045     KC(36),	KS_j,		KS_J,		KS_5,
   1046     KC(37),	KS_k,		KS_K,		KS_6,
   1047     KC(38),	KS_l,		KS_L,		KS_plus,
   1048     KC(41),	KS_Zenkaku_Hankaku, KS_Zenkaku_Hankaku, KS_exclam,
   1049     KC(42),	KS_Shift_L,	KS_Shift_L,	KS_Shift_Lock,
   1050     KC(44),	KS_z,		KS_Z,		KS_bracketright,
   1051     KC(45),	KS_x,		KS_X,		KS_asciicircum,
   1052     KC(46),	KS_c,		KS_C,		KS_asciitilde,
   1053     KC(47),	KS_v,		KS_V,		KS_bar,
   1054     KC(48),	KS_b,		KS_B,		KS_7,
   1055     KC(49),	KS_n,		KS_N,		KS_8,
   1056     KC(50),	KS_m,		KS_M,		KS_9,
   1057     KC(51),	KS_comma,	KS_less,	KS_semicolon,
   1058     KC(52),	KS_period,	KS_greater,	KS_colon,
   1059     KC(53),	KS_slash,	KS_question,	KS_0,
   1060     KC(54),	KS_Shift_R,	KS_Shift_R,	KS_Shift_Lock,
   1061     KC(57),	KS_space,
   1062     KC(184),	KS_Mode_switch,	KS_Multi_key,
   1063     KC(200),	KS_Up,		KS_Up,		KS_Prior,
   1064     KC(203),	KS_Left,	KS_Left,	KS_Home,
   1065     KC(205),	KS_Right,	KS_Right,	KS_End,
   1066     KC(208),	KS_Down,	KS_Down,	KS_Next,
   1067 };
   1068 
   1069 const uint8_t netbookpro_keytrans[] = {
   1070 /*	row#0,	row#1,	row#2,	row#3,	row#4,	row#5,	row#6,	row#7	*/
   1071 /*00*/	 28,	205,	 15,	 21,	203,	208,	 49,	 42,
   1072 	UNK,	UNK,	UNK,	UNK,	UNK,	 14,	UNK,	 12,
   1073 /*10*/	 13,	 11,	 25,	 39,	UNK,	 54,	UNK,	UNK,
   1074 	UNK,	UNK,	UNK,	 37,	 23,	  9,	 10,	 24,
   1075 /*20*/	 38,	UNK,	UNK,	 29,	UNK,	UNK,	UNK,	UNK,
   1076 	 51,	 40,	 50,	 36,	 22,	  8,	UNK,	UNK,
   1077 /*30*/	UNK,	184,	UNK,	UNK,	 57,	 19,	  5,	  6,
   1078 	 20,	 34,	 48,	UNK,	UNK,	UNK,	UNK,	 43,
   1079 /*40*/	UNK,	 56,	 33,	 47,	 46,	 32,	 18,	  4,
   1080 	UNK,	UNK,	UNK,	UNK,	UNK,	 53,	UNK,	 16,
   1081 /*50*/	 30,	 44,	 31,	 17,	 45,	UNK,	UNK,	UNK,
   1082 	UNK,	UNK,	UNK,	  1,	  2,	  3,	  7,	 52,
   1083 /*60*/	UNK,	 35,	UNK,	UNK,	UNK,	UNK,	UNK,	UNK,
   1084 	UNK,	UNK,	UNK,	UNK,	UNK,	UNK,	UNK,	UNK,
   1085 };
   1086 
   1087 static const keysym_t netbookpro_keydesc[] = {
   1088 /* pos      command		normal		shifted		fn	*/
   1089    KC(2),   KS_Cmd_Screen0,	KS_1,		KS_exclam,	KS_f1,
   1090    KC(3),   KS_Cmd_Screen1,	KS_2,		KS_at,		KS_f2,
   1091    KC(4),   KS_Cmd_Screen2,	KS_3,		KS_numbersign,	KS_f3,
   1092    KC(5),   KS_Cmd_Screen3,	KS_4,		KS_dollar,	KS_f4,
   1093    KC(6),   			KS_5,		KS_percent,	KS_grave,
   1094    KC(7),   			KS_6,		KS_asciicircum,	KS_apostrophe,
   1095    KC(8),   			KS_7,		KS_ampersand,	KS_braceleft,
   1096    KC(9),   			KS_8,		KS_asterisk,	KS_braceright,
   1097    KC(10),  			KS_9,		KS_parenleft,	KS_bracketleft,
   1098    KC(11),  			KS_0,		KS_parenright,	KS_bracketright,
   1099    KC(12),  			KS_minus,	KS_underscore,	KS_numbersign,
   1100    KC(15),  			KS_Tab,		KS_BackSpace,	KS_Caps_Lock,
   1101    KC(40),			KS_apostrophe,	KS_quotedbl,	KS_at,
   1102    KC(43),			KS_backslash,	KS_asciitilde,	KS_bar,
   1103    KC(51),			KS_comma,	KS_less,	KS_minus,
   1104    KC(52),  			KS_period,	KS_greater,	KS_plus,
   1105    KC(53),  			KS_slash,	KS_question,	KS_Help,
   1106    KC(184),			KS_Mode_switch,	KS_Multi_key,
   1107    KC(203),			KS_Left,	KS_Left,	KS_Home,
   1108    KC(205),			KS_Right,	KS_Right,	KS_End,
   1109 };
   1110 #endif /* hpcarm */
   1111 
   1112 #if defined(hpcarm) || defined(hpcsh)
   1113 /*
   1114  * Shared keymaps between the Jornada series (6xx, 7xx).
   1115  */
   1116 
   1117 /* US (ABA), UK (ABU) */
   1118 static const keysym_t jornada_us_keydesc[] = {
   1119 /*  pos      normal          shifted        altgr       */
   1120     KC(2),   KS_1,           KS_exclam,     KS_asciitilde,
   1121     KC(3),   KS_2,           KS_at,         KS_grave,
   1122     KC(4),   KS_3,           KS_numbersign, KS_sterling,
   1123 #ifdef KS_euro
   1124     KC(5),   KS_4,           KS_dollar,     KS_euro,
   1125 #endif
   1126     KC(25),  KS_p,           KS_P,          KS_braceleft,
   1127     KC(39),  KS_semicolon,   KS_colon,      KS_bracketleft,
   1128     KC(40),  KS_apostrophe,  KS_quotedbl,   KS_bracketright,
   1129     KC(43),  KS_backslash,   KS_bar,        KS_braceright,
   1130     KC(184), KS_Mode_switch, KS_Multi_key,
   1131 
   1132     KC(200), KS_Cmd_BrightnessUp,   KS_Up,
   1133     KC(203), KS_Cmd_ContrastDown,   KS_Left,
   1134     KC(205), KS_Cmd_ContrastUp,     KS_Right,
   1135     KC(208), KS_Cmd_BrightnessDown, KS_Down,
   1136 };
   1137 
   1138 /*
   1139  * XXX: Add AltGr layer for #ABB here?  OTOH, all the keys necessary
   1140  * for basic actions in DDB or shell are on the primary layer, so it
   1141  * makes sense to support AltGr via wsconsctl(8) instead, as the same
   1142  * primary layer is used e.g. in Russian models.  But it does make
   1143  * sense to define the <AltGr> key itself here, as we base this layout
   1144  * on KB_US that defines it as the right <Alt>.
   1145  */
   1146 /* European English (ABB) */
   1147 static const keysym_t jornada_intl_keydesc[] = {
   1148 /*  pos      normal          shifted        altgr       */
   1149     KC(42),  KS_Shift_L,     KS_Shift_L,    KS_Caps_Lock,
   1150     KC(184), KS_Mode_switch, KS_Multi_key,
   1151 
   1152     KC(200), KS_Cmd_BrightnessUp,   KS_Up,
   1153     KC(203), KS_Cmd_ContrastDown,   KS_Left,
   1154     KC(205), KS_Cmd_ContrastUp,     KS_Right,
   1155     KC(208), KS_Cmd_BrightnessDown, KS_Down,
   1156 };
   1157 
   1158 /* German (ABD) */
   1159 static const keysym_t jornada_de_keydesc[] = {
   1160 /*  pos      normal          shifted        altgr       */
   1161     KC(2),   KS_1,           KS_exclam,     KS_brokenbar,
   1162     KC(5),   KS_4,           KS_dollar,     KS_ccedilla,
   1163     KC(6),   KS_5,           KS_percent,    KS_sterling,
   1164     KC(7),   KS_6,           KS_ampersand,  KS_notsign,
   1165 #ifdef KS_euro
   1166     KC(18),  KS_e,           KS_E,          KS_euro,
   1167 #endif
   1168     KC(27),  KS_plus,        KS_asterisk,   KS_asciitilde, /* NB: not dead */
   1169     KC(30),  KS_a,           KS_A,          KS_bar,
   1170     KC(41),  KS_asciicircum, KS_degree,                    /* NB: not dead */
   1171     KC(43),  KS_numbersign,  KS_apostrophe, KS_dead_diaeresis,
   1172     KC(44),  KS_y,           KS_Y,          KS_less,
   1173     KC(45),  KS_x,           KS_X,          KS_greater,
   1174     KC(46),  KS_c,           KS_C,          KS_cent,
   1175 
   1176     KC(200), KS_Cmd_BrightnessUp,   KS_Up,
   1177     KC(203), KS_Cmd_ContrastDown,   KS_Left,
   1178     KC(205), KS_Cmd_ContrastUp,     KS_Right,
   1179     KC(208), KS_Cmd_BrightnessDown, KS_Down,
   1180 };
   1181 
   1182 /* French (ABF) */
   1183 static const keysym_t jornada_fr_keydesc[] = {
   1184 /*  pos      normal          shifted        altgr       */
   1185     KC(2),   KS_ampersand,   KS_1,          KS_plusminus,
   1186 #ifdef KS_euro
   1187     KC(18),  KS_e,           KS_E,          KS_euro,
   1188 #endif
   1189     KC(19),  KS_r,           KS_R,          KS_onequarter,
   1190     KC(20),  KS_t,           KS_T,          KS_onehalf,
   1191     KC(21),  KS_y,           KS_Y,          KS_threequarters,
   1192     KC(25),  KS_p,           KS_P,          KS_paragraph,
   1193     KC(30),  KS_q,           KS_Q,          KS_brokenbar,
   1194     KC(31),  KS_s,           KS_S,          KS_guillemotleft,
   1195     KC(32),  KS_d,           KS_D,          KS_guillemotright,
   1196     KC(40),  KS_ugrave,      KS_percent,    KS_dead_acute,
   1197     KC(41),  KS_twosuperior, KS_voidSymbol, KS_threesuperior,
   1198     KC(43),  KS_asterisk,    KS_mu,         KS_notsign,
   1199     KC(44),  KS_w,           KS_W,          KS_less,
   1200     KC(45),  KS_x,           KS_X,          KS_greater,
   1201     KC(46),  KS_c,           KS_C,          KS_cent,
   1202     KC(50),  KS_comma,       KS_question,   KS_mu,
   1203     KC(53),  KS_exclam,      KS_section,    KS_Eacute,
   1204     KC(184), KS_Mode_switch, KS_Multi_key,
   1205 
   1206     KC(200), KS_Cmd_BrightnessUp,   KS_Up,
   1207     KC(203), KS_Cmd_ContrastDown,   KS_Left,
   1208     KC(205), KS_Cmd_ContrastUp,     KS_Right,
   1209     KC(208), KS_Cmd_BrightnessDown, KS_Down,
   1210 };
   1211 
   1212 /* Scandinavian */
   1213 static const keysym_t jornada_scnv_keydesc[] = {
   1214 /*  pos      normal          shifted        altgr       */
   1215     KC(2),   KS_1,           KS_exclam,     KS_asciitilde,
   1216     KC(3),   KS_2,           KS_quotedbl,   KS_at,
   1217     KC(4),   KS_3,           KS_numbersign, KS_sterling,
   1218     KC(5),   KS_4,           KS_currency,   KS_dollar,
   1219     KC(7),   KS_6,           KS_ampersand,
   1220     KC(8),   KS_7,           KS_slash,      KS_braceleft,
   1221     KC(9),   KS_8,           KS_parenleft,  KS_bracketleft,
   1222     KC(10),  KS_9,           KS_parenright, KS_bracketright,
   1223     KC(11),  KS_0,           KS_equal,      KS_braceright,
   1224     KC(12),  KS_plus,        KS_question,   KS_backslash,
   1225     KC(13),  KS_apostrophe,  KS_grave,
   1226     KC(25),  KS_p,           KS_P,          KS_braceleft,
   1227     KC(26),  KS_aring,
   1228     /*
   1229      * XXX: KC(39) and KC(40) has odiaeresis/adiaeresis *and*
   1230      * oslash/ae on them.  Apparently localized WinCE uses the former
   1231      * for Swedish and Finnish and the latter for Danish and
   1232      * Norwegian.  But as the keyboard doesn't seem to have
   1233      * semicolon/colon and minus/underscore nowhere on the primary and
   1234      * altgr layers, I put them here (semicolon/colon is inherited).
   1235      */
   1236     KC(40),  KS_minus,       KS_underscore, /* XXX */
   1237     KC(41),  KS_paragraph,   KS_onehalf,    KS_bar,
   1238     KC(184), KS_Mode_switch, KS_Multi_key,
   1239 
   1240     KC(200), KS_Cmd_BrightnessUp,   KS_Up,
   1241     KC(203), KS_Cmd_ContrastDown,   KS_Left,
   1242     KC(205), KS_Cmd_ContrastUp,     KS_Right,
   1243     KC(208), KS_Cmd_BrightnessDown, KS_Down,
   1244 };
   1245 
   1246 /* Spanish (ABE) */
   1247 static const keysym_t jornada_es_keydesc[] = {
   1248 /*  pos      normal          shifted        altgr            */
   1249     KC(2),   KS_1,           KS_exclam,     KS_ordfeminine,
   1250     KC(3),   KS_2,           KS_quotedbl,   KS_masculine,
   1251     KC(4),   KS_3,           KS_numbersign,
   1252     KC(12),  KS_apostrophe,  KS_question,   KS_backslash,
   1253     KC(13),  KS_questiondown,KS_exclamdown,
   1254     KC(16),  KS_q,           KS_Q,          KS_at,
   1255 #ifdef KS_euro
   1256     KC(18),  KS_e,           KS_E,          KS_euro,
   1257 #endif
   1258     KC(26),  KS_dead_acute,  KS_dead_diaeresis,
   1259     KC(27),  KS_plus,        KS_asterisk,   KS_dead_tilde,
   1260     KC(40),  KS_braceleft,   KS_bracketleft,KS_dead_circumflex,
   1261     KC(41),  KS_bar,         KS_degree,     KS_notsign,
   1262     KC(43),  KS_braceright,  KS_bracketright,KS_dead_grave,
   1263     KC(44),  KS_z,           KS_Z,          KS_less,
   1264     KC(45),  KS_x,           KS_X,          KS_greater,
   1265     KC(46),  KS_c,           KS_C,          KS_Ccedilla,
   1266 
   1267     KC(200), KS_Cmd_BrightnessUp,   KS_Up,
   1268     KC(203), KS_Cmd_ContrastDown,   KS_Left,
   1269     KC(205), KS_Cmd_ContrastUp,     KS_Right,
   1270     KC(208), KS_Cmd_BrightnessDown, KS_Down,
   1271 };
   1272 #endif /* hpcarm || hpcsh */
   1273 
   1274 /*
   1275  * REMINDER:
   1276  *   When adding new entry to this array, make sure that pckbd_keydesctab[]
   1277  *   in sys/dev/pckbport/wskbdmap_mfii.c has a placeholder KB_MACHDEP entry
   1278  *   for the base ht_layout that you refer.
   1279  */
   1280 const struct hpckbd_keymap_table {
   1281 	platid_t	*ht_platform;
   1282 	const uint8_t	*ht_keymap;
   1283 	const int	*ht_special;
   1284 	struct {
   1285 		const keysym_t	*map;
   1286 		int size;
   1287 	} ht_cmdmap;
   1288 	kbd_t		ht_layout;
   1289 } hpckbd_keymap_table[] = {
   1290 #ifdef hpcmips
   1291 	{	&platid_mask_MACH_COMPAQ_C,
   1292 		tc5165_compaq_c_jp_keymap,
   1293 		tc5165_compaq_c_jp_special_keymap,
   1294 		NULLCMDMAP,
   1295 		KB_JP },
   1296 	{	&platid_mask_MACH_VICTOR_INTERLINK,
   1297 		m38813c_keymap,
   1298 		default_special_keymap,
   1299 		NULLCMDMAP,
   1300 		KB_JP },
   1301 	{	&platid_mask_MACH_SHARP_TELIOS,
   1302 		tc5165_telios_jp_keymap,
   1303 		default_special_keymap,
   1304 		CMDMAP(tc5165_telios_jp_cmdmap),
   1305 		KB_JP },
   1306 	{	&platid_mask_MACH_SHARP_MOBILON,
   1307 		tc5165_mobilon_keymap,
   1308 		tc5165_mobilon_special_keymap,
   1309 		NULLCMDMAP,
   1310 		KB_US },
   1311 	{	&platid_mask_MACH_NEC_MCR_500A,
   1312 		mobilepro750c_keytrans,
   1313 		NULL,
   1314 		NULLCMDMAP,
   1315 		KB_US },
   1316 	{	&platid_mask_MACH_NEC_MCR_520A,
   1317 		mobilepro_keytrans,
   1318 		NULL,
   1319 		CMDMAP(mobilepro_cmdmap),
   1320 		KB_US },
   1321 	{	&platid_mask_MACH_NEC_MCR_530A,
   1322 		mobilepro780_keytrans,
   1323 		NULL,
   1324 		NULLCMDMAP,
   1325 		KB_US },
   1326 	{	&platid_mask_MACH_NEC_MCR_700A,
   1327 		mobilepro8x0_keytrans,
   1328 		NULL,
   1329 		CMDMAP(mobilepro8x0_cmdmap),
   1330 		KB_US },
   1331 	{	&platid_mask_MACH_NEC_MCR_730A,
   1332 		mobilepro8x0_keytrans,
   1333 		NULL,
   1334 		CMDMAP(mobilepro8x0_cmdmap),
   1335 		KB_US },
   1336 	{	&platid_mask_MACH_NEC_MCR_MPRO700,
   1337 		mobilepro_keytrans,
   1338 		NULL,
   1339 		NULLCMDMAP,
   1340 		KB_US },
   1341 	{	&platid_mask_MACH_NEC_MCR_SIGMARION,
   1342 		sigmarion_jp_keytrans,
   1343 		NULL,
   1344 		CMDMAP(sigmarion_cmdmap),
   1345 		KB_JP },
   1346 	{	&platid_mask_MACH_NEC_MCR_SIGMARION2,
   1347 		sigmarion_jp_keytrans,
   1348 		NULL,
   1349 		CMDMAP(sigmarion_cmdmap),
   1350 		KB_JP },
   1351 	{	&platid_mask_MACH_NEC_MCR,
   1352 		mcr_jp_keytrans,
   1353 		NULL,
   1354 		CMDMAP(mcr_jp_cmdmap),
   1355 		KB_JP },
   1356 	{	&platid_mask_MACH_IBM_WORKPAD_Z50,
   1357 		z50_keytrans,
   1358 		NULL,
   1359 		NULLCMDMAP,
   1360 		KB_US },
   1361 	{	&platid_mask_MACH_SHARP_TRIPAD,
   1362 		tripad_keytrans,
   1363 		NULL,
   1364 		CMDMAP(tripad_cmdmap),
   1365 		KB_US },
   1366 	{	&platid_mask_MACH_VADEM_CLIO_C,
   1367 		tripad_keytrans,
   1368 		NULL,
   1369 		CMDMAP(tripad_cmdmap),
   1370 		KB_US },
   1371 	{	&platid_mask_MACH_NEC_MCCS,
   1372 		mccs_keytrans,
   1373 		NULL,
   1374 		CMDMAP(mccs_cmdmap),
   1375 		KB_JP },
   1376 	{	&platid_mask_MACH_FUJITSU_INTERTOP,
   1377 		intertop_keytrans,
   1378 		NULL,
   1379 		NULLCMDMAP,
   1380 		KB_JP },
   1381 	{	&platid_mask_MACH_CASIO_POCKETPOSTPET,
   1382 		pocketpostpet_keytrans,
   1383 		NULL,
   1384 		NULLCMDMAP,
   1385 		KB_JP },
   1386 #endif /* hpcmips */
   1387 #ifdef hpcsh
   1388 	/*
   1389 	 * HP Jornada 680/690
   1390 	 */
   1391 	/* Japanese */
   1392 	{	&platid_mask_MACH_HP_JORNADA_680JP,
   1393 		jornada6x0_jp_keytrans,
   1394 		jornada6x0_special_keymap,
   1395 		NULLCMDMAP,
   1396 		KB_JP },
   1397 	{	&platid_mask_MACH_HP_JORNADA_690JP,
   1398 		jornada6x0_jp_keytrans,
   1399 		jornada6x0_special_keymap,
   1400 		NULLCMDMAP,
   1401 		KB_JP },
   1402 	/* US (ABA), UK (ABU) */
   1403 	{	&platid_mask_MACH_HP_JORNADA_680,
   1404 		jornada6x0_us_keytrans,
   1405 		jornada6x0_special_keymap,
   1406 		CMDMAP(jornada_us_keydesc),
   1407 		KB_US },
   1408 	{	&platid_mask_MACH_HP_JORNADA_690,
   1409 		jornada6x0_us_keytrans,
   1410 		jornada6x0_special_keymap,
   1411 		CMDMAP(jornada_us_keydesc),
   1412 		KB_US },
   1413 	/* European English (ABB) */
   1414 	{	&platid_mask_MACH_HP_JORNADA_680EU,
   1415 		jornada6x0_intl_keytrans,
   1416 		jornada6x0_special_keymap,
   1417 		CMDMAP(jornada_intl_keydesc),
   1418 		KB_US },
   1419 	{	&platid_mask_MACH_HP_JORNADA_690EU,
   1420 		jornada6x0_intl_keytrans,
   1421 		jornada6x0_special_keymap,
   1422 		CMDMAP(jornada_intl_keydesc),
   1423 		KB_US },
   1424 	/* German (ABD) */
   1425 	{	&platid_mask_MACH_HP_JORNADA_680DE,
   1426 		jornada6x0_intl_keytrans,
   1427 		jornada6x0_special_keymap,
   1428 		CMDMAP(jornada_de_keydesc),
   1429 		KB_DE },
   1430 	{	&platid_mask_MACH_HP_JORNADA_690DE,
   1431 		jornada6x0_intl_keytrans,
   1432 		jornada6x0_special_keymap,
   1433  		CMDMAP(jornada_de_keydesc),
   1434 		KB_DE },
   1435 	/* French (ABF) */
   1436 	{	&platid_mask_MACH_HP_JORNADA_680FR,
   1437 		jornada6x0_intl_keytrans,
   1438 		jornada6x0_special_keymap,
   1439 		CMDMAP(jornada_fr_keydesc),
   1440 		KB_FR },
   1441 	{	&platid_mask_MACH_HP_JORNADA_690FR,
   1442 		jornada6x0_intl_keytrans,
   1443 		jornada6x0_special_keymap,
   1444  		CMDMAP(jornada_fr_keydesc),
   1445 		KB_FR },
   1446 	/* Scandinavian */
   1447 	{	&platid_mask_MACH_HP_JORNADA_680SV,
   1448 		jornada6x0_intl_keytrans,
   1449 		jornada6x0_special_keymap,
   1450 		CMDMAP(jornada_scnv_keydesc),
   1451 		KB_US },
   1452 	{	&platid_mask_MACH_HP_JORNADA_690SV,
   1453 		jornada6x0_intl_keytrans,
   1454 		jornada6x0_special_keymap,
   1455  		CMDMAP(jornada_scnv_keydesc),
   1456 		KB_US },
   1457 	/* Spanish (ABE) */
   1458 	{	&platid_mask_MACH_HP_JORNADA_680ES,
   1459 		jornada6x0_intl_keytrans,
   1460 		jornada6x0_special_keymap,
   1461 		CMDMAP(jornada_es_keydesc),
   1462 		KB_ES },
   1463 	{	&platid_mask_MACH_HP_JORNADA_690ES,
   1464 		jornada6x0_intl_keytrans,
   1465 		jornada6x0_special_keymap,
   1466  		CMDMAP(jornada_es_keydesc),
   1467 		KB_ES },
   1468 	/*
   1469 	 * HP 620LX
   1470 	 */
   1471 	/* Japanese */
   1472 	{	&platid_mask_MACH_HP_LX_620JP,
   1473 		hp620lx_jp_keytrans,
   1474 		hp620lx_special_keymap,
   1475 		NULLCMDMAP,
   1476 		KB_JP },
   1477 	/* Other models */
   1478 	{	&platid_mask_MACH_HP_LX_620,
   1479 		hp620lx_intl_keytrans,
   1480 		hp620lx_special_keymap,
   1481 		NULLCMDMAP,
   1482 		KB_US },
   1483 
   1484 	/*
   1485 	 * PERSONA HPW50PAD
   1486 	 */
   1487 	/* Japanese */
   1488 	{ 	&platid_mask_MACH_HITACHI_PERSONA_HPW50PAD,
   1489 		persona_hpw50pad_jp_keytrans,
   1490 		persona_hpw50pad_special_keymap,
   1491  		CMDMAP(persona_hpw50pad_jp_keydesc),
   1492 		KB_JP },
   1493 
   1494 	/*
   1495 	 * PERSONA HPW200EC
   1496 	 */
   1497 	/* US */
   1498 	{ 	&platid_mask_MACH_HITACHI_PERSONA_HPW200EC,
   1499 		persona_hpw200ec_keytrans,
   1500 		persona_hpw200ec_special_keymap,
   1501 		NULLCMDMAP,
   1502 		KB_US },
   1503 
   1504 #endif /* hpcsh */
   1505 #ifdef hpcarm
   1506 	/*
   1507 	 * HP Jornada 710/720/728
   1508 	 */
   1509 	/* US (ABA), UK (ABU) */
   1510 	{	&platid_mask_MACH_HP_JORNADA_720,
   1511 		jornada7xx_us_keytrans,
   1512 		jornada7xx_special_keymap,
   1513 		CMDMAP(jornada_us_keydesc),
   1514 		KB_US },
   1515 	/* Japanese */
   1516 	{	&platid_mask_MACH_HP_JORNADA_720JP,
   1517 		jornada7xx_jp_keytrans,
   1518 		jornada7xx_special_keymap,
   1519 		NULLCMDMAP,
   1520 		KB_JP },
   1521 	/* European English (ABB) */
   1522 	{	&platid_mask_MACH_HP_JORNADA_720EU,
   1523 		jornada7xx_intl_keytrans,
   1524 		jornada7xx_special_keymap,
   1525 		CMDMAP(jornada_intl_keydesc),
   1526 		KB_US },
   1527 	/* German (ABD) */
   1528 	{	&platid_mask_MACH_HP_JORNADA_720DE,
   1529 		jornada7xx_intl_keytrans,
   1530 		jornada7xx_special_keymap,
   1531 		CMDMAP(jornada_de_keydesc),
   1532 		KB_DE },
   1533 	/* French (ABF) */
   1534 	{	&platid_mask_MACH_HP_JORNADA_720FR,
   1535 		jornada7xx_intl_keytrans,
   1536 		jornada7xx_special_keymap,
   1537 		CMDMAP(jornada_fr_keydesc),
   1538 		KB_FR },
   1539 	/* Scandinavian */
   1540 	{	&platid_mask_MACH_HP_JORNADA_720SV,
   1541 		jornada7xx_intl_keytrans,
   1542 		jornada7xx_special_keymap,
   1543 		CMDMAP(jornada_scnv_keydesc),
   1544 		KB_US },
   1545 	/* Spanish (ABE) */
   1546 	{	&platid_mask_MACH_HP_JORNADA_720ES,
   1547 		jornada7xx_intl_keytrans,
   1548 		jornada7xx_special_keymap,
   1549 		CMDMAP(jornada_es_keydesc),
   1550 		KB_ES },
   1551 	/*
   1552 	 * Sharp W-ZERO3
   1553 	 */
   1554 	/* WS003SH */
   1555 	{	&platid_mask_MACH_SHARP_WZERO3_WS003SH,
   1556 		ws003sh_jp_keytrans,
   1557 		ws003sh_special_keymap,
   1558 		CMDMAP(ws003sh_jp_keydesc),
   1559 		KB_JP },
   1560 	/* WS004SH */
   1561 	{	&platid_mask_MACH_SHARP_WZERO3_WS004SH,
   1562 		ws003sh_jp_keytrans,
   1563 		ws003sh_special_keymap,
   1564 		CMDMAP(ws003sh_jp_keydesc),
   1565 		KB_JP },
   1566 	/* WS007SH */
   1567 	{	&platid_mask_MACH_SHARP_WZERO3_WS007SH,
   1568 		ws003sh_jp_keytrans,
   1569 		ws003sh_special_keymap,
   1570 		CMDMAP(ws003sh_jp_keydesc),
   1571 		KB_JP },
   1572 	/* WS011SH */
   1573 	{	&platid_mask_MACH_SHARP_WZERO3_WS011SH,
   1574 		ws011sh_jp_keytrans,
   1575 		ws011sh_special_keymap,
   1576 		CMDMAP(ws011sh_jp_keydesc),
   1577 		KB_JP },
   1578 	/* WS020SH */
   1579 	{	&platid_mask_MACH_SHARP_WZERO3_WS020SH,
   1580 		ws020sh_jp_keytrans,
   1581 		ws020sh_special_keymap,
   1582 		CMDMAP(ws020sh_jp_keydesc),
   1583 		KB_JP },
   1584 	/* NETBOOK PRO */
   1585 	{	&platid_mask_MACH_PSIONTEKLOGIX_NETBOOK_PRO,
   1586 		netbookpro_keytrans,
   1587 		NULL,
   1588 		CMDMAP(netbookpro_keydesc),
   1589 		KB_US },
   1590 #endif /* hpcarm */
   1591 
   1592 	{ .ht_platform = NULL } /* end mark */
   1593 };
   1594