hpckbdkeymap.h revision 1.50 1 /* $NetBSD: hpckbdkeymap.h,v 1.50 2010/05/23 11:57:04 nonaka 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 #endif /* hpcarm */
1069
1070 #if defined(hpcarm) || defined(hpcsh)
1071 /*
1072 * Shared keymaps between the Jornada series (6xx, 7xx).
1073 */
1074
1075 /* US (ABA), UK (ABU) */
1076 static const keysym_t jornada_us_keydesc[] = {
1077 /* pos normal shifted altgr */
1078 KC(2), KS_1, KS_exclam, KS_asciitilde,
1079 KC(3), KS_2, KS_at, KS_grave,
1080 KC(4), KS_3, KS_numbersign, KS_sterling,
1081 #ifdef KS_euro
1082 KC(5), KS_4, KS_dollar, KS_euro,
1083 #endif
1084 KC(25), KS_p, KS_P, KS_braceleft,
1085 KC(39), KS_semicolon, KS_colon, KS_bracketleft,
1086 KC(40), KS_apostrophe, KS_quotedbl, KS_bracketright,
1087 KC(43), KS_backslash, KS_bar, KS_braceright,
1088 KC(184), KS_Mode_switch, KS_Multi_key,
1089
1090 KC(200), KS_Cmd_BrightnessUp, KS_Up,
1091 KC(203), KS_Cmd_ContrastDown, KS_Left,
1092 KC(205), KS_Cmd_ContrastUp, KS_Right,
1093 KC(208), KS_Cmd_BrightnessDown, KS_Down,
1094 };
1095
1096 /*
1097 * XXX: Add AltGr layer for #ABB here? OTOH, all the keys necessary
1098 * for basic actions in DDB or shell are on the primary layer, so it
1099 * makes sense to support AltGr via wsconsctl(8) instead, as the same
1100 * primary layer is used e.g. in Russian models. But it does make
1101 * sense to define the <AltGr> key itself here, as we base this layout
1102 * on KB_US that defines it as the right <Alt>.
1103 */
1104 /* European English (ABB) */
1105 static const keysym_t jornada_intl_keydesc[] = {
1106 /* pos normal shifted altgr */
1107 KC(42), KS_Shift_L, KS_Shift_L, KS_Caps_Lock,
1108 KC(184), KS_Mode_switch, KS_Multi_key,
1109
1110 KC(200), KS_Cmd_BrightnessUp, KS_Up,
1111 KC(203), KS_Cmd_ContrastDown, KS_Left,
1112 KC(205), KS_Cmd_ContrastUp, KS_Right,
1113 KC(208), KS_Cmd_BrightnessDown, KS_Down,
1114 };
1115
1116 /* German (ABD) */
1117 static const keysym_t jornada_de_keydesc[] = {
1118 /* pos normal shifted altgr */
1119 KC(2), KS_1, KS_exclam, KS_brokenbar,
1120 KC(5), KS_4, KS_dollar, KS_ccedilla,
1121 KC(6), KS_5, KS_percent, KS_sterling,
1122 KC(7), KS_6, KS_ampersand, KS_notsign,
1123 #ifdef KS_euro
1124 KC(18), KS_e, KS_E, KS_euro,
1125 #endif
1126 KC(27), KS_plus, KS_asterisk, KS_asciitilde, /* NB: not dead */
1127 KC(30), KS_a, KS_A, KS_bar,
1128 KC(41), KS_asciicircum, KS_degree, /* NB: not dead */
1129 KC(43), KS_numbersign, KS_apostrophe, KS_dead_diaeresis,
1130 KC(44), KS_y, KS_Y, KS_less,
1131 KC(45), KS_x, KS_X, KS_greater,
1132 KC(46), KS_c, KS_C, KS_cent,
1133
1134 KC(200), KS_Cmd_BrightnessUp, KS_Up,
1135 KC(203), KS_Cmd_ContrastDown, KS_Left,
1136 KC(205), KS_Cmd_ContrastUp, KS_Right,
1137 KC(208), KS_Cmd_BrightnessDown, KS_Down,
1138 };
1139
1140 /* French (ABF) */
1141 static const keysym_t jornada_fr_keydesc[] = {
1142 /* pos normal shifted altgr */
1143 KC(2), KS_ampersand, KS_1, KS_plusminus,
1144 #ifdef KS_euro
1145 KC(18), KS_e, KS_E, KS_euro,
1146 #endif
1147 KC(19), KS_r, KS_R, KS_onequarter,
1148 KC(20), KS_t, KS_T, KS_onehalf,
1149 KC(21), KS_y, KS_Y, KS_threequarters,
1150 KC(25), KS_p, KS_P, KS_paragraph,
1151 KC(30), KS_q, KS_Q, KS_brokenbar,
1152 KC(31), KS_s, KS_S, KS_guillemotleft,
1153 KC(32), KS_d, KS_D, KS_guillemotright,
1154 KC(40), KS_ugrave, KS_percent, KS_dead_acute,
1155 KC(41), KS_twosuperior, KS_voidSymbol, KS_threesuperior,
1156 KC(43), KS_asterisk, KS_mu, KS_notsign,
1157 KC(44), KS_w, KS_W, KS_less,
1158 KC(45), KS_x, KS_X, KS_greater,
1159 KC(46), KS_c, KS_C, KS_cent,
1160 KC(50), KS_comma, KS_question, KS_mu,
1161 KC(53), KS_exclam, KS_section, KS_Eacute,
1162 KC(184), KS_Mode_switch, KS_Multi_key,
1163
1164 KC(200), KS_Cmd_BrightnessUp, KS_Up,
1165 KC(203), KS_Cmd_ContrastDown, KS_Left,
1166 KC(205), KS_Cmd_ContrastUp, KS_Right,
1167 KC(208), KS_Cmd_BrightnessDown, KS_Down,
1168 };
1169
1170 /* Scandinavian */
1171 static const keysym_t jornada_scnv_keydesc[] = {
1172 /* pos normal shifted altgr */
1173 KC(2), KS_1, KS_exclam, KS_asciitilde,
1174 KC(3), KS_2, KS_quotedbl, KS_at,
1175 KC(4), KS_3, KS_numbersign, KS_sterling,
1176 KC(5), KS_4, KS_currency, KS_dollar,
1177 KC(7), KS_6, KS_ampersand,
1178 KC(8), KS_7, KS_slash, KS_braceleft,
1179 KC(9), KS_8, KS_parenleft, KS_bracketleft,
1180 KC(10), KS_9, KS_parenright, KS_bracketright,
1181 KC(11), KS_0, KS_equal, KS_braceright,
1182 KC(12), KS_plus, KS_question, KS_backslash,
1183 KC(13), KS_apostrophe, KS_grave,
1184 KC(25), KS_p, KS_P, KS_braceleft,
1185 KC(26), KS_aring,
1186 /*
1187 * XXX: KC(39) and KC(40) has odiaeresis/adiaeresis *and*
1188 * oslash/ae on them. Apparently localized WinCE uses the former
1189 * for Swedish and Finnish and the latter for Danish and
1190 * Norwegian. But as the keyboard doesn't seem to have
1191 * semicolon/colon and minus/underscore nowhere on the primary and
1192 * altgr layers, I put them here (semicolon/colon is inherited).
1193 */
1194 KC(40), KS_minus, KS_underscore, /* XXX */
1195 KC(41), KS_paragraph, KS_onehalf, KS_bar,
1196 KC(184), KS_Mode_switch, KS_Multi_key,
1197
1198 KC(200), KS_Cmd_BrightnessUp, KS_Up,
1199 KC(203), KS_Cmd_ContrastDown, KS_Left,
1200 KC(205), KS_Cmd_ContrastUp, KS_Right,
1201 KC(208), KS_Cmd_BrightnessDown, KS_Down,
1202 };
1203
1204 /* Spanish (ABE) */
1205 static const keysym_t jornada_es_keydesc[] = {
1206 /* pos normal shifted altgr */
1207 KC(2), KS_1, KS_exclam, KS_ordfeminine,
1208 KC(3), KS_2, KS_quotedbl, KS_masculine,
1209 KC(4), KS_3, KS_numbersign,
1210 KC(12), KS_apostrophe, KS_question, KS_backslash,
1211 KC(13), KS_questiondown,KS_exclamdown,
1212 KC(16), KS_q, KS_Q, KS_at,
1213 #ifdef KS_euro
1214 KC(18), KS_e, KS_E, KS_euro,
1215 #endif
1216 KC(26), KS_dead_acute, KS_dead_diaeresis,
1217 KC(27), KS_plus, KS_asterisk, KS_dead_tilde,
1218 KC(40), KS_braceleft, KS_bracketleft,KS_dead_circumflex,
1219 KC(41), KS_bar, KS_degree, KS_notsign,
1220 KC(43), KS_braceright, KS_bracketright,KS_dead_grave,
1221 KC(44), KS_z, KS_Z, KS_less,
1222 KC(45), KS_x, KS_X, KS_greater,
1223 KC(46), KS_c, KS_C, KS_Ccedilla,
1224
1225 KC(200), KS_Cmd_BrightnessUp, KS_Up,
1226 KC(203), KS_Cmd_ContrastDown, KS_Left,
1227 KC(205), KS_Cmd_ContrastUp, KS_Right,
1228 KC(208), KS_Cmd_BrightnessDown, KS_Down,
1229 };
1230 #endif /* hpcarm || hpcsh */
1231
1232 /*
1233 * REMINDER:
1234 * When adding new entry to this array, make sure that pckbd_keydesctab[]
1235 * in sys/dev/pckbport/wskbdmap_mfii.c has a placeholder KB_MACHDEP entry
1236 * for the base ht_layout that you refer.
1237 */
1238 const struct hpckbd_keymap_table {
1239 platid_t *ht_platform;
1240 const uint8_t *ht_keymap;
1241 const int *ht_special;
1242 struct {
1243 const keysym_t *map;
1244 int size;
1245 } ht_cmdmap;
1246 kbd_t ht_layout;
1247 } hpckbd_keymap_table[] = {
1248 #ifdef hpcmips
1249 { &platid_mask_MACH_COMPAQ_C,
1250 tc5165_compaq_c_jp_keymap,
1251 tc5165_compaq_c_jp_special_keymap,
1252 NULLCMDMAP,
1253 KB_JP },
1254 { &platid_mask_MACH_VICTOR_INTERLINK,
1255 m38813c_keymap,
1256 default_special_keymap,
1257 NULLCMDMAP,
1258 KB_JP },
1259 { &platid_mask_MACH_SHARP_TELIOS,
1260 tc5165_telios_jp_keymap,
1261 default_special_keymap,
1262 CMDMAP(tc5165_telios_jp_cmdmap),
1263 KB_JP },
1264 { &platid_mask_MACH_SHARP_MOBILON,
1265 tc5165_mobilon_keymap,
1266 tc5165_mobilon_special_keymap,
1267 NULLCMDMAP,
1268 KB_US },
1269 { &platid_mask_MACH_NEC_MCR_500A,
1270 mobilepro750c_keytrans,
1271 NULL,
1272 NULLCMDMAP,
1273 KB_US },
1274 { &platid_mask_MACH_NEC_MCR_520A,
1275 mobilepro_keytrans,
1276 NULL,
1277 CMDMAP(mobilepro_cmdmap),
1278 KB_US },
1279 { &platid_mask_MACH_NEC_MCR_530A,
1280 mobilepro780_keytrans,
1281 NULL,
1282 NULLCMDMAP,
1283 KB_US },
1284 { &platid_mask_MACH_NEC_MCR_700A,
1285 mobilepro8x0_keytrans,
1286 NULL,
1287 CMDMAP(mobilepro8x0_cmdmap),
1288 KB_US },
1289 { &platid_mask_MACH_NEC_MCR_730A,
1290 mobilepro8x0_keytrans,
1291 NULL,
1292 CMDMAP(mobilepro8x0_cmdmap),
1293 KB_US },
1294 { &platid_mask_MACH_NEC_MCR_MPRO700,
1295 mobilepro_keytrans,
1296 NULL,
1297 NULLCMDMAP,
1298 KB_US },
1299 { &platid_mask_MACH_NEC_MCR_SIGMARION,
1300 sigmarion_jp_keytrans,
1301 NULL,
1302 CMDMAP(sigmarion_cmdmap),
1303 KB_JP },
1304 { &platid_mask_MACH_NEC_MCR_SIGMARION2,
1305 sigmarion_jp_keytrans,
1306 NULL,
1307 CMDMAP(sigmarion_cmdmap),
1308 KB_JP },
1309 { &platid_mask_MACH_NEC_MCR,
1310 mcr_jp_keytrans,
1311 NULL,
1312 CMDMAP(mcr_jp_cmdmap),
1313 KB_JP },
1314 { &platid_mask_MACH_IBM_WORKPAD_Z50,
1315 z50_keytrans,
1316 NULL,
1317 NULLCMDMAP,
1318 KB_US },
1319 { &platid_mask_MACH_SHARP_TRIPAD,
1320 tripad_keytrans,
1321 NULL,
1322 CMDMAP(tripad_cmdmap),
1323 KB_US },
1324 { &platid_mask_MACH_VADEM_CLIO_C,
1325 tripad_keytrans,
1326 NULL,
1327 CMDMAP(tripad_cmdmap),
1328 KB_US },
1329 { &platid_mask_MACH_NEC_MCCS,
1330 mccs_keytrans,
1331 NULL,
1332 CMDMAP(mccs_cmdmap),
1333 KB_JP },
1334 { &platid_mask_MACH_FUJITSU_INTERTOP,
1335 intertop_keytrans,
1336 NULL,
1337 NULLCMDMAP,
1338 KB_JP },
1339 { &platid_mask_MACH_CASIO_POCKETPOSTPET,
1340 pocketpostpet_keytrans,
1341 NULL,
1342 NULLCMDMAP,
1343 KB_JP },
1344 #endif /* hpcmips */
1345 #ifdef hpcsh
1346 /*
1347 * HP Jornada 680/690
1348 */
1349 /* Japanese */
1350 { &platid_mask_MACH_HP_JORNADA_680JP,
1351 jornada6x0_jp_keytrans,
1352 jornada6x0_special_keymap,
1353 NULLCMDMAP,
1354 KB_JP },
1355 { &platid_mask_MACH_HP_JORNADA_690JP,
1356 jornada6x0_jp_keytrans,
1357 jornada6x0_special_keymap,
1358 NULLCMDMAP,
1359 KB_JP },
1360 /* US (ABA), UK (ABU) */
1361 { &platid_mask_MACH_HP_JORNADA_680,
1362 jornada6x0_us_keytrans,
1363 jornada6x0_special_keymap,
1364 CMDMAP(jornada_us_keydesc),
1365 KB_US },
1366 { &platid_mask_MACH_HP_JORNADA_690,
1367 jornada6x0_us_keytrans,
1368 jornada6x0_special_keymap,
1369 CMDMAP(jornada_us_keydesc),
1370 KB_US },
1371 /* European English (ABB) */
1372 { &platid_mask_MACH_HP_JORNADA_680EU,
1373 jornada6x0_intl_keytrans,
1374 jornada6x0_special_keymap,
1375 CMDMAP(jornada_intl_keydesc),
1376 KB_US },
1377 { &platid_mask_MACH_HP_JORNADA_690EU,
1378 jornada6x0_intl_keytrans,
1379 jornada6x0_special_keymap,
1380 CMDMAP(jornada_intl_keydesc),
1381 KB_US },
1382 /* German (ABD) */
1383 { &platid_mask_MACH_HP_JORNADA_680DE,
1384 jornada6x0_intl_keytrans,
1385 jornada6x0_special_keymap,
1386 CMDMAP(jornada_de_keydesc),
1387 KB_DE },
1388 { &platid_mask_MACH_HP_JORNADA_690DE,
1389 jornada6x0_intl_keytrans,
1390 jornada6x0_special_keymap,
1391 CMDMAP(jornada_de_keydesc),
1392 KB_DE },
1393 /* French (ABF) */
1394 { &platid_mask_MACH_HP_JORNADA_680FR,
1395 jornada6x0_intl_keytrans,
1396 jornada6x0_special_keymap,
1397 CMDMAP(jornada_fr_keydesc),
1398 KB_FR },
1399 { &platid_mask_MACH_HP_JORNADA_690FR,
1400 jornada6x0_intl_keytrans,
1401 jornada6x0_special_keymap,
1402 CMDMAP(jornada_fr_keydesc),
1403 KB_FR },
1404 /* Scandinavian */
1405 { &platid_mask_MACH_HP_JORNADA_680SV,
1406 jornada6x0_intl_keytrans,
1407 jornada6x0_special_keymap,
1408 CMDMAP(jornada_scnv_keydesc),
1409 KB_US },
1410 { &platid_mask_MACH_HP_JORNADA_690SV,
1411 jornada6x0_intl_keytrans,
1412 jornada6x0_special_keymap,
1413 CMDMAP(jornada_scnv_keydesc),
1414 KB_US },
1415 /* Spanish (ABE) */
1416 { &platid_mask_MACH_HP_JORNADA_680ES,
1417 jornada6x0_intl_keytrans,
1418 jornada6x0_special_keymap,
1419 CMDMAP(jornada_es_keydesc),
1420 KB_ES },
1421 { &platid_mask_MACH_HP_JORNADA_690ES,
1422 jornada6x0_intl_keytrans,
1423 jornada6x0_special_keymap,
1424 CMDMAP(jornada_es_keydesc),
1425 KB_ES },
1426 /*
1427 * HP 620LX
1428 */
1429 /* Japanese */
1430 { &platid_mask_MACH_HP_LX_620JP,
1431 hp620lx_jp_keytrans,
1432 hp620lx_special_keymap,
1433 NULLCMDMAP,
1434 KB_JP },
1435 /* Other models */
1436 { &platid_mask_MACH_HP_LX_620,
1437 hp620lx_intl_keytrans,
1438 hp620lx_special_keymap,
1439 NULLCMDMAP,
1440 KB_US },
1441
1442 /*
1443 * PERSONA HPW50PAD
1444 */
1445 /* Japanese */
1446 { &platid_mask_MACH_HITACHI_PERSONA_HPW50PAD,
1447 persona_hpw50pad_jp_keytrans,
1448 persona_hpw50pad_special_keymap,
1449 CMDMAP(persona_hpw50pad_jp_keydesc),
1450 KB_JP },
1451
1452 /*
1453 * PERSONA HPW200EC
1454 */
1455 /* US */
1456 { &platid_mask_MACH_HITACHI_PERSONA_HPW200EC,
1457 persona_hpw200ec_keytrans,
1458 persona_hpw200ec_special_keymap,
1459 NULLCMDMAP,
1460 KB_US },
1461
1462 #endif /* hpcsh */
1463 #ifdef hpcarm
1464 /*
1465 * HP Jornada 710/720/728
1466 */
1467 /* US (ABA), UK (ABU) */
1468 { &platid_mask_MACH_HP_JORNADA_720,
1469 jornada7xx_us_keytrans,
1470 jornada7xx_special_keymap,
1471 CMDMAP(jornada_us_keydesc),
1472 KB_US },
1473 /* Japanese */
1474 { &platid_mask_MACH_HP_JORNADA_720JP,
1475 jornada7xx_jp_keytrans,
1476 jornada7xx_special_keymap,
1477 NULLCMDMAP,
1478 KB_JP },
1479 /* European English (ABB) */
1480 { &platid_mask_MACH_HP_JORNADA_720EU,
1481 jornada7xx_intl_keytrans,
1482 jornada7xx_special_keymap,
1483 CMDMAP(jornada_intl_keydesc),
1484 KB_US },
1485 /* German (ABD) */
1486 { &platid_mask_MACH_HP_JORNADA_720DE,
1487 jornada7xx_intl_keytrans,
1488 jornada7xx_special_keymap,
1489 CMDMAP(jornada_de_keydesc),
1490 KB_DE },
1491 /* French (ABF) */
1492 { &platid_mask_MACH_HP_JORNADA_720FR,
1493 jornada7xx_intl_keytrans,
1494 jornada7xx_special_keymap,
1495 CMDMAP(jornada_fr_keydesc),
1496 KB_FR },
1497 /* Scandinavian */
1498 { &platid_mask_MACH_HP_JORNADA_720SV,
1499 jornada7xx_intl_keytrans,
1500 jornada7xx_special_keymap,
1501 CMDMAP(jornada_scnv_keydesc),
1502 KB_US },
1503 /* Spanish (ABE) */
1504 { &platid_mask_MACH_HP_JORNADA_720ES,
1505 jornada7xx_intl_keytrans,
1506 jornada7xx_special_keymap,
1507 CMDMAP(jornada_es_keydesc),
1508 KB_ES },
1509 /*
1510 * Sharp W-ZERO3
1511 */
1512 /* WS003SH */
1513 { &platid_mask_MACH_SHARP_WZERO3_WS003SH,
1514 ws003sh_jp_keytrans,
1515 ws003sh_special_keymap,
1516 CMDMAP(ws003sh_jp_keydesc),
1517 KB_JP },
1518 /* WS004SH */
1519 { &platid_mask_MACH_SHARP_WZERO3_WS004SH,
1520 ws003sh_jp_keytrans,
1521 ws003sh_special_keymap,
1522 CMDMAP(ws003sh_jp_keydesc),
1523 KB_JP },
1524 /* WS007SH */
1525 { &platid_mask_MACH_SHARP_WZERO3_WS007SH,
1526 ws003sh_jp_keytrans,
1527 ws003sh_special_keymap,
1528 CMDMAP(ws003sh_jp_keydesc),
1529 KB_JP },
1530 /* WS011SH */
1531 { &platid_mask_MACH_SHARP_WZERO3_WS011SH,
1532 ws011sh_jp_keytrans,
1533 ws011sh_special_keymap,
1534 CMDMAP(ws011sh_jp_keydesc),
1535 KB_JP },
1536 /* WS020SH */
1537 { &platid_mask_MACH_SHARP_WZERO3_WS020SH,
1538 ws020sh_jp_keytrans,
1539 ws020sh_special_keymap,
1540 CMDMAP(ws020sh_jp_keydesc),
1541 KB_JP },
1542 #endif /* hpcarm */
1543
1544 { .ht_platform = NULL } /* end mark */
1545 };
1546