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