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