bsd_KbdMap.c revision 0c005ca7
1/* 2 * Slightly modified xf86KbdBSD.c which is 3 * 4 * Derived from xf86Kbd.c by S_ren Schmidt (sos@login.dkuug.dk) 5 * which is Copyright 1990,91 by Thomas Roell, Dinkelscherben, Germany. 6 * and from xf86KbdCODrv.c by Holger Veit 7 */ 8 9#ifdef HAVE_CONFIG_H 10#include "config.h" 11#endif 12 13#include <xorg-server.h> 14#include <X11/X.h> 15#include <X11/Xmd.h> 16#include "input.h" 17#include "scrnintstr.h" 18 19#include "compiler.h" 20 21#include "xf86.h" 22#include "xf86Priv.h" 23#include "xf86_OSlib.h" 24#include "xf86Xinput.h" 25#include "xf86OSKbd.h" 26#include "atKeynames.h" 27#include "xf86Keymap.h" 28#include "bsd_kbd.h" 29 30#if (defined(SYSCONS_SUPPORT) || defined(PCVT_SUPPORT)) && defined(GIO_KEYMAP) 31#define KD_GET_ENTRY(i,n) \ 32 eascii_to_x[((keymap.key[i].spcl << (n+1)) & 0x100) + keymap.key[i].map[n]] 33 34static unsigned char remap[NUM_KEYCODES] = { 35 0, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, /* 0x00 - 0x07 */ 36 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, /* 0x08 - 0x0f */ 37 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, /* 0x10 - 0x17 */ 38 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, /* 0x18 - 0x1f */ 39 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, /* 0x20 - 0x27 */ 40 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, /* 0x28 - 0x2f */ 41 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0, /* 0x30 - 0x37 */ 42 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, /* 0x38 - 0x3f */ 43 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0, /* 0x40 - 0x47 */ 44 0, 0, 0, 0, 0, 0, 0, 0, /* 0x48 - 0x4f */ 45 0, 0, 0, 0, 0, 0, 0x56, 0x57, /* 0x50 - 0x57 */ 46 0x58, 0, 0, 0, 0, 0, 0, 0, /* 0x58 - 0x5f */ 47 0, 0, 0, 0, 0, 0, 0, 0, /* 0x60 - 0x67 */ 48 0, 0, 0, 0, 0, 0, 0, 0, /* 0x68 - 0x6f */ 49 0, 0, 0x69, 0x65, 0, 0, 0, 0, /* 0x70 - 0x77 */ 50 0, 0, 0, 0, 0, 0, 0, 0, /* 0x78 - 0x7f */ 51}; 52 53/* This table assumes the ibm code page 437 coding for characters 54 * > 0x80. They are returned in this form by PCVT */ 55static KeySym eascii_to_x[512] = { 56 NoSymbol, NoSymbol, NoSymbol, NoSymbol, 57 NoSymbol, NoSymbol, NoSymbol, NoSymbol, 58 XK_BackSpace, XK_Tab, XK_Linefeed, NoSymbol, 59 NoSymbol, XK_Return, NoSymbol, NoSymbol, 60 NoSymbol, NoSymbol, NoSymbol, NoSymbol, 61 NoSymbol, NoSymbol, NoSymbol, NoSymbol, 62 NoSymbol, NoSymbol, NoSymbol, XK_Escape, 63 NoSymbol, NoSymbol, NoSymbol, NoSymbol, 64 XK_space, XK_exclam, XK_quotedbl, XK_numbersign, 65 XK_dollar, XK_percent, XK_ampersand, XK_apostrophe, 66 XK_parenleft, XK_parenright, XK_asterisk, XK_plus, 67 XK_comma, XK_minus, XK_period, XK_slash, 68 XK_0, XK_1, XK_2, XK_3, 69 XK_4, XK_5, XK_6, XK_7, 70 XK_8, XK_9, XK_colon, XK_semicolon, 71 XK_less, XK_equal, XK_greater, XK_question, 72 XK_at, XK_A, XK_B, XK_C, 73 XK_D, XK_E, XK_F, XK_G, 74 XK_H, XK_I, XK_J, XK_K, 75 XK_L, XK_M, XK_N, XK_O, 76 XK_P, XK_Q, XK_R, XK_S, 77 XK_T, XK_U, XK_V, XK_W, 78 XK_X, XK_Y, XK_Z, XK_bracketleft, 79 XK_backslash, XK_bracketright,XK_asciicircum, XK_underscore, 80 XK_grave, XK_a, XK_b, XK_c, 81 XK_d, XK_e, XK_f, XK_g, 82 XK_h, XK_i, XK_j, XK_k, 83 XK_l, XK_m, XK_n, XK_o, 84 XK_p, XK_q, XK_r, XK_s, 85 XK_t, XK_u, XK_v, XK_w, 86 XK_x, XK_y, XK_z, XK_braceleft, 87 XK_bar, XK_braceright, XK_asciitilde, XK_Delete, 88 XK_Ccedilla, XK_udiaeresis, XK_eacute, XK_acircumflex, 89 XK_adiaeresis, XK_agrave, XK_aring, XK_ccedilla, 90 XK_ecircumflex, XK_ediaeresis, XK_egrave, XK_idiaeresis, 91 XK_icircumflex, XK_igrave, XK_Adiaeresis, XK_Aring, 92 XK_Eacute, XK_ae, XK_AE, XK_ocircumflex, 93 XK_odiaeresis, XK_ograve, XK_ucircumflex, XK_ugrave, 94 XK_ydiaeresis, XK_Odiaeresis, XK_Udiaeresis, XK_cent, 95 XK_sterling, XK_yen, XK_paragraph, XK_section, 96 XK_aacute, XK_iacute, XK_oacute, XK_uacute, 97 XK_ntilde, XK_Ntilde, XK_ordfeminine, XK_masculine, 98 XK_questiondown,XK_hyphen, XK_notsign, XK_onehalf, 99 XK_onequarter, XK_exclamdown, XK_guillemotleft,XK_guillemotright, 100 NoSymbol, NoSymbol, NoSymbol, NoSymbol, 101 NoSymbol, NoSymbol, NoSymbol, NoSymbol, 102 NoSymbol, NoSymbol, NoSymbol, NoSymbol, 103 NoSymbol, NoSymbol, NoSymbol, NoSymbol, 104 NoSymbol, NoSymbol, NoSymbol, NoSymbol, 105 NoSymbol, NoSymbol, NoSymbol, NoSymbol, 106 NoSymbol, NoSymbol, NoSymbol, NoSymbol, 107 NoSymbol, NoSymbol, NoSymbol, NoSymbol, 108 NoSymbol, NoSymbol, NoSymbol, NoSymbol, 109 NoSymbol, NoSymbol, NoSymbol, NoSymbol, 110 NoSymbol, NoSymbol, NoSymbol, NoSymbol, 111 NoSymbol, NoSymbol, NoSymbol, NoSymbol, 112 XK_Greek_alpha, XK_ssharp, XK_Greek_GAMMA, XK_Greek_pi, 113 XK_Greek_SIGMA, XK_Greek_sigma, XK_mu, XK_Greek_tau, 114 XK_Greek_PHI, XK_Greek_THETA, XK_Greek_OMEGA, XK_Greek_delta, 115 XK_infinity, XK_Ooblique, XK_Greek_epsilon, XK_intersection, 116 XK_identical, XK_plusminus, XK_greaterthanequal, XK_lessthanequal, 117 XK_topintegral, XK_botintegral, XK_division, XK_similarequal, 118 XK_degree, NoSymbol, NoSymbol, XK_radical, 119 XK_Greek_eta, XK_twosuperior, XK_periodcentered, NoSymbol, 120 121 /* 122 * special marked entries (256 + x) 123 */ 124 125 /* This has been checked against what syscons actually does */ 126 NoSymbol, NoSymbol, XK_Shift_L, XK_Shift_R, 127 XK_Caps_Lock, XK_Num_Lock, XK_Scroll_Lock, XK_Alt_L, 128 XK_ISO_Left_Tab,XK_Control_L, NoSymbol, NoSymbol, 129 NoSymbol, NoSymbol, NoSymbol, NoSymbol, 130 NoSymbol, NoSymbol, NoSymbol, NoSymbol, 131 NoSymbol, NoSymbol, NoSymbol, NoSymbol, 132 NoSymbol, NoSymbol, NoSymbol, XK_F1, 133 XK_F2, XK_F3, XK_F4, XK_F5, 134 XK_F6, XK_F7, XK_F8, XK_F9, 135 XK_F10, XK_F11, XK_F12, NoSymbol, 136 NoSymbol, NoSymbol, NoSymbol, NoSymbol, 137 NoSymbol, NoSymbol, NoSymbol, NoSymbol, 138 NoSymbol, NoSymbol, NoSymbol, NoSymbol, 139 NoSymbol, NoSymbol, NoSymbol, NoSymbol, 140 NoSymbol, NoSymbol, NoSymbol, NoSymbol, 141 NoSymbol, NoSymbol, NoSymbol, NoSymbol, 142 NoSymbol, NoSymbol, NoSymbol, NoSymbol, 143 NoSymbol, NoSymbol, NoSymbol, NoSymbol, 144 NoSymbol, NoSymbol, NoSymbol, NoSymbol, 145 NoSymbol, NoSymbol, NoSymbol, NoSymbol, 146 NoSymbol, NoSymbol, NoSymbol, NoSymbol, 147 NoSymbol, NoSymbol, NoSymbol, NoSymbol, 148 NoSymbol, NoSymbol, NoSymbol, NoSymbol, 149 NoSymbol, NoSymbol, NoSymbol, NoSymbol, 150 NoSymbol, NoSymbol, NoSymbol, NoSymbol, 151 NoSymbol, NoSymbol, NoSymbol, NoSymbol, 152 NoSymbol, NoSymbol, NoSymbol, NoSymbol, 153 NoSymbol, NoSymbol, NoSymbol, NoSymbol, 154 NoSymbol, NoSymbol, NoSymbol, NoSymbol, 155 NoSymbol, NoSymbol, NoSymbol, NoSymbol, 156 NoSymbol, NoSymbol, NoSymbol, NoSymbol, 157 NoSymbol, NoSymbol, NoSymbol, NoSymbol, 158 XK_Control_R, XK_Alt_R, NoSymbol, NoSymbol, 159 NoSymbol, NoSymbol, NoSymbol, NoSymbol, 160 NoSymbol, NoSymbol, NoSymbol, NoSymbol, 161 NoSymbol, NoSymbol, NoSymbol, NoSymbol, 162 NoSymbol, NoSymbol, NoSymbol, NoSymbol, 163 NoSymbol, NoSymbol, NoSymbol, NoSymbol, 164 NoSymbol, NoSymbol, NoSymbol, NoSymbol, 165 NoSymbol, NoSymbol, NoSymbol, NoSymbol, 166 NoSymbol, NoSymbol, NoSymbol, NoSymbol, 167 NoSymbol, NoSymbol, NoSymbol, NoSymbol, 168 NoSymbol, NoSymbol, NoSymbol, NoSymbol, 169 NoSymbol, NoSymbol, NoSymbol, NoSymbol, 170 NoSymbol, NoSymbol, NoSymbol, NoSymbol, 171 NoSymbol, NoSymbol, NoSymbol, NoSymbol, 172 NoSymbol, NoSymbol, NoSymbol, NoSymbol, 173 NoSymbol, NoSymbol, NoSymbol, NoSymbol, 174 NoSymbol, NoSymbol, NoSymbol, NoSymbol, 175 NoSymbol, NoSymbol, NoSymbol, NoSymbol, 176 NoSymbol, NoSymbol, NoSymbol, NoSymbol, 177 NoSymbol, NoSymbol, NoSymbol, NoSymbol, 178 NoSymbol, NoSymbol, NoSymbol, NoSymbol, 179 NoSymbol, NoSymbol, NoSymbol, NoSymbol, 180 NoSymbol, NoSymbol, NoSymbol, NoSymbol, 181 NoSymbol, NoSymbol, NoSymbol, NoSymbol, 182 NoSymbol, NoSymbol, NoSymbol, NoSymbol, 183 NoSymbol, NoSymbol, NoSymbol, NoSymbol, 184 NoSymbol, NoSymbol, NoSymbol, NoSymbol, 185 NoSymbol, NoSymbol, NoSymbol, NoSymbol, 186 NoSymbol, NoSymbol, NoSymbol, NoSymbol, 187 NoSymbol, NoSymbol, NoSymbol, NoSymbol, 188 NoSymbol, NoSymbol, NoSymbol, NoSymbol, 189 NoSymbol, NoSymbol, NoSymbol, NoSymbol 190}; 191 192#ifdef SYSCONS_SUPPORT 193static 194unsigned char sysconsCODEMap[] = { 195 KEY_KP_Enter, KEY_RCtrl, KEY_KP_Divide, KEY_Print, 196 KEY_AltLang, KEY_KP_7, KEY_KP_8, KEY_KP_9, 197 KEY_KP_4, KEY_KP_6, KEY_KP_1, KEY_KP_2, 198 KEY_KP_3, KEY_KP_0, KEY_KP_Decimal, KEY_Pause, 199 KEY_LMeta, KEY_RMeta, KEY_Menu, KEY_Break 200}; 201static 202TransMapRec sysconsCODE = { 203 0x59, 204 0x6d, 205 sysconsCODEMap 206}; 207#endif 208#endif /* SYSCONS_SUPPORT || PCVT_SUPPORT */ 209 210#ifdef WSCONS_SUPPORT 211 212static CARD8 wsUsbMap[] = { 213 /* 0 */ KEY_NOTUSED, 214 /* 1 */ KEY_NOTUSED, 215 /* 2 */ KEY_NOTUSED, 216 /* 3 */ KEY_NOTUSED, 217 /* 4 */ KEY_A, 218 /* 5 */ KEY_B, 219 /* 6 */ KEY_C, 220 /* 7 */ KEY_D, 221 /* 8 */ KEY_E, 222 /* 9 */ KEY_F, 223 /* 10 */ KEY_G, 224 /* 11 */ KEY_H, 225 /* 12 */ KEY_I, 226 /* 13 */ KEY_J, 227 /* 14 */ KEY_K, 228 /* 15 */ KEY_L, 229 /* 16 */ KEY_M, 230 /* 17 */ KEY_N, 231 /* 18 */ KEY_O, 232 /* 19 */ KEY_P, 233 /* 20 */ KEY_Q, 234 /* 21 */ KEY_R, 235 /* 22 */ KEY_S, 236 /* 23 */ KEY_T, 237 /* 24 */ KEY_U, 238 /* 25 */ KEY_V, 239 /* 26 */ KEY_W, 240 /* 27 */ KEY_X, 241 /* 28 */ KEY_Y, 242 /* 29 */ KEY_Z, 243 /* 30 */ KEY_1, /* 1 !*/ 244 /* 31 */ KEY_2, /* 2 @ */ 245 /* 32 */ KEY_3, /* 3 # */ 246 /* 33 */ KEY_4, /* 4 $ */ 247 /* 34 */ KEY_5, /* 5 % */ 248 /* 35 */ KEY_6, /* 6 ^ */ 249 /* 36 */ KEY_7, /* 7 & */ 250 /* 37 */ KEY_8, /* 8 * */ 251 /* 38 */ KEY_9, /* 9 ( */ 252 /* 39 */ KEY_0, /* 0 ) */ 253 /* 40 */ KEY_Enter, /* Return */ 254 /* 41 */ KEY_Escape, /* Escape */ 255 /* 42 */ KEY_BackSpace, /* Backspace Delete */ 256 /* 43 */ KEY_Tab, /* Tab */ 257 /* 44 */ KEY_Space, /* Space */ 258 /* 45 */ KEY_Minus, /* - _ */ 259 /* 46 */ KEY_Equal, /* = + */ 260 /* 47 */ KEY_LBrace, /* [ { */ 261 /* 48 */ KEY_RBrace, /* ] } */ 262 /* 49 */ KEY_BSlash, /* \ | */ 263 /* this was KEY_BSlash2 which seems bogus */ 264 /* 50 */ KEY_BSlash, /* \ _ # ~ on some keyboards */ 265 /* 51 */ KEY_SemiColon, /* ; : */ 266 /* 52 */ KEY_Quote, /* ' " */ 267 /* 53 */ KEY_Tilde, /* ` ~ */ 268 /* 54 */ KEY_Comma, /* , < */ 269 /* 55 */ KEY_Period, /* . > */ 270 /* 56 */ KEY_Slash, /* / ? */ 271 /* 57 */ KEY_CapsLock, /* Caps Lock */ 272 /* 58 */ KEY_F1, /* F1 */ 273 /* 59 */ KEY_F2, /* F2 */ 274 /* 60 */ KEY_F3, /* F3 */ 275 /* 61 */ KEY_F4, /* F4 */ 276 /* 62 */ KEY_F5, /* F5 */ 277 /* 63 */ KEY_F6, /* F6 */ 278 /* 64 */ KEY_F7, /* F7 */ 279 /* 65 */ KEY_F8, /* F8 */ 280 /* 66 */ KEY_F9, /* F9 */ 281 /* 67 */ KEY_F10, /* F10 */ 282 /* 68 */ KEY_F11, /* F11 */ 283 /* 69 */ KEY_F12, /* F12 */ 284 /* 70 */ KEY_Print, /* PrintScrn SysReq */ 285 /* 71 */ KEY_ScrollLock, /* Scroll Lock */ 286 /* 72 */ KEY_Pause, /* Pause Break */ 287 /* 73 */ KEY_Insert, /* Insert XXX Help on some Mac Keyboards */ 288 /* 74 */ KEY_Home, /* Home */ 289 /* 75 */ KEY_PgUp, /* Page Up */ 290 /* 76 */ KEY_Delete, /* Delete */ 291 /* 77 */ KEY_End, /* End */ 292 /* 78 */ KEY_PgDown, /* Page Down */ 293 /* 79 */ KEY_Right, /* Right Arrow */ 294 /* 80 */ KEY_Left, /* Left Arrow */ 295 /* 81 */ KEY_Down, /* Down Arrow */ 296 /* 82 */ KEY_Up, /* Up Arrow */ 297 /* 83 */ KEY_NumLock, /* Num Lock */ 298 /* 84 */ KEY_KP_Divide, /* Keypad / */ 299 /* 85 */ KEY_KP_Multiply, /* Keypad * */ 300 /* 86 */ KEY_KP_Minus, /* Keypad - */ 301 /* 87 */ KEY_KP_Plus, /* Keypad + */ 302 /* 88 */ KEY_KP_Enter, /* Keypad Enter */ 303 /* 89 */ KEY_KP_1, /* Keypad 1 End */ 304 /* 90 */ KEY_KP_2, /* Keypad 2 Down */ 305 /* 91 */ KEY_KP_3, /* Keypad 3 Pg Down */ 306 /* 92 */ KEY_KP_4, /* Keypad 4 Left */ 307 /* 93 */ KEY_KP_5, /* Keypad 5 */ 308 /* 94 */ KEY_KP_6, /* Keypad 6 */ 309 /* 95 */ KEY_KP_7, /* Keypad 7 Home */ 310 /* 96 */ KEY_KP_8, /* Keypad 8 Up */ 311 /* 97 */ KEY_KP_9, /* KEypad 9 Pg Up */ 312 /* 98 */ KEY_KP_0, /* Keypad 0 Ins */ 313 /* 99 */ KEY_KP_Decimal, /* Keypad . Del */ 314 /* 100 */ KEY_Less, /* < > on some keyboards */ 315 /* 101 */ KEY_Menu, /* Menu */ 316 /* 102 */ KEY_Power, /* sleep key on Sun USB */ 317 /* 103 */ KEY_KP_Equal, /* Keypad = on Mac keyboards */ 318 /* 104 */ KEY_F13, 319 /* 105 */ KEY_F14, 320 /* 106 */ KEY_F15, 321 /* 107 */ KEY_F16, 322 /* 108 */ KEY_NOTUSED, 323 /* 109 */ KEY_Power, 324 /* 110 */ KEY_NOTUSED, 325 /* 111 */ KEY_NOTUSED, 326 /* 112 */ KEY_NOTUSED, 327 /* 113 */ KEY_NOTUSED, 328 /* 114 */ KEY_NOTUSED, 329 /* 115 */ KEY_NOTUSED, 330 /* 116 */ KEY_L7, 331 /* 117 */ KEY_Help, 332 /* 118 */ KEY_L3, 333 /* 119 */ KEY_L5, 334 /* 120 */ KEY_L1, 335 /* 121 */ KEY_L2, 336 /* 122 */ KEY_L4, 337 /* 123 */ KEY_L10, 338 /* 124 */ KEY_L6, 339 /* 125 */ KEY_L8, 340 /* 126 */ KEY_L9, 341 /* 127 */ KEY_Mute, 342 /* 128 */ KEY_AudioRaise, 343 /* 129 */ KEY_AudioLower, 344 /* 130 */ KEY_NOTUSED, 345 /* 131 */ KEY_NOTUSED, 346 /* 132 */ KEY_NOTUSED, 347 /* 133 */ KEY_NOTUSED, 348 /* 134 */ KEY_NOTUSED, 349 /* 135 */ KEY_NOTUSED, 350 /* 136 */ KEY_NOTUSED, 351 /* 137 */ KEY_NOTUSED, 352 /* 138 */ KEY_NOTUSED, 353 /* 139 */ KEY_NOTUSED, 354 /* 140 */ KEY_NOTUSED, 355 /* 141 */ KEY_NOTUSED, 356 /* 142 */ KEY_NOTUSED, 357 /* 143 */ KEY_NOTUSED, 358 /* 144 */ KEY_NOTUSED, 359 /* 145 */ KEY_NOTUSED, 360 /* 146 */ KEY_NOTUSED, 361 /* 147 */ KEY_NOTUSED, 362 /* 148 */ KEY_NOTUSED, 363 /* 149 */ KEY_NOTUSED, 364 /* 150 */ KEY_NOTUSED, 365 /* 151 */ KEY_NOTUSED, 366 /* 152 */ KEY_NOTUSED, 367 /* 153 */ KEY_NOTUSED, 368 /* 154 */ KEY_NOTUSED, 369 /* 155 */ KEY_NOTUSED, 370 /* 156 */ KEY_NOTUSED, 371 /* 157 */ KEY_NOTUSED, 372 /* 158 */ KEY_NOTUSED, 373 /* 159 */ KEY_NOTUSED, 374 /* 160 */ KEY_NOTUSED, 375 /* 161 */ KEY_NOTUSED, 376 /* 162 */ KEY_NOTUSED, 377 /* 163 */ KEY_NOTUSED, 378 /* 164 */ KEY_NOTUSED, 379 /* 165 */ KEY_NOTUSED, 380 /* 166 */ KEY_NOTUSED, 381 /* 167 */ KEY_NOTUSED, 382 /* 168 */ KEY_NOTUSED, 383 /* 169 */ KEY_NOTUSED, 384 /* 170 */ KEY_NOTUSED, 385 /* 171 */ KEY_NOTUSED, 386 /* 172 */ KEY_NOTUSED, 387 /* 173 */ KEY_NOTUSED, 388 /* 174 */ KEY_NOTUSED, 389 /* 175 */ KEY_NOTUSED, 390 /* 176 */ KEY_NOTUSED, 391 /* 177 */ KEY_NOTUSED, 392 /* 178 */ KEY_NOTUSED, 393 /* 179 */ KEY_NOTUSED, 394 /* 180 */ KEY_NOTUSED, 395 /* 181 */ KEY_NOTUSED, 396 /* 182 */ KEY_NOTUSED, 397 /* 183 */ KEY_NOTUSED, 398 /* 184 */ KEY_NOTUSED, 399 /* 185 */ KEY_NOTUSED, 400 /* 186 */ KEY_NOTUSED, 401 /* 187 */ KEY_NOTUSED, 402 /* 188 */ KEY_NOTUSED, 403 /* 189 */ KEY_NOTUSED, 404 /* 190 */ KEY_NOTUSED, 405 /* 191 */ KEY_NOTUSED, 406 /* 192 */ KEY_NOTUSED, 407 /* 193 */ KEY_NOTUSED, 408 /* 194 */ KEY_NOTUSED, 409 /* 195 */ KEY_NOTUSED, 410 /* 196 */ KEY_NOTUSED, 411 /* 197 */ KEY_NOTUSED, 412 /* 198 */ KEY_NOTUSED, 413 /* 199 */ KEY_NOTUSED, 414 /* 200 */ KEY_NOTUSED, 415 /* 201 */ KEY_NOTUSED, 416 /* 202 */ KEY_NOTUSED, 417 /* 203 */ KEY_NOTUSED, 418 /* 204 */ KEY_NOTUSED, 419 /* 205 */ KEY_NOTUSED, 420 /* 206 */ KEY_NOTUSED, 421 /* 207 */ KEY_NOTUSED, 422 /* 208 */ KEY_NOTUSED, 423 /* 209 */ KEY_NOTUSED, 424 /* 210 */ KEY_NOTUSED, 425 /* 211 */ KEY_NOTUSED, 426 /* 212 */ KEY_NOTUSED, 427 /* 213 */ KEY_NOTUSED, 428 /* 214 */ KEY_NOTUSED, 429 /* 215 */ KEY_NOTUSED, 430 /* 216 */ KEY_NOTUSED, 431 /* 217 */ KEY_NOTUSED, 432 /* 218 */ KEY_NOTUSED, 433 /* 219 */ KEY_NOTUSED, 434 /* 220 */ KEY_NOTUSED, 435 /* 221 */ KEY_NOTUSED, 436 /* 222 */ KEY_NOTUSED, 437 /* 223 */ KEY_NOTUSED, 438 /* 224 */ KEY_LCtrl, /* Left Control */ 439 /* 225 */ KEY_ShiftL, /* Left Shift */ 440 /* 226 */ KEY_Alt, /* Left Alt */ 441 /* 227 */ KEY_LMeta, /* Left Meta */ 442 /* 228 */ KEY_RCtrl, /* Right Control */ 443 /* 229 */ KEY_ShiftR, /* Right Shift */ 444 /* 230 */ KEY_AltLang, /* Right Alt, AKA AltGr */ 445 /* 231 */ KEY_LMeta, /* Right Meta XXX */ 446}; 447#define WS_USB_MAP_SIZE (sizeof(wsUsbMap)/sizeof(unsigned char)) 448 449static 450TransMapRec wsUsb = { 451 0, 452 WS_USB_MAP_SIZE, 453 wsUsbMap 454}; 455 456static CARD8 wsXtMap[] = { 457 /* 0 */ KEY_NOTUSED, 458 /* 1 */ KEY_Escape, 459 /* 2 */ KEY_1, 460 /* 3 */ KEY_2, 461 /* 4 */ KEY_3, 462 /* 5 */ KEY_4, 463 /* 6 */ KEY_5, 464 /* 7 */ KEY_6, 465 /* 8 */ KEY_7, 466 /* 9 */ KEY_8, 467 /* 10 */ KEY_9, 468 /* 11 */ KEY_0, 469 /* 12 */ KEY_Minus, 470 /* 13 */ KEY_Equal, 471 /* 14 */ KEY_BackSpace, 472 /* 15 */ KEY_Tab, 473 /* 16 */ KEY_Q, 474 /* 17 */ KEY_W, 475 /* 18 */ KEY_E, 476 /* 19 */ KEY_R, 477 /* 20 */ KEY_T, 478 /* 21 */ KEY_Y, 479 /* 22 */ KEY_U, 480 /* 23 */ KEY_I, 481 /* 24 */ KEY_O, 482 /* 25 */ KEY_P, 483 /* 26 */ KEY_LBrace, 484 /* 27 */ KEY_RBrace, 485 /* 28 */ KEY_Enter, 486 /* 29 */ KEY_LCtrl, 487 /* 30 */ KEY_A, 488 /* 31 */ KEY_S, 489 /* 32 */ KEY_D, 490 /* 33 */ KEY_F, 491 /* 34 */ KEY_G, 492 /* 35 */ KEY_H, 493 /* 36 */ KEY_J, 494 /* 37 */ KEY_K, 495 /* 38 */ KEY_L, 496 /* 39 */ KEY_SemiColon, 497 /* 40 */ KEY_Quote, 498 /* 41 */ KEY_Tilde, 499 /* 42 */ KEY_ShiftL, 500 /* 43 */ KEY_BSlash, 501 /* 44 */ KEY_Z, 502 /* 45 */ KEY_X, 503 /* 46 */ KEY_C, 504 /* 47 */ KEY_V, 505 /* 48 */ KEY_B, 506 /* 49 */ KEY_N, 507 /* 50 */ KEY_M, 508 /* 51 */ KEY_Comma, 509 /* 52 */ KEY_Period, 510 /* 53 */ KEY_Slash, 511 /* 54 */ KEY_ShiftR, 512 /* 55 */ KEY_KP_Multiply, 513 /* 56 */ KEY_Alt, 514 /* 57 */ KEY_Space, 515 /* 58 */ KEY_CapsLock, 516 /* 59 */ KEY_F1, 517 /* 60 */ KEY_F2, 518 /* 61 */ KEY_F3, 519 /* 62 */ KEY_F4, 520 /* 63 */ KEY_F5, 521 /* 64 */ KEY_F6, 522 /* 65 */ KEY_F7, 523 /* 66 */ KEY_F8, 524 /* 67 */ KEY_F9, 525 /* 68 */ KEY_F10, 526 /* 69 */ KEY_NumLock, 527 /* 70 */ KEY_ScrollLock, 528 /* 71 */ KEY_KP_7, 529 /* 72 */ KEY_KP_8, 530 /* 73 */ KEY_KP_9, 531 /* 74 */ KEY_KP_Minus, 532 /* 75 */ KEY_KP_4, 533 /* 76 */ KEY_KP_5, 534 /* 77 */ KEY_KP_6, 535 /* 78 */ KEY_KP_Plus, 536 /* 79 */ KEY_KP_1, 537 /* 80 */ KEY_KP_2, 538 /* 81 */ KEY_KP_3, 539 /* 82 */ KEY_KP_0, 540 /* 83 */ KEY_KP_Decimal, 541 /* 84 */ KEY_NOTUSED, 542 /* 85 */ KEY_NOTUSED, 543 /* 86 */ KEY_Less, /* backslash on uk, < on german */ 544 /* 87 */ KEY_F11, 545 /* 88 */ KEY_F12, 546 /* 89 */ KEY_NOTUSED, 547 /* 90 */ KEY_NOTUSED, 548 /* 91 */ KEY_NOTUSED, 549 /* 92 */ KEY_NOTUSED, 550 /* 93 */ KEY_NOTUSED, 551 /* 94 */ KEY_NOTUSED, 552 /* 95 */ KEY_NOTUSED, 553 /* 96 */ KEY_NOTUSED, 554 /* 97 */ KEY_NOTUSED, 555 /* 98 */ KEY_NOTUSED, 556 /* 99 */ KEY_NOTUSED, 557 /* 100 */ KEY_NOTUSED, 558 /* 101 */ KEY_NOTUSED, 559 /* 102 */ KEY_NOTUSED, 560 /* 103 */ KEY_NOTUSED, 561 /* 104 */ KEY_NOTUSED, 562 /* 105 */ KEY_NOTUSED, 563 /* 106 */ KEY_NOTUSED, 564 /* 107 */ KEY_NOTUSED, 565 /* 108 */ KEY_NOTUSED, 566 /* 109 */ KEY_NOTUSED, 567 /* 110 */ KEY_NOTUSED, 568 /* 111 */ KEY_NOTUSED, 569 /* 112 */ KEY_NOTUSED, 570 /* 113 */ KEY_NOTUSED, 571 /* 114 */ KEY_NOTUSED, 572 /* 115 */ KEY_NOTUSED, 573 /* 116 */ KEY_NOTUSED, 574 /* 117 */ KEY_NOTUSED, 575 /* 118 */ KEY_NOTUSED, 576 /* 119 */ KEY_NOTUSED, 577 /* 120 */ KEY_NOTUSED, 578 /* 121 */ KEY_NOTUSED, 579 /* 122 */ KEY_NOTUSED, 580 /* 123 */ KEY_NOTUSED, 581 /* 124 */ KEY_NOTUSED, 582 /* 125 */ KEY_NOTUSED, 583 /* 126 */ KEY_NOTUSED, 584 /* 127 */ KEY_Pause, 585 /* 128 */ KEY_NOTUSED, 586 /* 129 */ KEY_NOTUSED, 587 /* 130 */ KEY_NOTUSED, 588 /* 131 */ KEY_NOTUSED, 589 /* 132 */ KEY_NOTUSED, 590 /* 133 */ KEY_NOTUSED, 591 /* 134 */ KEY_NOTUSED, 592 /* 135 */ KEY_NOTUSED, 593 /* 136 */ KEY_NOTUSED, 594 /* 137 */ KEY_NOTUSED, 595 /* 138 */ KEY_NOTUSED, 596 /* 139 */ KEY_NOTUSED, 597 /* 140 */ KEY_NOTUSED, 598 /* 141 */ KEY_NOTUSED, 599 /* 142 */ KEY_NOTUSED, 600 /* 143 */ KEY_NOTUSED, 601 /* 144 */ KEY_NOTUSED, 602 /* 145 */ KEY_NOTUSED, 603 /* 146 */ KEY_NOTUSED, 604 /* 147 */ KEY_NOTUSED, 605 /* 148 */ KEY_NOTUSED, 606 /* 149 */ KEY_NOTUSED, 607 /* 150 */ KEY_NOTUSED, 608 /* 151 */ KEY_NOTUSED, 609 /* 152 */ KEY_NOTUSED, 610 /* 153 */ KEY_NOTUSED, 611 /* 154 */ KEY_NOTUSED, 612 /* 155 */ KEY_NOTUSED, 613 /* 156 */ KEY_KP_Enter, 614 /* 157 */ KEY_RCtrl, 615 /* 158 */ KEY_NOTUSED, 616 /* 159 */ KEY_NOTUSED, 617 /* 160 */ KEY_Mute, 618 /* 161 */ KEY_NOTUSED, 619 /* 162 */ KEY_NOTUSED, 620 /* 163 */ KEY_NOTUSED, 621 /* 164 */ KEY_NOTUSED, 622 /* 165 */ KEY_NOTUSED, 623 /* 166 */ KEY_NOTUSED, 624 /* 167 */ KEY_NOTUSED, 625 /* 168 */ KEY_NOTUSED, 626 /* 169 */ KEY_NOTUSED, 627 /* 170 */ KEY_Print, 628 /* 171 */ KEY_NOTUSED, 629 /* 172 */ KEY_NOTUSED, 630 /* 173 */ KEY_NOTUSED, 631 /* 174 */ KEY_AudioLower, 632 /* 175 */ KEY_AudioRaise, 633 /* 176 */ KEY_NOTUSED, 634 /* 177 */ KEY_NOTUSED, 635 /* 178 */ KEY_NOTUSED, 636 /* 179 */ KEY_NOTUSED, 637 /* 180 */ KEY_NOTUSED, 638 /* 181 */ KEY_KP_Divide, 639 /* 182 */ KEY_NOTUSED, 640 /* 183 */ KEY_Print, 641 /* 184 */ KEY_AltLang, 642 /* 185 */ KEY_NOTUSED, 643 /* 186 */ KEY_NOTUSED, 644 /* 187 */ KEY_NOTUSED, 645 /* 188 */ KEY_NOTUSED, 646 /* 189 */ KEY_NOTUSED, 647 /* 190 */ KEY_NOTUSED, 648 /* 191 */ KEY_NOTUSED, 649 /* 192 */ KEY_NOTUSED, 650 /* 193 */ KEY_NOTUSED, 651 /* 194 */ KEY_NOTUSED, 652 /* 195 */ KEY_NOTUSED, 653 /* 196 */ KEY_NOTUSED, 654 /* 197 */ KEY_NOTUSED, 655 /* 198 */ KEY_NOTUSED, 656 /* 199 */ KEY_Home, 657 /* 200 */ KEY_Up, 658 /* 201 */ KEY_PgUp, 659 /* 202 */ KEY_NOTUSED, 660 /* 203 */ KEY_Left, 661 /* 204 */ KEY_NOTUSED, 662 /* 205 */ KEY_Right, 663 /* 206 */ KEY_NOTUSED, 664 /* 207 */ KEY_End, 665 /* 208 */ KEY_Down, 666 /* 209 */ KEY_PgDown, 667 /* 210 */ KEY_Insert, 668 /* 211 */ KEY_Delete, 669 /* 212 */ KEY_NOTUSED, 670 /* 213 */ KEY_NOTUSED, 671 /* 214 */ KEY_NOTUSED, 672 /* 215 */ KEY_NOTUSED, 673 /* 216 */ KEY_NOTUSED, 674 /* 217 */ KEY_NOTUSED, 675 /* 218 */ KEY_NOTUSED, 676 /* 219 */ KEY_LMeta, 677 /* 220 */ KEY_RMeta, 678 /* 221 */ KEY_Menu, 679}; 680#define WS_XT_MAP_SIZE (sizeof(wsXtMap)/sizeof(unsigned char)) 681 682static 683TransMapRec wsXt = { 684 0, 685 WS_XT_MAP_SIZE, 686 wsXtMap 687}; 688 689/* Map for adb keyboards */ 690static CARD8 wsAdbMap[] = { 691 /* 0 */ KEY_A, 692 /* 1 */ KEY_S, 693 /* 2 */ KEY_D, 694 /* 3 */ KEY_F, 695 /* 4 */ KEY_H, 696 /* 5 */ KEY_G, 697 /* 6 */ KEY_Z, 698 /* 7 */ KEY_X, 699 /* 8 */ KEY_C, 700 /* 9 */ KEY_V, 701 /* 10 */ KEY_UNKNOWN, /* @ # on french keyboards */ 702 /* 11 */ KEY_B, 703 /* 12 */ KEY_Q, 704 /* 13 */ KEY_W, 705 /* 14 */ KEY_E, 706 /* 15 */ KEY_R, 707 /* 16 */ KEY_Y, 708 /* 17 */ KEY_T, 709 /* 18 */ KEY_1, 710 /* 19 */ KEY_2, 711 /* 20 */ KEY_3, 712 /* 21 */ KEY_4, 713 /* 22 */ KEY_6, 714 /* 23 */ KEY_5, 715 /* 24 */ KEY_Equal, 716 /* 25 */ KEY_9, 717 /* 26 */ KEY_7, 718 /* 27 */ KEY_Minus, 719 /* 28 */ KEY_8, 720 /* 29 */ KEY_0, 721 /* 30 */ KEY_RBrace, 722 /* 31 */ KEY_O, 723 /* 32 */ KEY_U, 724 /* 33 */ KEY_LBrace, 725 /* 34 */ KEY_I, 726 /* 35 */ KEY_P, 727 /* 36 */ KEY_Enter, 728 /* 37 */ KEY_L, 729 /* 38 */ KEY_J, 730 /* 39 */ KEY_Quote, 731 /* 40 */ KEY_K, 732 /* 41 */ KEY_SemiColon, 733 /* 42 */ KEY_BSlash, 734 /* 43 */ KEY_Comma, 735 /* 44 */ KEY_Slash, 736 /* 45 */ KEY_N, 737 /* 46 */ KEY_M, 738 /* 47 */ KEY_Period, 739 /* 48 */ KEY_Tab, 740 /* 49 */ KEY_Space, 741 /* 50 */ KEY_Tilde, 742 /* 51 */ KEY_BackSpace, 743 /* 52 */ KEY_AltLang, 744 /* 53 */ KEY_Escape, 745 /* 54 */ KEY_LCtrl, 746 /* 55 */ KEY_LMeta, 747 /* 56 */ KEY_ShiftL, 748 /* 57 */ KEY_CapsLock, 749 /* 58 */ KEY_Alt, 750 /* 59 */ KEY_Left, 751 /* 60 */ KEY_Right, 752 /* 61 */ KEY_Down, 753 /* 62 */ KEY_Up, 754 /* 63 */ KEY_UNKNOWN, /* Fn */ 755 /* 64 */ KEY_NOTUSED, 756 /* 65 */ KEY_KP_Decimal, 757 /* 66 */ KEY_NOTUSED, 758 /* 67 */ KEY_KP_Multiply, 759 /* 68 */ KEY_NOTUSED, 760 /* 69 */ KEY_KP_Plus, 761 /* 70 */ KEY_NOTUSED, 762 /* 71 */ KEY_NumLock, /* Clear */ 763 /* 72 */ KEY_NOTUSED, 764 /* 73 */ KEY_NOTUSED, 765 /* 74 */ KEY_NOTUSED, 766 /* 75 */ KEY_KP_Divide, 767 /* 76 */ KEY_KP_Enter, 768 /* 77 */ KEY_NOTUSED, 769 /* 78 */ KEY_KP_Minus, 770 /* 79 */ KEY_NOTUSED, 771 /* 80 */ KEY_NOTUSED, 772 /* 81 */ KEY_KP_Equal, /* Keypad = */ 773 /* 82 */ KEY_KP_0, 774 /* 83 */ KEY_KP_1, 775 /* 84 */ KEY_KP_2, 776 /* 85 */ KEY_KP_3, 777 /* 86 */ KEY_KP_4, 778 /* 87 */ KEY_KP_5, 779 /* 88 */ KEY_KP_6, 780 /* 89 */ KEY_KP_7, 781 /* 90 */ KEY_NOTUSED, 782 /* 91 */ KEY_KP_8, 783 /* 92 */ KEY_KP_9, 784 /* 93 */ KEY_NOTUSED, 785 /* 94 */ KEY_NOTUSED, 786 /* 95 */ KEY_KP_Decimal, /* Keypad , */ 787 /* 96 */ KEY_F5, 788 /* 97 */ KEY_F6, 789 /* 98 */ KEY_F7, 790 /* 99 */ KEY_F3, 791 /* 100 */ KEY_F8, 792 /* 101 */ KEY_F9, 793 /* 102 */ KEY_NOTUSED, 794 /* 103 */ KEY_F11, 795 /* 104 */ KEY_NOTUSED, 796 /* 105 */ KEY_Print, 797 /* 106 */ KEY_KP_Enter, 798 /* 107 */ KEY_ScrollLock, 799 /* 108 */ KEY_NOTUSED, 800 /* 109 */ KEY_F10, 801 /* 110 */ KEY_NOTUSED, 802 /* 111 */ KEY_F12, 803 /* 112 */ KEY_NOTUSED, 804 /* 113 */ KEY_Pause, 805 /* 114 */ KEY_Insert, 806 /* 115 */ KEY_Home, 807 /* 116 */ KEY_PgUp, 808 /* 117 */ KEY_Delete, 809 /* 118 */ KEY_F4, 810 /* 119 */ KEY_End, 811 /* 120 */ KEY_F2, 812 /* 121 */ KEY_PgDown, 813 /* 122 */ KEY_F1, 814 /* 123 */ KEY_NOTUSED, 815 /* 124 */ KEY_NOTUSED, 816 /* 125 */ KEY_NOTUSED, 817 /* 126 */ KEY_NOTUSED, 818 /* 127 */ KEY_Power 819}; 820#define WS_ADB_MAP_SIZE (sizeof(wsAdbMap)/sizeof(unsigned char)) 821 822static 823TransMapRec wsAdb = { 824 0, 825 WS_ADB_MAP_SIZE, 826 wsAdbMap 827}; 828 829/* Map for LK201 keyboards */ 830static CARD8 wsLk201Map[] = { 831 /* 0 */ KEY_F1, 832 /* 1 */ KEY_F2, 833 /* 2 */ KEY_F3, 834 /* 3 */ KEY_F4, 835 /* 4 */ KEY_F5, 836 /* 5 */ KEY_NOTUSED, 837 /* 6 */ KEY_NOTUSED, 838 /* 7 */ KEY_NOTUSED, 839 /* 8 */ KEY_NOTUSED, 840 /* 9 */ KEY_NOTUSED, 841 /* 10 */ KEY_NOTUSED, 842 /* 11 */ KEY_NOTUSED, 843 /* 12 */ KEY_NOTUSED, 844 /* 13 */ KEY_NOTUSED, 845 /* 14 */ KEY_F6, 846 /* 15 */ KEY_F7, 847 /* 16 */ KEY_F8, 848 /* 17 */ KEY_F9, 849 /* 18 */ KEY_F10, 850 /* 19 */ KEY_NOTUSED, 851 /* 20 */ KEY_NOTUSED, 852 /* 21 */ KEY_NOTUSED, 853 /* 22 */ KEY_NOTUSED, 854 /* 23 */ KEY_NOTUSED, 855 /* 24 */ KEY_NOTUSED, 856 /* 25 */ KEY_NOTUSED, 857 /* 26 */ KEY_NOTUSED, 858 /* 27 */ KEY_F11, 859 /* 28 */ KEY_F12, 860 /* 29 */ KEY_F13, 861 /* 30 */ KEY_F14, 862 /* 31 */ KEY_NOTUSED, 863 /* 32 */ KEY_NOTUSED, 864 /* 33 */ KEY_NOTUSED, 865 /* 34 */ KEY_NOTUSED, 866 /* 35 */ KEY_NOTUSED, 867 /* 36 */ KEY_NOTUSED, 868 /* 37 */ KEY_NOTUSED, 869 /* 38 */ KEY_Help, 870 /* 39 */ KEY_F16, /* Do */ 871 /* 40 */ KEY_NOTUSED, 872 /* 41 */ KEY_NOTUSED, 873 /* 42 */ KEY_F17, 874 /* 43 */ KEY_L8, /* F18 */ 875 /* 44 */ KEY_L9, /* F19 */ 876 /* 45 */ KEY_L10, /* F20 */ 877 /* 46 */ KEY_NOTUSED, 878 /* 47 */ KEY_NOTUSED, 879 /* 48 */ KEY_NOTUSED, 880 /* 49 */ KEY_NOTUSED, 881 /* 50 */ KEY_NOTUSED, 882 /* 51 */ KEY_NOTUSED, 883 /* 52 */ KEY_Home, /* Find */ 884 /* 53 */ KEY_Insert, /* Insert Here */ 885 /* 54 */ KEY_Delete, /* Re-move */ 886 /* 55 */ KEY_End, /* Select */ 887 /* 56 */ KEY_PgUp, /* Prev-Screen */ 888 /* 57 */ KEY_PgDown, /* Next-Screen */ 889 /* 58 */ KEY_NOTUSED, 890 /* 59 */ KEY_NOTUSED, 891 /* 60 */ KEY_KP_0, 892 /* 61 */ KEY_NOTUSED, 893 /* 62 */ KEY_KP_Decimal, 894 /* 63 */ KEY_KP_Enter, 895 /* 64 */ KEY_KP_1, 896 /* 65 */ KEY_KP_2, 897 /* 66 */ KEY_KP_3, 898 /* 67 */ KEY_KP_4, 899 /* 68 */ KEY_KP_5, 900 /* 69 */ KEY_KP_6, 901 /* 70 */ KEY_KP_Plus, /* KP Comma */ 902 /* 71 */ KEY_KP_7, 903 /* 72 */ KEY_KP_8, 904 /* 73 */ KEY_KP_9, 905 /* 74 */ KEY_KP_Minus, 906 /* 75 */ KEY_L1, /* PF1 */ 907 /* 76 */ KEY_L2, /* PF2 */ 908 /* 77 */ KEY_L3, /* PF3 */ 909 /* 78 */ KEY_L4, /* PF4 */ 910 /* 79 */ KEY_NOTUSED, 911 /* 80 */ KEY_NOTUSED, 912 /* 81 */ KEY_Left, 913 /* 82 */ KEY_Right, 914 /* 83 */ KEY_Down, 915 /* 84 */ KEY_Up, 916 /* 85 */ KEY_NOTUSED, 917 /* 86 */ KEY_NOTUSED, 918 /* 87 */ KEY_NOTUSED, 919 /* 88 */ KEY_ShiftL, 920 /* 89 */ KEY_LCtrl, 921 /* 90 */ KEY_CapsLock, 922 /* 91 */ KEY_Alt, /* Compose */ 923 /* 92 */ KEY_NOTUSED, 924 /* 93 */ KEY_NOTUSED, 925 /* 94 */ KEY_NOTUSED, 926 /* 95 */ KEY_NOTUSED, 927 /* 96 */ KEY_NOTUSED, 928 /* 97 */ KEY_NOTUSED, 929 /* 98 */ KEY_NOTUSED, 930 /* 99 */ KEY_NOTUSED, 931 /* 100 */ KEY_NOTUSED, 932 /* 101 */ KEY_NOTUSED, 933 /* 102 */ KEY_Delete, 934 /* 103 */ KEY_Enter, 935 /* 104 */ KEY_Tab, 936 /* 105 */ KEY_Escape, /* tilde */ 937 /* 106 */ KEY_1, 938 /* 107 */ KEY_Q, 939 /* 108 */ KEY_A, 940 /* 109 */ KEY_Z, 941 /* 110 */ KEY_NOTUSED, 942 /* 111 */ KEY_2, 943 /* 112 */ KEY_W, 944 /* 113 */ KEY_S, 945 /* 114 */ KEY_X, 946 /* 115 */ KEY_Less, 947 /* 116 */ KEY_NOTUSED, 948 /* 117 */ KEY_3, 949 /* 118 */ KEY_E, 950 /* 119 */ KEY_D, 951 /* 120 */ KEY_C, 952 /* 121 */ KEY_NOTUSED, 953 /* 122 */ KEY_4, 954 /* 123 */ KEY_R, 955 /* 124 */ KEY_F, 956 /* 125 */ KEY_V, 957 /* 126 */ KEY_Space, 958 /* 127 */ KEY_NOTUSED, 959 /* 128 */ KEY_5, 960 /* 129 */ KEY_T, 961 /* 130 */ KEY_G, 962 /* 131 */ KEY_B, 963 /* 132 */ KEY_NOTUSED, 964 /* 133 */ KEY_6, 965 /* 134 */ KEY_Y, 966 /* 135 */ KEY_H, 967 /* 136 */ KEY_N, 968 /* 137 */ KEY_NOTUSED, 969 /* 138 */ KEY_7, 970 /* 139 */ KEY_U, 971 /* 140 */ KEY_J, 972 /* 141 */ KEY_M, 973 /* 142 */ KEY_NOTUSED, 974 /* 143 */ KEY_8, 975 /* 144 */ KEY_I, 976 /* 145 */ KEY_K, 977 /* 146 */ KEY_Comma, 978 /* 147 */ KEY_NOTUSED, 979 /* 148 */ KEY_9, 980 /* 149 */ KEY_O, 981 /* 150 */ KEY_L, 982 /* 151 */ KEY_Period, 983 /* 152 */ KEY_NOTUSED, 984 /* 153 */ KEY_0, 985 /* 154 */ KEY_P, 986 /* 155 */ KEY_NOTUSED, 987 /* 156 */ KEY_SemiColon, 988 /* 157 */ KEY_Slash, 989 /* 158 */ KEY_NOTUSED, 990 /* 159 */ KEY_Equal, 991 /* 160 */ KEY_RBrace, 992 /* 161 */ KEY_BSlash, 993 /* 162 */ KEY_NOTUSED, 994 /* 163 */ KEY_Minus, 995 /* 164 */ KEY_LBrace, 996 /* 165 */ KEY_Quote, 997 /* 166 */ KEY_NOTUSED, 998 /* 167 */ KEY_NOTUSED, 999 /* 168 */ KEY_NOTUSED, 1000 /* 169 */ KEY_NOTUSED, 1001 /* 170 */ KEY_NOTUSED, 1002 /* 171 */ KEY_NOTUSED, 1003 /* 172 */ KEY_NOTUSED, 1004 /* 173 */ KEY_NOTUSED, 1005 /* 174 */ KEY_NOTUSED, 1006 /* 175 */ KEY_NOTUSED, 1007 /* 176 */ KEY_NOTUSED, 1008 /* 177 */ KEY_NOTUSED, 1009 /* 178 */ KEY_NOTUSED, 1010 /* 179 */ KEY_NOTUSED, 1011 /* 180 */ KEY_NOTUSED, 1012 /* 181 */ KEY_NOTUSED, 1013 /* 182 */ KEY_NOTUSED, 1014 /* 183 */ KEY_NOTUSED, 1015 /* 184 */ KEY_NOTUSED, 1016 /* 185 */ KEY_NOTUSED, 1017 /* 186 */ KEY_NOTUSED, 1018 /* 187 */ KEY_NOTUSED, 1019 /* 188 */ KEY_NOTUSED, 1020 /* 189 */ KEY_NOTUSED, 1021 /* 190 */ KEY_NOTUSED, 1022 /* 191 */ KEY_NOTUSED, 1023 /* 192 */ KEY_NOTUSED, 1024 /* 193 */ KEY_NOTUSED, 1025 /* 194 */ KEY_NOTUSED, 1026 /* 195 */ KEY_NOTUSED, 1027 /* 196 */ KEY_NOTUSED, 1028 /* 197 */ KEY_NOTUSED, 1029 /* 198 */ KEY_NOTUSED, 1030 /* 199 */ KEY_NOTUSED, 1031 /* 200 */ KEY_NOTUSED, 1032 /* 201 */ KEY_NOTUSED, 1033 /* 202 */ KEY_NOTUSED, 1034 /* 203 */ KEY_NOTUSED, 1035 /* 204 */ KEY_NOTUSED, 1036 /* 205 */ KEY_NOTUSED, 1037 /* 206 */ KEY_NOTUSED, 1038 /* 207 */ KEY_NOTUSED, 1039 /* 208 */ KEY_NOTUSED, 1040 /* 209 */ KEY_NOTUSED, 1041 /* 210 */ KEY_NOTUSED, 1042 /* 211 */ KEY_NOTUSED, 1043 /* 212 */ KEY_NOTUSED, 1044 /* 213 */ KEY_NOTUSED, 1045 /* 214 */ KEY_NOTUSED, 1046 /* 215 */ KEY_NOTUSED, 1047 /* 216 */ KEY_NOTUSED, 1048 /* 217 */ KEY_NOTUSED, 1049 /* 218 */ KEY_NOTUSED, 1050 /* 219 */ KEY_NOTUSED, 1051 /* 220 */ KEY_NOTUSED, 1052 /* 221 */ KEY_NOTUSED, 1053 /* 222 */ KEY_NOTUSED, 1054 /* 223 */ KEY_NOTUSED, 1055 /* 224 */ KEY_NOTUSED, 1056 /* 225 */ KEY_NOTUSED, 1057 /* 226 */ KEY_NOTUSED, 1058 /* 227 */ KEY_NOTUSED, 1059 /* 228 */ KEY_NOTUSED, 1060 /* 229 */ KEY_NOTUSED, 1061 /* 230 */ KEY_NOTUSED, 1062 /* 231 */ KEY_NOTUSED, 1063 /* 232 */ KEY_NOTUSED, 1064 /* 233 */ KEY_NOTUSED, 1065 /* 234 */ KEY_NOTUSED, 1066 /* 235 */ KEY_NOTUSED, 1067 /* 236 */ KEY_NOTUSED, 1068 /* 237 */ KEY_NOTUSED, 1069 /* 238 */ KEY_NOTUSED, 1070 /* 239 */ KEY_NOTUSED, 1071 /* 240 */ KEY_NOTUSED, 1072 /* 241 */ KEY_NOTUSED, 1073 /* 242 */ KEY_NOTUSED, 1074 /* 243 */ KEY_NOTUSED, 1075 /* 244 */ KEY_NOTUSED, 1076 /* 245 */ KEY_NOTUSED, 1077 /* 246 */ KEY_NOTUSED, 1078 /* 247 */ KEY_NOTUSED, 1079 /* 248 */ KEY_NOTUSED, 1080 /* 249 */ KEY_NOTUSED, 1081 /* 250 */ KEY_NOTUSED, 1082 /* 251 */ KEY_NOTUSED, 1083}; 1084#define WS_LK201_MAP_SIZE (sizeof(wsLk201Map)/sizeof(unsigned char)) 1085 1086static 1087TransMapRec wsLk201 = { 1088 0, 1089 WS_LK201_MAP_SIZE, 1090 wsLk201Map 1091}; 1092 1093static CARD8 wsSunMap[] = { 1094 /* 0x00 */ KEY_Help, 1095 /* 0x01 */ KEY_L1, /* stop */ 1096 /* 0x02 */ KEY_AudioLower, /* BrightnessDown / S-VolumeDown */ 1097 /* 0x03 */ KEY_L2, /* again */ 1098 /* 0x04 */ KEY_AudioRaise, /* BridgtnessUp / S-VolumeUp */ 1099 /* 0x05 */ KEY_F1, 1100 /* 0x06 */ KEY_F2, 1101 /* 0x07 */ KEY_F10, 1102 /* 0x08 */ KEY_F3, 1103 /* 0x09 */ KEY_F11, 1104 /* 0x0a */ KEY_F4, 1105 /* 0x0b */ KEY_F12, 1106 /* 0x0c */ KEY_F5, 1107 /* 0x0d */ KEY_AltLang, 1108 /* 0x0e */ KEY_F6, 1109 /* 0x0f */ KEY_NOTUSED, 1110 /* 0x10 */ KEY_F7, 1111 /* 0x11 */ KEY_F8, 1112 /* 0x12 */ KEY_F9, 1113 /* 0x13 */ KEY_Alt, 1114 /* 0x14 */ KEY_Up, 1115 /* 0x15 */ KEY_Pause, 1116 /* 0x16 */ KEY_Print, 1117 /* 0x17 */ KEY_ScrollLock, 1118 /* 0x18 */ KEY_Left, 1119 /* 0x19 */ KEY_L3, /* props */ 1120 /* 0x1a */ KEY_L4, /* undo */ 1121 /* 0x1b */ KEY_Down, 1122 /* 0x1c */ KEY_Right, 1123 /* 0x1d */ KEY_Escape, 1124 /* 0x1e */ KEY_1, 1125 /* 0x1f */ KEY_2, 1126 /* 0x20 */ KEY_3, 1127 /* 0x21 */ KEY_4, 1128 /* 0x22 */ KEY_5, 1129 /* 0x23 */ KEY_6, 1130 /* 0x24 */ KEY_7, 1131 /* 0x25 */ KEY_8, 1132 /* 0x26 */ KEY_9, 1133 /* 0x27 */ KEY_0, 1134 /* 0x28 */ KEY_Minus, 1135 /* 0x29 */ KEY_Equal, 1136 /* 0x2a */ KEY_Tilde, 1137 /* 0x2b */ KEY_BackSpace, 1138 /* 0x2c */ KEY_Insert, 1139 /* 0x2d */ KEY_Mute, /* Audio Mute */ 1140 /* 0x2e */ KEY_KP_Divide, 1141 /* 0x2f */ KEY_KP_Multiply, 1142 /* 0x30 */ KEY_Power, 1143 /* 0x31 */ KEY_L5, /* front */ 1144 /* 0x32 */ KEY_KP_Decimal, 1145 /* 0x33 */ KEY_L6, /* copy */ 1146 /* 0x34 */ KEY_Home, 1147 /* 0x35 */ KEY_Tab, 1148 /* 0x36 */ KEY_Q, 1149 /* 0x37 */ KEY_W, 1150 /* 0x38 */ KEY_E, 1151 /* 0x39 */ KEY_R, 1152 /* 0x3a */ KEY_T, 1153 /* 0x3b */ KEY_Y, 1154 /* 0x3c */ KEY_U, 1155 /* 0x3d */ KEY_I, 1156 /* 0x3e */ KEY_O, 1157 /* 0x3f */ KEY_P, 1158 /* 0x40 */ KEY_LBrace, 1159 /* 0x41 */ KEY_RBrace, 1160 /* 0x42 */ KEY_Delete, 1161 /* 0x43 */ KEY_Menu, /* compose */ 1162 /* 0x44 */ KEY_KP_7, 1163 /* 0x45 */ KEY_KP_8, 1164 /* 0x46 */ KEY_KP_9, 1165 /* 0x47 */ KEY_KP_Minus, 1166 /* 0x48 */ KEY_L7, /* open */ 1167 /* 0x49 */ KEY_L8, /* paste */ 1168 /* 0x4a */ KEY_End, 1169 /* 0x4b */ KEY_NOTUSED, 1170 /* 0x4c */ KEY_LCtrl, 1171 /* 0x4d */ KEY_A, 1172 /* 0x4e */ KEY_S, 1173 /* 0x4f */ KEY_D, 1174 /* 0x50 */ KEY_F, 1175 /* 0x51 */ KEY_G, 1176 /* 0x52 */ KEY_H, 1177 /* 0x53 */ KEY_J, 1178 /* 0x54 */ KEY_K, 1179 /* 0x55 */ KEY_L, 1180 /* 0x56 */ KEY_SemiColon, 1181 /* 0x57 */ KEY_Quote, 1182 /* 0x58 */ KEY_BSlash, 1183 /* 0x59 */ KEY_Enter, 1184 /* 0x5a */ KEY_KP_Enter, 1185 /* 0x5b */ KEY_KP_4, 1186 /* 0x5c */ KEY_KP_5, 1187 /* 0x5d */ KEY_KP_6, 1188 /* 0x5e */ KEY_KP_0, 1189 /* 0x5f */ KEY_L9, /* find */ 1190 /* 0x60 */ KEY_PgUp, 1191 /* 0x61 */ KEY_L10, /* cut */ 1192 /* 0x62 */ KEY_NumLock, 1193 /* 0x63 */ KEY_ShiftL, 1194 /* 0x64 */ KEY_Z, 1195 /* 0x65 */ KEY_X, 1196 /* 0x66 */ KEY_C, 1197 /* 0x67 */ KEY_V, 1198 /* 0x68 */ KEY_B, 1199 /* 0x69 */ KEY_N, 1200 /* 0x6a */ KEY_M, 1201 /* 0x6b */ KEY_Comma, 1202 /* 0x6c */ KEY_Period, 1203 /* 0x6d */ KEY_Slash, 1204 /* 0x6e */ KEY_ShiftR, 1205 /* 0x6f */ KEY_NOTUSED, /* linefeed */ 1206 /* 0x70 */ KEY_KP_1, 1207 /* 0x71 */ KEY_KP_2, 1208 /* 0x72 */ KEY_KP_3, 1209 /* 0x73 */ KEY_NOTUSED, 1210 /* 0x74 */ KEY_NOTUSED, 1211 /* 0x75 */ KEY_NOTUSED, 1212 /* 0x76 */ KEY_Help, /* help */ 1213 /* 0x77 */ KEY_CapsLock, 1214 /* 0x78 */ KEY_LMeta, 1215 /* 0x79 */ KEY_Space, 1216 /* 0x7a */ KEY_RMeta, 1217 /* 0x7b */ KEY_PgDown, 1218 /* 0x7c */ KEY_Less, /* < > on some keyboards */ 1219 /* 0x7d */ KEY_KP_Plus, 1220 /* 0x7e */ KEY_NOTUSED, 1221 /* 0x7f */ KEY_NOTUSED 1222}; 1223#define WS_SUN_MAP_SIZE (sizeof(wsSunMap)/sizeof(unsigned char)) 1224 1225static 1226TransMapRec wsSun = { 1227 0, 1228 WS_SUN_MAP_SIZE, 1229 wsSunMap 1230}; 1231 1232#endif /* WSCONS_SUPPORT */ 1233 1234/*ARGSUSED*/ 1235 1236/* 1237 * KbdGetMapping -- 1238 * Get the national keyboard mapping. The keyboard type is set, a new map 1239 * and the modifiermap is computed. 1240 */ 1241 1242void 1243KbdGetMapping (InputInfoPtr pInfo, KeySymsPtr pKeySyms, CARD8 *pModMap) 1244{ 1245 KbdDevPtr pKbd = (KbdDevPtr) pInfo->private; 1246 KeySym *k; 1247 int i; 1248 1249#ifndef __bsdi__ 1250 switch (pKbd->consType) { 1251 1252/* 1253 * XXX wscons has no GIO_KEYMAP 1254 */ 1255#if (defined (SYSCONS_SUPPORT) || defined (PCVT_SUPPORT)) && defined(GIO_KEYMAP) 1256 case SYSCONS: 1257 case PCVT: 1258 { 1259 keymap_t keymap; 1260 1261 if (ioctl(pInfo->fd, GIO_KEYMAP, &keymap) != -1) { 1262 for (i = 0; i < keymap.n_keys && i < NUM_KEYCODES; i++) 1263 if (remap[i]) { 1264 k = map + (remap[i] << 2); 1265 k[0] = KD_GET_ENTRY(i,0); /* non-shifed */ 1266 k[1] = KD_GET_ENTRY(i,1); /* shifted */ 1267 k[2] = KD_GET_ENTRY(i,4); /* alt */ 1268 k[3] = KD_GET_ENTRY(i,5); /* alt - shifted */ 1269 if (k[3] == k[2]) k[3] = NoSymbol; 1270 if (k[2] == k[1]) k[2] = NoSymbol; 1271 if (k[1] == k[0]) k[1] = NoSymbol; 1272 if (k[0] == k[2] && k[1] == k[3]) 1273 k[2] = k[3] = NoSymbol; 1274 } 1275 } 1276 } 1277 break; 1278#endif /* SYSCONS || PCVT */ 1279 1280 } 1281#endif /* !bsdi */ 1282 1283 /* 1284 * compute the modifier map 1285 */ 1286 for (i = 0; i < MAP_LENGTH; i++) 1287 pModMap[i] = NoSymbol; /* make sure it is restored */ 1288 1289 for (k = map, i = MIN_KEYCODE; 1290 i < (NUM_KEYCODES + MIN_KEYCODE); 1291 i++, k += 4) 1292 1293 switch(*k) { 1294 1295 case XK_Shift_L: 1296 case XK_Shift_R: 1297 pModMap[i] = ShiftMask; 1298 break; 1299 1300 case XK_Control_L: 1301 case XK_Control_R: 1302 pModMap[i] = ControlMask; 1303 break; 1304 1305 case XK_Caps_Lock: 1306 pModMap[i] = LockMask; 1307 break; 1308 1309 case XK_Alt_L: 1310 case XK_Alt_R: 1311 pModMap[i] = AltMask; 1312 break; 1313 1314 case XK_Num_Lock: 1315 pModMap[i] = NumLockMask; 1316 break; 1317 1318 case XK_Scroll_Lock: 1319 pModMap[i] = ScrollLockMask; 1320 break; 1321 1322 /* kana support */ 1323 case XK_Kana_Lock: 1324 case XK_Kana_Shift: 1325 pModMap[i] = KanaMask; 1326 break; 1327 1328 /* alternate toggle for multinational support */ 1329 case XK_Mode_switch: 1330 pModMap[i] = AltLangMask; 1331 break; 1332 1333 } 1334 1335 pKeySyms->map = map; 1336 pKeySyms->mapWidth = GLYPHS_PER_KEY; 1337 pKeySyms->minKeyCode = MIN_KEYCODE; 1338 pKeySyms->maxKeyCode = MAX_KEYCODE; 1339 1340 switch(pKbd->consType) { 1341#ifdef SYSCONS_SUPPORT 1342 case SYSCONS: 1343 if (pKbd->CustomKeycodes) 1344 pKbd->scancodeMap = &sysconsCODE; 1345 else 1346 pKbd->RemapScanCode = ATScancode; 1347 break; 1348#endif 1349#if defined(PCCONS_SUPPORT) || defined (PCVT_SUPPORT) 1350 case PCCONS: 1351 case PCVT: 1352 pKbd->RemapScanCode = ATScancode; 1353 break; 1354#endif 1355#ifdef WSCONS_SUPPORT 1356 case WSCONS: 1357 if (!pKbd->isConsole) { 1358 switch (pKbd->wsKbdType) { 1359 case WSKBD_TYPE_PC_XT: 1360 case WSKBD_TYPE_PC_AT: 1361 pKbd->scancodeMap = &wsXt; 1362 break; 1363 case WSKBD_TYPE_USB: 1364#ifdef WSKBD_TYPE_MAPLE 1365 case WSKBD_TYPE_MAPLE: 1366#endif 1367 pKbd->scancodeMap = &wsUsb; 1368 break; 1369#ifdef WSKBD_TYPE_ADB 1370 case WSKBD_TYPE_ADB: 1371 pKbd->scancodeMap = &wsAdb; 1372 break; 1373#endif 1374#ifdef WSKBD_TYPE_LK201 1375 case WSKBD_TYPE_LK201: 1376 pKbd->scancodeMap = &wsLk201; 1377 break; 1378#endif 1379#ifdef WSKBD_TYPE_SUN 1380#ifdef WSKBD_TYPE_SUN5 1381 case WSKBD_TYPE_SUN5: 1382#endif 1383 case WSKBD_TYPE_SUN: 1384 pKbd->scancodeMap = &wsSun; 1385 break; 1386#endif 1387 default: 1388 ErrorF("Unknown wskbd type %d\n", pKbd->wsKbdType); 1389 } 1390 } else { 1391 pKbd->RemapScanCode = ATScancode; 1392 } 1393 break; 1394#endif 1395 } 1396 return; 1397} 1398