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@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