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