bsd_KbdMap.c revision 7baae195
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_BSlash2, /* \ _ # ~ 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(unsigned char)) 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(unsigned char)) 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(unsigned char)) 820 821static 822TransMapRec wsAdb = { 823 0, 824 WS_ADB_MAP_SIZE, 825 wsAdbMap 826}; 827 828static CARD8 wsSunMap[] = { 829 /* 0x00 */ KEY_Help, 830 /* 0x01 */ KEY_L1, /* stop */ 831 /* 0x02 */ KEY_AudioLower, /* BrightnessDown / S-VolumeDown */ 832 /* 0x03 */ KEY_L2, /* again */ 833 /* 0x04 */ KEY_AudioRaise, /* BridgtnessUp / S-VolumeUp */ 834 /* 0x05 */ KEY_F1, 835 /* 0x06 */ KEY_F2, 836 /* 0x07 */ KEY_F10, 837 /* 0x08 */ KEY_F3, 838 /* 0x09 */ KEY_F11, 839 /* 0x0a */ KEY_F4, 840 /* 0x0b */ KEY_F12, 841 /* 0x0c */ KEY_F5, 842 /* 0x0d */ KEY_AltLang, 843 /* 0x0e */ KEY_F6, 844 /* 0x0f */ KEY_NOTUSED, 845 /* 0x10 */ KEY_F7, 846 /* 0x11 */ KEY_F8, 847 /* 0x12 */ KEY_F9, 848 /* 0x13 */ KEY_Alt, 849 /* 0x14 */ KEY_Up, 850 /* 0x15 */ KEY_Pause, 851 /* 0x16 */ KEY_Print, 852 /* 0x17 */ KEY_ScrollLock, 853 /* 0x18 */ KEY_Left, 854 /* 0x19 */ KEY_L3, /* props */ 855 /* 0x1a */ KEY_L4, /* undo */ 856 /* 0x1b */ KEY_Down, 857 /* 0x1c */ KEY_Right, 858 /* 0x1d */ KEY_Escape, 859 /* 0x1e */ KEY_1, 860 /* 0x1f */ KEY_2, 861 /* 0x20 */ KEY_3, 862 /* 0x21 */ KEY_4, 863 /* 0x22 */ KEY_5, 864 /* 0x23 */ KEY_6, 865 /* 0x24 */ KEY_7, 866 /* 0x25 */ KEY_8, 867 /* 0x26 */ KEY_9, 868 /* 0x27 */ KEY_0, 869 /* 0x28 */ KEY_Minus, 870 /* 0x29 */ KEY_Equal, 871 /* 0x2a */ KEY_Tilde, 872 /* 0x2b */ KEY_BackSpace, 873 /* 0x2c */ KEY_Insert, 874 /* 0x2d */ KEY_Mute, /* Audio Mute */ 875 /* 0x2e */ KEY_KP_Divide, 876 /* 0x2f */ KEY_KP_Multiply, 877 /* 0x30 */ KEY_Power, 878 /* 0x31 */ KEY_L5, /* front */ 879 /* 0x32 */ KEY_KP_Decimal, 880 /* 0x33 */ KEY_L6, /* copy */ 881 /* 0x34 */ KEY_Home, 882 /* 0x35 */ KEY_Tab, 883 /* 0x36 */ KEY_Q, 884 /* 0x37 */ KEY_W, 885 /* 0x38 */ KEY_E, 886 /* 0x39 */ KEY_R, 887 /* 0x3a */ KEY_T, 888 /* 0x3b */ KEY_Y, 889 /* 0x3c */ KEY_U, 890 /* 0x3d */ KEY_I, 891 /* 0x3e */ KEY_O, 892 /* 0x3f */ KEY_P, 893 /* 0x40 */ KEY_LBrace, 894 /* 0x41 */ KEY_RBrace, 895 /* 0x42 */ KEY_Delete, 896 /* 0x43 */ KEY_Menu, /* compose */ 897 /* 0x44 */ KEY_KP_7, 898 /* 0x45 */ KEY_KP_8, 899 /* 0x46 */ KEY_KP_9, 900 /* 0x47 */ KEY_KP_Minus, 901 /* 0x48 */ KEY_L7, /* open */ 902 /* 0x49 */ KEY_L8, /* paste */ 903 /* 0x4a */ KEY_End, 904 /* 0x4b */ KEY_NOTUSED, 905 /* 0x4c */ KEY_LCtrl, 906 /* 0x4d */ KEY_A, 907 /* 0x4e */ KEY_S, 908 /* 0x4f */ KEY_D, 909 /* 0x50 */ KEY_F, 910 /* 0x51 */ KEY_G, 911 /* 0x52 */ KEY_H, 912 /* 0x53 */ KEY_J, 913 /* 0x54 */ KEY_K, 914 /* 0x55 */ KEY_L, 915 /* 0x56 */ KEY_SemiColon, 916 /* 0x57 */ KEY_Quote, 917 /* 0x58 */ KEY_BSlash, 918 /* 0x59 */ KEY_Enter, 919 /* 0x5a */ KEY_KP_Enter, 920 /* 0x5b */ KEY_KP_4, 921 /* 0x5c */ KEY_KP_5, 922 /* 0x5d */ KEY_KP_6, 923 /* 0x5e */ KEY_KP_0, 924 /* 0x5f */ KEY_L9, /* find */ 925 /* 0x60 */ KEY_PgUp, 926 /* 0x61 */ KEY_L10, /* cut */ 927 /* 0x62 */ KEY_NumLock, 928 /* 0x63 */ KEY_ShiftL, 929 /* 0x64 */ KEY_Z, 930 /* 0x65 */ KEY_X, 931 /* 0x66 */ KEY_C, 932 /* 0x67 */ KEY_V, 933 /* 0x68 */ KEY_B, 934 /* 0x69 */ KEY_N, 935 /* 0x6a */ KEY_M, 936 /* 0x6b */ KEY_Comma, 937 /* 0x6c */ KEY_Period, 938 /* 0x6d */ KEY_Slash, 939 /* 0x6e */ KEY_ShiftR, 940 /* 0x6f */ KEY_NOTUSED, /* linefeed */ 941 /* 0x70 */ KEY_KP_1, 942 /* 0x71 */ KEY_KP_2, 943 /* 0x72 */ KEY_KP_3, 944 /* 0x73 */ KEY_NOTUSED, 945 /* 0x74 */ KEY_NOTUSED, 946 /* 0x75 */ KEY_NOTUSED, 947 /* 0x76 */ KEY_Help, /* help */ 948 /* 0x77 */ KEY_CapsLock, 949 /* 0x78 */ KEY_LMeta, 950 /* 0x79 */ KEY_Space, 951 /* 0x7a */ KEY_RMeta, 952 /* 0x7b */ KEY_PgDown, 953 /* 0x7c */ KEY_Less, /* < > on some keyboards */ 954 /* 0x7d */ KEY_KP_Plus, 955 /* 0x7e */ KEY_NOTUSED, 956 /* 0x7f */ KEY_NOTUSED 957}; 958#define WS_SUN_MAP_SIZE (sizeof(wsSunMap)/sizeof(unsigned char)) 959 960static 961TransMapRec wsSun = { 962 0, 963 WS_SUN_MAP_SIZE, 964 wsSunMap 965}; 966 967#endif /* WSCONS_SUPPORT */ 968 969/*ARGSUSED*/ 970 971/* 972 * KbdGetMapping -- 973 * Get the national keyboard mapping. The keyboard type is set, a new map 974 * and the modifiermap is computed. 975 */ 976 977void 978KbdGetMapping (InputInfoPtr pInfo, KeySymsPtr pKeySyms, CARD8 *pModMap) 979{ 980 KbdDevPtr pKbd = (KbdDevPtr) pInfo->private; 981 KeySym *k; 982 int i; 983 984#ifndef __bsdi__ 985 switch (pKbd->consType) { 986 987/* 988 * XXX wscons has no GIO_KEYMAP 989 */ 990#if (defined (SYSCONS_SUPPORT) || defined (PCVT_SUPPORT)) && defined(GIO_KEYMAP) 991 case SYSCONS: 992 case PCVT: 993 { 994 keymap_t keymap; 995 996 if (ioctl(pInfo->fd, GIO_KEYMAP, &keymap) != -1) { 997 for (i = 0; i < keymap.n_keys && i < NUM_KEYCODES; i++) 998 if (remap[i]) { 999 k = map + (remap[i] << 2); 1000 k[0] = KD_GET_ENTRY(i,0); /* non-shifed */ 1001 k[1] = KD_GET_ENTRY(i,1); /* shifted */ 1002 k[2] = KD_GET_ENTRY(i,4); /* alt */ 1003 k[3] = KD_GET_ENTRY(i,5); /* alt - shifted */ 1004 if (k[3] == k[2]) k[3] = NoSymbol; 1005 if (k[2] == k[1]) k[2] = NoSymbol; 1006 if (k[1] == k[0]) k[1] = NoSymbol; 1007 if (k[0] == k[2] && k[1] == k[3]) 1008 k[2] = k[3] = NoSymbol; 1009 } 1010 } 1011 } 1012 break; 1013#endif /* SYSCONS || PCVT */ 1014 1015 } 1016#endif /* !bsdi */ 1017 1018 /* 1019 * compute the modifier map 1020 */ 1021 for (i = 0; i < MAP_LENGTH; i++) 1022 pModMap[i] = NoSymbol; /* make sure it is restored */ 1023 1024 for (k = map, i = MIN_KEYCODE; 1025 i < (NUM_KEYCODES + MIN_KEYCODE); 1026 i++, k += 4) 1027 1028 switch(*k) { 1029 1030 case XK_Shift_L: 1031 case XK_Shift_R: 1032 pModMap[i] = ShiftMask; 1033 break; 1034 1035 case XK_Control_L: 1036 case XK_Control_R: 1037 pModMap[i] = ControlMask; 1038 break; 1039 1040 case XK_Caps_Lock: 1041 pModMap[i] = LockMask; 1042 break; 1043 1044 case XK_Alt_L: 1045 case XK_Alt_R: 1046 pModMap[i] = AltMask; 1047 break; 1048 1049 case XK_Num_Lock: 1050 pModMap[i] = NumLockMask; 1051 break; 1052 1053 case XK_Scroll_Lock: 1054 pModMap[i] = ScrollLockMask; 1055 break; 1056 1057 /* kana support */ 1058 case XK_Kana_Lock: 1059 case XK_Kana_Shift: 1060 pModMap[i] = KanaMask; 1061 break; 1062 1063 /* alternate toggle for multinational support */ 1064 case XK_Mode_switch: 1065 pModMap[i] = AltLangMask; 1066 break; 1067 1068 } 1069 1070 pKeySyms->map = map; 1071 pKeySyms->mapWidth = GLYPHS_PER_KEY; 1072 pKeySyms->minKeyCode = MIN_KEYCODE; 1073 pKeySyms->maxKeyCode = MAX_KEYCODE; 1074 1075 switch(pKbd->consType) { 1076#ifdef SYSCONS_SUPPORT 1077 case SYSCONS: 1078 if (pKbd->CustomKeycodes) 1079 pKbd->scancodeMap = &sysconsCODE; 1080 else 1081 pKbd->RemapScanCode = ATScancode; 1082 break; 1083#endif 1084#if defined(PCCONS_SUPPORT) || defined (PCVT_SUPPORT) 1085 case PCCONS: 1086 case PCVT: 1087 pKbd->RemapScanCode = ATScancode; 1088 break; 1089#endif 1090#ifdef WSCONS_SUPPORT 1091 case WSCONS: 1092 if (!pKbd->isConsole) { 1093 switch (pKbd->wsKbdType) { 1094 case WSKBD_TYPE_PC_XT: 1095 case WSKBD_TYPE_PC_AT: 1096 pKbd->scancodeMap = &wsXt; 1097 break; 1098 case WSKBD_TYPE_USB: 1099#ifdef WSKBD_TYPE_MAPLE 1100 case WSKBD_TYPE_MAPLE: 1101#endif 1102 pKbd->scancodeMap = &wsUsb; 1103 break; 1104#ifdef WSKBD_TYPE_ADB 1105 case WSKBD_TYPE_ADB: 1106 pKbd->scancodeMap = &wsAdb; 1107 break; 1108#endif 1109#ifdef WSKBD_TYPE_SUN 1110#ifdef WSKBD_TYPE_SUN5 1111 case WSKBD_TYPE_SUN5: 1112#endif 1113 case WSKBD_TYPE_SUN: 1114 pKbd->scancodeMap = &wsSun; 1115 break; 1116#endif 1117 default: 1118 ErrorF("Unknown wskbd type %d\n", pKbd->wsKbdType); 1119 } 1120 } else { 1121 pKbd->RemapScanCode = ATScancode; 1122 } 1123 break; 1124#endif 1125 } 1126 return; 1127} 1128