bsd_KbdMap.c revision 4ddc96cf
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/* 349 * Special keycodes for Japanese keyboards 350 * Override atKeyname HKTG and BSlash2 code to unique values for JP106 keyboards 351 */ 352#undef KEY_HKTG 353#define KEY_HKTG 200 /* Japanese Hiragana Katakana Toggle */ 354#undef KEY_BSlash2 355#define KEY_BSlash2 203 /* Japanese '\_' key */ 356 357 /* 135 */ KEY_BSlash2, /* Japanese 106 kbd: '\_' */ 358 /* 136 */ KEY_HKTG, /* Japanese 106 kbd: Hiragana Katakana toggle */ 359 /* 137 */ KEY_Yen, /* Japanese 106 kbd: '\|' */ 360 /* 138 */ KEY_XFER, /* Japanese 106 kbd: Henkan */ 361 /* 139 */ KEY_NFER, /* Japanese 106 kbd: Muhenkan */ 362 /* 140 */ KEY_NOTUSED, 363 /* 141 */ KEY_NOTUSED, 364 /* 142 */ KEY_NOTUSED, 365 /* 143 */ KEY_NOTUSED, 366/* 367 * Special keycodes for Korean keyboards 368 * Define Hangul and Hangul_Hanja unique key codes 369 * These keys also use KANA and EISU on some Macintosh Japanese USB keyboards 370 */ 371#define KEY_Hangul 201 /* Also KANA Key on Mac JP USB kbd */ 372#define KEY_Hangul_Hanja 202 /* Also EISU Key on Mac JP USB kbd */ 373 /* 144 */ KEY_Hangul, /* Korean 106 kbd: Hangul */ 374 /* 145 */ KEY_Hangul_Hanja, /* Korean 106 kbd: Hangul Hanja */ 375 /* 146 */ KEY_NOTUSED, 376 /* 147 */ KEY_NOTUSED, 377 /* 148 */ KEY_NOTUSED, 378 /* 149 */ KEY_NOTUSED, 379 /* 150 */ KEY_NOTUSED, 380 /* 151 */ KEY_NOTUSED, 381 /* 152 */ KEY_NOTUSED, 382 /* 153 */ KEY_NOTUSED, 383 /* 154 */ KEY_NOTUSED, 384 /* 155 */ KEY_NOTUSED, 385 /* 156 */ KEY_NOTUSED, 386 /* 157 */ KEY_NOTUSED, 387 /* 158 */ KEY_NOTUSED, 388 /* 159 */ KEY_NOTUSED, 389 /* 160 */ KEY_NOTUSED, 390 /* 161 */ KEY_NOTUSED, 391 /* 162 */ KEY_NOTUSED, 392 /* 163 */ KEY_NOTUSED, 393 /* 164 */ KEY_NOTUSED, 394 /* 165 */ KEY_NOTUSED, 395 /* 166 */ KEY_NOTUSED, 396 /* 167 */ KEY_NOTUSED, 397 /* 168 */ KEY_NOTUSED, 398 /* 169 */ KEY_NOTUSED, 399 /* 170 */ KEY_NOTUSED, 400 /* 171 */ KEY_NOTUSED, 401 /* 172 */ KEY_NOTUSED, 402 /* 173 */ KEY_NOTUSED, 403 /* 174 */ KEY_NOTUSED, 404 /* 175 */ KEY_NOTUSED, 405 /* 176 */ KEY_NOTUSED, 406 /* 177 */ KEY_NOTUSED, 407 /* 178 */ KEY_NOTUSED, 408 /* 179 */ KEY_NOTUSED, 409 /* 180 */ KEY_NOTUSED, 410 /* 181 */ KEY_NOTUSED, 411 /* 182 */ KEY_NOTUSED, 412 /* 183 */ KEY_NOTUSED, 413 /* 184 */ KEY_NOTUSED, 414 /* 185 */ KEY_NOTUSED, 415 /* 186 */ KEY_NOTUSED, 416 /* 187 */ KEY_NOTUSED, 417 /* 188 */ KEY_NOTUSED, 418 /* 189 */ KEY_NOTUSED, 419 /* 190 */ KEY_NOTUSED, 420 /* 191 */ KEY_NOTUSED, 421 /* 192 */ KEY_NOTUSED, 422 /* 193 */ KEY_NOTUSED, 423 /* 194 */ KEY_NOTUSED, 424 /* 195 */ KEY_NOTUSED, 425 /* 196 */ KEY_NOTUSED, 426 /* 197 */ KEY_NOTUSED, 427 /* 198 */ KEY_NOTUSED, 428 /* 199 */ KEY_NOTUSED, 429 /* 200 */ KEY_NOTUSED, 430 /* 201 */ KEY_NOTUSED, 431 /* 202 */ KEY_NOTUSED, 432 /* 203 */ KEY_NOTUSED, 433 /* 204 */ KEY_NOTUSED, 434 /* 205 */ KEY_NOTUSED, 435 /* 206 */ KEY_NOTUSED, 436 /* 207 */ KEY_NOTUSED, 437 /* 208 */ KEY_NOTUSED, 438 /* 209 */ KEY_NOTUSED, 439 /* 210 */ KEY_NOTUSED, 440 /* 211 */ KEY_NOTUSED, 441 /* 212 */ KEY_NOTUSED, 442 /* 213 */ KEY_NOTUSED, 443 /* 214 */ KEY_NOTUSED, 444 /* 215 */ KEY_NOTUSED, 445 /* 216 */ KEY_NOTUSED, 446 /* 217 */ KEY_NOTUSED, 447 /* 218 */ KEY_NOTUSED, 448 /* 219 */ KEY_NOTUSED, 449 /* 220 */ KEY_NOTUSED, 450 /* 221 */ KEY_NOTUSED, 451 /* 222 */ KEY_NOTUSED, 452 /* 223 */ KEY_NOTUSED, 453 /* 224 */ KEY_LCtrl, /* Left Control */ 454 /* 225 */ KEY_ShiftL, /* Left Shift */ 455 /* 226 */ KEY_Alt, /* Left Alt */ 456 /* 227 */ KEY_LMeta, /* Left Meta */ 457 /* 228 */ KEY_RCtrl, /* Right Control */ 458 /* 229 */ KEY_ShiftR, /* Right Shift */ 459 /* 230 */ KEY_AltLang, /* Right Alt, AKA AltGr */ 460 /* 231 */ KEY_LMeta, /* Right Meta XXX */ 461}; 462#define WS_USB_MAP_SIZE (sizeof(wsUsbMap)/sizeof(*wsUsbMap)) 463 464static 465TransMapRec wsUsb = { 466 0, 467 WS_USB_MAP_SIZE, 468 wsUsbMap 469}; 470 471static CARD8 wsXtMap[] = { 472 /* 0 */ KEY_NOTUSED, 473 /* 1 */ KEY_Escape, 474 /* 2 */ KEY_1, 475 /* 3 */ KEY_2, 476 /* 4 */ KEY_3, 477 /* 5 */ KEY_4, 478 /* 6 */ KEY_5, 479 /* 7 */ KEY_6, 480 /* 8 */ KEY_7, 481 /* 9 */ KEY_8, 482 /* 10 */ KEY_9, 483 /* 11 */ KEY_0, 484 /* 12 */ KEY_Minus, 485 /* 13 */ KEY_Equal, 486 /* 14 */ KEY_BackSpace, 487 /* 15 */ KEY_Tab, 488 /* 16 */ KEY_Q, 489 /* 17 */ KEY_W, 490 /* 18 */ KEY_E, 491 /* 19 */ KEY_R, 492 /* 20 */ KEY_T, 493 /* 21 */ KEY_Y, 494 /* 22 */ KEY_U, 495 /* 23 */ KEY_I, 496 /* 24 */ KEY_O, 497 /* 25 */ KEY_P, 498 /* 26 */ KEY_LBrace, 499 /* 27 */ KEY_RBrace, 500 /* 28 */ KEY_Enter, 501 /* 29 */ KEY_LCtrl, 502 /* 30 */ KEY_A, 503 /* 31 */ KEY_S, 504 /* 32 */ KEY_D, 505 /* 33 */ KEY_F, 506 /* 34 */ KEY_G, 507 /* 35 */ KEY_H, 508 /* 36 */ KEY_J, 509 /* 37 */ KEY_K, 510 /* 38 */ KEY_L, 511 /* 39 */ KEY_SemiColon, 512 /* 40 */ KEY_Quote, 513 /* 41 */ KEY_Tilde, 514 /* 42 */ KEY_ShiftL, 515 /* 43 */ KEY_BSlash, 516 /* 44 */ KEY_Z, 517 /* 45 */ KEY_X, 518 /* 46 */ KEY_C, 519 /* 47 */ KEY_V, 520 /* 48 */ KEY_B, 521 /* 49 */ KEY_N, 522 /* 50 */ KEY_M, 523 /* 51 */ KEY_Comma, 524 /* 52 */ KEY_Period, 525 /* 53 */ KEY_Slash, 526 /* 54 */ KEY_ShiftR, 527 /* 55 */ KEY_KP_Multiply, 528 /* 56 */ KEY_Alt, 529 /* 57 */ KEY_Space, 530 /* 58 */ KEY_CapsLock, 531 /* 59 */ KEY_F1, 532 /* 60 */ KEY_F2, 533 /* 61 */ KEY_F3, 534 /* 62 */ KEY_F4, 535 /* 63 */ KEY_F5, 536 /* 64 */ KEY_F6, 537 /* 65 */ KEY_F7, 538 /* 66 */ KEY_F8, 539 /* 67 */ KEY_F9, 540 /* 68 */ KEY_F10, 541 /* 69 */ KEY_NumLock, 542 /* 70 */ KEY_ScrollLock, 543 /* 71 */ KEY_KP_7, 544 /* 72 */ KEY_KP_8, 545 /* 73 */ KEY_KP_9, 546 /* 74 */ KEY_KP_Minus, 547 /* 75 */ KEY_KP_4, 548 /* 76 */ KEY_KP_5, 549 /* 77 */ KEY_KP_6, 550 /* 78 */ KEY_KP_Plus, 551 /* 79 */ KEY_KP_1, 552 /* 80 */ KEY_KP_2, 553 /* 81 */ KEY_KP_3, 554 /* 82 */ KEY_KP_0, 555 /* 83 */ KEY_KP_Decimal, 556 /* 84 */ KEY_NOTUSED, 557 /* 85 */ KEY_NOTUSED, 558 /* 86 */ KEY_Less, /* backslash on uk, < on german */ 559 /* 87 */ KEY_F11, 560 /* 88 */ KEY_F12, 561 /* 89 */ KEY_NOTUSED, 562 /* 90 */ KEY_NOTUSED, 563 /* 91 */ KEY_NOTUSED, 564 /* 92 */ KEY_NOTUSED, 565 /* 93 */ KEY_NOTUSED, 566 /* 94 */ KEY_NOTUSED, 567 /* 95 */ KEY_NOTUSED, 568 /* 96 */ KEY_NOTUSED, 569 /* 97 */ KEY_NOTUSED, 570 /* 98 */ KEY_NOTUSED, 571 /* 99 */ KEY_NOTUSED, 572 /* 100 */ KEY_NOTUSED, 573 /* 101 */ KEY_NOTUSED, 574 /* 102 */ KEY_NOTUSED, 575 /* 103 */ KEY_NOTUSED, 576 /* 104 */ KEY_NOTUSED, 577 /* 105 */ KEY_NOTUSED, 578 /* 106 */ KEY_NOTUSED, 579 /* 107 */ KEY_NOTUSED, 580 /* 108 */ KEY_NOTUSED, 581 /* 109 */ KEY_NOTUSED, 582 /* 110 */ KEY_NOTUSED, 583 /* 111 */ KEY_NOTUSED, 584 /* 112 */ KEY_HKTG, 585 /* 113 */ KEY_NOTUSED, 586 /* 114 */ KEY_NOTUSED, 587 /* 115 */ KEY_BSlash2, 588 /* 116 */ KEY_NOTUSED, 589 /* 117 */ KEY_NOTUSED, 590 /* 118 */ KEY_NOTUSED, 591 /* 119 */ KEY_NOTUSED, 592 /* 120 */ KEY_NOTUSED, 593 /* 121 */ KEY_XFER, 594 /* 122 */ KEY_NOTUSED, 595 /* 123 */ KEY_NFER, 596 /* 124 */ KEY_NOTUSED, 597 /* 125 */ KEY_Yen, 598 /* 126 */ KEY_NOTUSED, 599 /* 127 */ KEY_Pause, 600 /* 128 */ KEY_NOTUSED, 601 /* 129 */ KEY_NOTUSED, 602 /* 130 */ KEY_NOTUSED, 603 /* 131 */ KEY_NOTUSED, 604 /* 132 */ KEY_NOTUSED, 605 /* 133 */ KEY_NOTUSED, 606 /* 134 */ KEY_NOTUSED, 607 /* 135 */ KEY_NOTUSED, 608 /* 136 */ KEY_NOTUSED, 609 /* 137 */ KEY_NOTUSED, 610 /* 138 */ KEY_NOTUSED, 611 /* 139 */ KEY_NOTUSED, 612 /* 140 */ KEY_NOTUSED, 613 /* 141 */ KEY_NOTUSED, 614 /* 142 */ KEY_NOTUSED, 615 /* 143 */ KEY_NOTUSED, 616 /* 144 */ KEY_NOTUSED, 617 /* 145 */ KEY_NOTUSED, 618 /* 146 */ KEY_NOTUSED, 619 /* 147 */ KEY_NOTUSED, 620 /* 148 */ KEY_NOTUSED, 621 /* 149 */ KEY_NOTUSED, 622 /* 150 */ KEY_NOTUSED, 623 /* 151 */ KEY_NOTUSED, 624 /* 152 */ KEY_NOTUSED, 625 /* 153 */ KEY_NOTUSED, 626 /* 154 */ KEY_NOTUSED, 627 /* 155 */ KEY_NOTUSED, 628 /* 156 */ KEY_KP_Enter, 629 /* 157 */ KEY_RCtrl, 630 /* 158 */ KEY_NOTUSED, 631 /* 159 */ KEY_NOTUSED, 632 /* 160 */ KEY_Mute, 633 /* 161 */ KEY_NOTUSED, 634 /* 162 */ KEY_NOTUSED, 635 /* 163 */ KEY_NOTUSED, 636 /* 164 */ KEY_NOTUSED, 637 /* 165 */ KEY_NOTUSED, 638 /* 166 */ KEY_NOTUSED, 639 /* 167 */ KEY_NOTUSED, 640 /* 168 */ KEY_NOTUSED, 641 /* 169 */ KEY_NOTUSED, 642 /* 170 */ KEY_Print, 643 /* 171 */ KEY_NOTUSED, 644 /* 172 */ KEY_NOTUSED, 645 /* 173 */ KEY_NOTUSED, 646 /* 174 */ KEY_AudioLower, 647 /* 175 */ KEY_AudioRaise, 648 /* 176 */ KEY_NOTUSED, 649 /* 177 */ KEY_NOTUSED, 650 /* 178 */ KEY_NOTUSED, 651 /* 179 */ KEY_NOTUSED, 652 /* 180 */ KEY_NOTUSED, 653 /* 181 */ KEY_KP_Divide, 654 /* 182 */ KEY_NOTUSED, 655 /* 183 */ KEY_Print, 656 /* 184 */ KEY_AltLang, 657 /* 185 */ KEY_NOTUSED, 658 /* 186 */ KEY_NOTUSED, 659 /* 187 */ KEY_NOTUSED, 660 /* 188 */ KEY_NOTUSED, 661 /* 189 */ KEY_NOTUSED, 662 /* 190 */ KEY_NOTUSED, 663 /* 191 */ KEY_NOTUSED, 664 /* 192 */ KEY_NOTUSED, 665 /* 193 */ KEY_NOTUSED, 666 /* 194 */ KEY_NOTUSED, 667 /* 195 */ KEY_NOTUSED, 668 /* 196 */ KEY_NOTUSED, 669 /* 197 */ KEY_NOTUSED, 670 /* 198 */ KEY_NOTUSED, 671 /* 199 */ KEY_Home, 672 /* 200 */ KEY_Up, 673 /* 201 */ KEY_PgUp, 674 /* 202 */ KEY_NOTUSED, 675 /* 203 */ KEY_Left, 676 /* 204 */ KEY_NOTUSED, 677 /* 205 */ KEY_Right, 678 /* 206 */ KEY_NOTUSED, 679 /* 207 */ KEY_End, 680 /* 208 */ KEY_Down, 681 /* 209 */ KEY_PgDown, 682 /* 210 */ KEY_Insert, 683 /* 211 */ KEY_Delete, 684 /* 212 */ KEY_NOTUSED, 685 /* 213 */ KEY_NOTUSED, 686 /* 214 */ KEY_NOTUSED, 687 /* 215 */ KEY_NOTUSED, 688 /* 216 */ KEY_NOTUSED, 689 /* 217 */ KEY_NOTUSED, 690 /* 218 */ KEY_NOTUSED, 691 /* 219 */ KEY_LMeta, 692 /* 220 */ KEY_RMeta, 693 /* 221 */ KEY_Menu, 694}; 695#define WS_XT_MAP_SIZE (sizeof(wsXtMap)/sizeof(*wsXtMap)) 696 697static 698TransMapRec wsXt = { 699 0, 700 WS_XT_MAP_SIZE, 701 wsXtMap 702}; 703 704/* Map for adb keyboards */ 705static CARD8 wsAdbMap[] = { 706 /* 0 */ KEY_A, 707 /* 1 */ KEY_S, 708 /* 2 */ KEY_D, 709 /* 3 */ KEY_F, 710 /* 4 */ KEY_H, 711 /* 5 */ KEY_G, 712 /* 6 */ KEY_Z, 713 /* 7 */ KEY_X, 714 /* 8 */ KEY_C, 715 /* 9 */ KEY_V, 716 /* 10 */ KEY_UNKNOWN, /* @ # on french keyboards */ 717 /* 11 */ KEY_B, 718 /* 12 */ KEY_Q, 719 /* 13 */ KEY_W, 720 /* 14 */ KEY_E, 721 /* 15 */ KEY_R, 722 /* 16 */ KEY_Y, 723 /* 17 */ KEY_T, 724 /* 18 */ KEY_1, 725 /* 19 */ KEY_2, 726 /* 20 */ KEY_3, 727 /* 21 */ KEY_4, 728 /* 22 */ KEY_6, 729 /* 23 */ KEY_5, 730 /* 24 */ KEY_Equal, 731 /* 25 */ KEY_9, 732 /* 26 */ KEY_7, 733 /* 27 */ KEY_Minus, 734 /* 28 */ KEY_8, 735 /* 29 */ KEY_0, 736 /* 30 */ KEY_RBrace, 737 /* 31 */ KEY_O, 738 /* 32 */ KEY_U, 739 /* 33 */ KEY_LBrace, 740 /* 34 */ KEY_I, 741 /* 35 */ KEY_P, 742 /* 36 */ KEY_Enter, 743 /* 37 */ KEY_L, 744 /* 38 */ KEY_J, 745 /* 39 */ KEY_Quote, 746 /* 40 */ KEY_K, 747 /* 41 */ KEY_SemiColon, 748 /* 42 */ KEY_BSlash, 749 /* 43 */ KEY_Comma, 750 /* 44 */ KEY_Slash, 751 /* 45 */ KEY_N, 752 /* 46 */ KEY_M, 753 /* 47 */ KEY_Period, 754 /* 48 */ KEY_Tab, 755 /* 49 */ KEY_Space, 756 /* 50 */ KEY_Tilde, 757 /* 51 */ KEY_BackSpace, 758 /* 52 */ KEY_AltLang, 759 /* 53 */ KEY_Escape, 760 /* 54 */ KEY_LCtrl, 761 /* 55 */ KEY_LMeta, 762 /* 56 */ KEY_ShiftL, 763 /* 57 */ KEY_CapsLock, 764 /* 58 */ KEY_Alt, 765 /* 59 */ KEY_Left, 766 /* 60 */ KEY_Right, 767 /* 61 */ KEY_Down, 768 /* 62 */ KEY_Up, 769 /* 63 */ KEY_UNKNOWN, /* Fn */ 770 /* 64 */ KEY_NOTUSED, 771 /* 65 */ KEY_KP_Decimal, 772 /* 66 */ KEY_NOTUSED, 773 /* 67 */ KEY_KP_Multiply, 774 /* 68 */ KEY_NOTUSED, 775 /* 69 */ KEY_KP_Plus, 776 /* 70 */ KEY_NOTUSED, 777 /* 71 */ KEY_NumLock, /* Clear */ 778 /* 72 */ KEY_NOTUSED, 779 /* 73 */ KEY_NOTUSED, 780 /* 74 */ KEY_NOTUSED, 781 /* 75 */ KEY_KP_Divide, 782 /* 76 */ KEY_KP_Enter, 783 /* 77 */ KEY_NOTUSED, 784 /* 78 */ KEY_KP_Minus, 785 /* 79 */ KEY_NOTUSED, 786 /* 80 */ KEY_NOTUSED, 787 /* 81 */ KEY_KP_Equal, /* Keypad = */ 788 /* 82 */ KEY_KP_0, 789 /* 83 */ KEY_KP_1, 790 /* 84 */ KEY_KP_2, 791 /* 85 */ KEY_KP_3, 792 /* 86 */ KEY_KP_4, 793 /* 87 */ KEY_KP_5, 794 /* 88 */ KEY_KP_6, 795 /* 89 */ KEY_KP_7, 796 /* 90 */ KEY_NOTUSED, 797 /* 91 */ KEY_KP_8, 798 /* 92 */ KEY_KP_9, 799 /* 93 */ KEY_NOTUSED, 800 /* 94 */ KEY_NOTUSED, 801 /* 95 */ KEY_KP_Decimal, /* Keypad , */ 802 /* 96 */ KEY_F5, 803 /* 97 */ KEY_F6, 804 /* 98 */ KEY_F7, 805 /* 99 */ KEY_F3, 806 /* 100 */ KEY_F8, 807 /* 101 */ KEY_F9, 808 /* 102 */ KEY_NOTUSED, 809 /* 103 */ KEY_F11, 810 /* 104 */ KEY_NOTUSED, 811 /* 105 */ KEY_Print, 812 /* 106 */ KEY_KP_Enter, 813 /* 107 */ KEY_ScrollLock, 814 /* 108 */ KEY_NOTUSED, 815 /* 109 */ KEY_F10, 816 /* 110 */ KEY_NOTUSED, 817 /* 111 */ KEY_F12, 818 /* 112 */ KEY_NOTUSED, 819 /* 113 */ KEY_Pause, 820 /* 114 */ KEY_Insert, 821 /* 115 */ KEY_Home, 822 /* 116 */ KEY_PgUp, 823 /* 117 */ KEY_Delete, 824 /* 118 */ KEY_F4, 825 /* 119 */ KEY_End, 826 /* 120 */ KEY_F2, 827 /* 121 */ KEY_PgDown, 828 /* 122 */ KEY_F1, 829 /* 123 */ KEY_NOTUSED, 830 /* 124 */ KEY_NOTUSED, 831 /* 125 */ KEY_NOTUSED, 832 /* 126 */ KEY_NOTUSED, 833 /* 127 */ KEY_Power 834}; 835#define WS_ADB_MAP_SIZE (sizeof(wsAdbMap)/sizeof(*wsAdbMap)) 836 837static 838TransMapRec wsAdb = { 839 0, 840 WS_ADB_MAP_SIZE, 841 wsAdbMap 842}; 843 844/* Map for amiga keyboards */ 845static CARD8 wsAmigaMap[] = { 846 /* 0 */ KEY_Tilde, 847 /* 1 */ KEY_1, 848 /* 2 */ KEY_2, 849 /* 3 */ KEY_3, 850 /* 4 */ KEY_4, 851 /* 5 */ KEY_5, 852 /* 6 */ KEY_6, 853 /* 7 */ KEY_7, 854 /* 8 */ KEY_8, 855 /* 9 */ KEY_9, 856 /* 10 */ KEY_0, 857 /* 11 */ KEY_Minus, 858 /* 12 */ KEY_Equal, 859 /* 13 */ KEY_BSlash, /* key in this position only on Amiga */ 860 /* 14 */ KEY_NOTUSED, 861 /* 15 */ KEY_KP_0, 862 /* 16 */ KEY_Q, 863 /* 17 */ KEY_W, 864 /* 18 */ KEY_E, 865 /* 19 */ KEY_R, 866 /* 20 */ KEY_T, 867 /* 21 */ KEY_Y, 868 /* 22 */ KEY_U, 869 /* 23 */ KEY_I, 870 /* 24 */ KEY_O, 871 /* 25 */ KEY_P, 872 /* 26 */ KEY_LBrace, 873 /* 27 */ KEY_RBrace, 874 /* 28 */ KEY_NOTUSED, 875 /* 29 */ KEY_KP_1, 876 /* 30 */ KEY_KP_2, 877 /* 31 */ KEY_KP_3, 878 /* 32 */ KEY_A, 879 /* 33 */ KEY_S, 880 /* 34 */ KEY_D, 881 /* 35 */ KEY_F, 882 /* 36 */ KEY_G, 883 /* 37 */ KEY_H, 884 /* 38 */ KEY_J, 885 /* 39 */ KEY_K, 886 /* 40 */ KEY_L, 887 /* 41 */ KEY_SemiColon, 888 /* 42 */ KEY_Quote, 889 /* 43 */ KEY_BSlash, /* # on international keyboards */ 890 /* 44 */ KEY_NOTUSED, 891 /* 45 */ KEY_KP_4, 892 /* 46 */ KEY_KP_5, 893 /* 47 */ KEY_KP_6, 894 /* 48 */ KEY_Less, 895 /* 49 */ KEY_Z, 896 /* 50 */ KEY_X, 897 /* 51 */ KEY_C, 898 /* 52 */ KEY_V, 899 /* 53 */ KEY_B, 900 /* 54 */ KEY_N, 901 /* 55 */ KEY_M, 902 /* 56 */ KEY_Comma, 903 /* 57 */ KEY_Period, 904 /* 58 */ KEY_Slash, 905 /* 59 */ KEY_NOTUSED, 906 /* 60 */ KEY_KP_Decimal, 907 /* 61 */ KEY_KP_7, 908 /* 62 */ KEY_KP_8, 909 /* 63 */ KEY_KP_9, 910 /* 64 */ KEY_Space, 911 /* 65 */ KEY_BackSpace, 912 /* 66 */ KEY_Tab, 913 /* 67 */ KEY_KP_Enter, 914 /* 68 */ KEY_Enter, 915 /* 69 */ KEY_Escape, 916 /* 70 */ KEY_Delete, 917 /* 71 */ KEY_NOTUSED, 918 /* 72 */ KEY_NOTUSED, 919 /* 73 */ KEY_NOTUSED, 920 /* 74 */ KEY_KP_Minus, 921 /* 75 */ KEY_NOTUSED, 922 /* 76 */ KEY_Up, 923 /* 77 */ KEY_Down, 924 /* 78 */ KEY_Right, 925 /* 79 */ KEY_Left, 926 /* 80 */ KEY_F1, 927 /* 81 */ KEY_F2, 928 /* 82 */ KEY_F3, 929 /* 83 */ KEY_F4, 930 /* 84 */ KEY_F5, 931 /* 85 */ KEY_F6, 932 /* 86 */ KEY_F7, 933 /* 87 */ KEY_F8, 934 /* 88 */ KEY_F9, 935 /* 89 */ KEY_F10, 936 /* 90 */ KEY_UNKNOWN, /* Keypad [ */ 937 /* 91 */ KEY_UNKNOWN, /* Keypad ] */ 938 /* 92 */ KEY_KP_Divide, 939 /* 93 */ KEY_KP_Multiply, 940 /* 94 */ KEY_KP_Plus, 941 /* 95 */ KEY_Help, 942 /* 96 */ KEY_ShiftL, 943 /* 97 */ KEY_ShiftR, 944 /* 98 */ KEY_NOTUSED, 945 /* 99 */ KEY_LCtrl, 946 /* 100 */ KEY_Alt, 947 /* 101 */ KEY_AltLang, 948 /* 102 */ KEY_LMeta, 949 /* 103 */ KEY_RMeta 950}; 951#define WS_AMIGA_MAP_SIZE (sizeof(wsAmigaMap)/sizeof(*wsAmigaMap)) 952 953static 954TransMapRec wsAmiga = { 955 0, 956 WS_AMIGA_MAP_SIZE, 957 wsAmigaMap 958}; 959 960/* Map for LK201 keyboards */ 961static CARD8 wsLk201Map[] = { 962 /* 0 */ KEY_F1, 963 /* 1 */ KEY_F2, 964 /* 2 */ KEY_F3, 965 /* 3 */ KEY_F4, 966 /* 4 */ KEY_F5, 967 /* 5 */ KEY_NOTUSED, 968 /* 6 */ KEY_NOTUSED, 969 /* 7 */ KEY_NOTUSED, 970 /* 8 */ KEY_NOTUSED, 971 /* 9 */ KEY_NOTUSED, 972 /* 10 */ KEY_NOTUSED, 973 /* 11 */ KEY_NOTUSED, 974 /* 12 */ KEY_NOTUSED, 975 /* 13 */ KEY_NOTUSED, 976 /* 14 */ KEY_F6, 977 /* 15 */ KEY_F7, 978 /* 16 */ KEY_F8, 979 /* 17 */ KEY_F9, 980 /* 18 */ KEY_F10, 981 /* 19 */ KEY_NOTUSED, 982 /* 20 */ KEY_NOTUSED, 983 /* 21 */ KEY_NOTUSED, 984 /* 22 */ KEY_NOTUSED, 985 /* 23 */ KEY_NOTUSED, 986 /* 24 */ KEY_NOTUSED, 987 /* 25 */ KEY_NOTUSED, 988 /* 26 */ KEY_NOTUSED, 989 /* 27 */ KEY_Escape, /* F11 */ 990 /* 28 */ KEY_F12, 991 /* 29 */ KEY_F13, 992 /* 30 */ KEY_F14, 993 /* 31 */ KEY_NOTUSED, 994 /* 32 */ KEY_NOTUSED, 995 /* 33 */ KEY_NOTUSED, 996 /* 34 */ KEY_NOTUSED, 997 /* 35 */ KEY_NOTUSED, 998 /* 36 */ KEY_NOTUSED, 999 /* 37 */ KEY_NOTUSED, 1000 /* 38 */ KEY_Help, 1001 /* 39 */ KEY_F16, /* Do */ 1002 /* 40 */ KEY_NOTUSED, 1003 /* 41 */ KEY_NOTUSED, 1004 /* 42 */ KEY_F17, 1005 /* 43 */ KEY_L8, /* F18 */ 1006 /* 44 */ KEY_L9, /* F19 */ 1007 /* 45 */ KEY_L10, /* F20 */ 1008 /* 46 */ KEY_NOTUSED, 1009 /* 47 */ KEY_NOTUSED, 1010 /* 48 */ KEY_NOTUSED, 1011 /* 49 */ KEY_NOTUSED, 1012 /* 50 */ KEY_NOTUSED, 1013 /* 51 */ KEY_NOTUSED, 1014 /* 52 */ KEY_Home, /* Find */ 1015 /* 53 */ KEY_Insert, /* Insert Here */ 1016 /* 54 */ KEY_Delete, /* Re-move */ 1017 /* 55 */ KEY_End, /* Select */ 1018 /* 56 */ KEY_PgUp, /* Prev-Screen */ 1019 /* 57 */ KEY_PgDown, /* Next-Screen */ 1020 /* 58 */ KEY_NOTUSED, 1021 /* 59 */ KEY_NOTUSED, 1022 /* 60 */ KEY_KP_0, 1023 /* 61 */ KEY_NOTUSED, 1024 /* 62 */ KEY_KP_Decimal, 1025 /* 63 */ KEY_KP_Enter, 1026 /* 64 */ KEY_KP_1, 1027 /* 65 */ KEY_KP_2, 1028 /* 66 */ KEY_KP_3, 1029 /* 67 */ KEY_KP_4, 1030 /* 68 */ KEY_KP_5, 1031 /* 69 */ KEY_KP_6, 1032 /* 70 */ KEY_KP_Plus, /* KP Comma */ 1033 /* 71 */ KEY_KP_7, 1034 /* 72 */ KEY_KP_8, 1035 /* 73 */ KEY_KP_9, 1036 /* 74 */ KEY_KP_Minus, 1037 /* 75 */ KEY_L1, /* PF1 */ 1038 /* 76 */ KEY_L2, /* PF2 */ 1039 /* 77 */ KEY_L3, /* PF3 */ 1040 /* 78 */ KEY_L4, /* PF4 */ 1041 /* 79 */ KEY_NOTUSED, 1042 /* 80 */ KEY_NOTUSED, 1043 /* 81 */ KEY_Left, 1044 /* 82 */ KEY_Right, 1045 /* 83 */ KEY_Down, 1046 /* 84 */ KEY_Up, 1047 /* 85 */ KEY_NOTUSED, 1048 /* 86 */ KEY_NOTUSED, 1049 /* 87 */ KEY_NOTUSED, 1050 /* 88 */ KEY_ShiftL, 1051 /* 89 */ KEY_LCtrl, 1052 /* 90 */ KEY_CapsLock, 1053 /* 91 */ KEY_Alt, /* Compose */ 1054 /* 92 */ KEY_NOTUSED, 1055 /* 93 */ KEY_NOTUSED, 1056 /* 94 */ KEY_NOTUSED, 1057 /* 95 */ KEY_NOTUSED, 1058 /* 96 */ KEY_NOTUSED, 1059 /* 97 */ KEY_NOTUSED, 1060 /* 98 */ KEY_NOTUSED, 1061 /* 99 */ KEY_NOTUSED, 1062 /* 100 */ KEY_NOTUSED, 1063 /* 101 */ KEY_NOTUSED, 1064 /* 102 */ KEY_BackSpace, 1065 /* 103 */ KEY_Enter, 1066 /* 104 */ KEY_Tab, 1067 /* 105 */ KEY_Tilde, /* tilde */ 1068 /* 106 */ KEY_1, 1069 /* 107 */ KEY_Q, 1070 /* 108 */ KEY_A, 1071 /* 109 */ KEY_Z, 1072 /* 110 */ KEY_NOTUSED, 1073 /* 111 */ KEY_2, 1074 /* 112 */ KEY_W, 1075 /* 113 */ KEY_S, 1076 /* 114 */ KEY_X, 1077 /* 115 */ KEY_Less, 1078 /* 116 */ KEY_NOTUSED, 1079 /* 117 */ KEY_3, 1080 /* 118 */ KEY_E, 1081 /* 119 */ KEY_D, 1082 /* 120 */ KEY_C, 1083 /* 121 */ KEY_NOTUSED, 1084 /* 122 */ KEY_4, 1085 /* 123 */ KEY_R, 1086 /* 124 */ KEY_F, 1087 /* 125 */ KEY_V, 1088 /* 126 */ KEY_Space, 1089 /* 127 */ KEY_NOTUSED, 1090 /* 128 */ KEY_5, 1091 /* 129 */ KEY_T, 1092 /* 130 */ KEY_G, 1093 /* 131 */ KEY_B, 1094 /* 132 */ KEY_NOTUSED, 1095 /* 133 */ KEY_6, 1096 /* 134 */ KEY_Y, 1097 /* 135 */ KEY_H, 1098 /* 136 */ KEY_N, 1099 /* 137 */ KEY_NOTUSED, 1100 /* 138 */ KEY_7, 1101 /* 139 */ KEY_U, 1102 /* 140 */ KEY_J, 1103 /* 141 */ KEY_M, 1104 /* 142 */ KEY_NOTUSED, 1105 /* 143 */ KEY_8, 1106 /* 144 */ KEY_I, 1107 /* 145 */ KEY_K, 1108 /* 146 */ KEY_Comma, 1109 /* 147 */ KEY_NOTUSED, 1110 /* 148 */ KEY_9, 1111 /* 149 */ KEY_O, 1112 /* 150 */ KEY_L, 1113 /* 151 */ KEY_Period, 1114 /* 152 */ KEY_NOTUSED, 1115 /* 153 */ KEY_0, 1116 /* 154 */ KEY_P, 1117 /* 155 */ KEY_NOTUSED, 1118 /* 156 */ KEY_SemiColon, 1119 /* 157 */ KEY_Slash, 1120 /* 158 */ KEY_NOTUSED, 1121 /* 159 */ KEY_Equal, 1122 /* 160 */ KEY_RBrace, 1123 /* 161 */ KEY_BSlash, 1124 /* 162 */ KEY_NOTUSED, 1125 /* 163 */ KEY_Minus, 1126 /* 164 */ KEY_LBrace, 1127 /* 165 */ KEY_Quote, 1128 /* 166 */ KEY_NOTUSED, 1129 /* 167 */ KEY_NOTUSED, 1130 /* 168 */ KEY_NOTUSED, 1131 /* 169 */ KEY_NOTUSED, 1132 /* 170 */ KEY_NOTUSED, 1133 /* 171 */ KEY_NOTUSED, 1134 /* 172 */ KEY_NOTUSED, 1135 /* 173 */ KEY_NOTUSED, 1136 /* 174 */ KEY_NOTUSED, 1137 /* 175 */ KEY_NOTUSED, 1138 /* 176 */ KEY_NOTUSED, 1139 /* 177 */ KEY_NOTUSED, 1140 /* 178 */ KEY_NOTUSED, 1141 /* 179 */ KEY_NOTUSED, 1142 /* 180 */ KEY_NOTUSED, 1143 /* 181 */ KEY_NOTUSED, 1144 /* 182 */ KEY_NOTUSED, 1145 /* 183 */ KEY_NOTUSED, 1146 /* 184 */ KEY_NOTUSED, 1147 /* 185 */ KEY_NOTUSED, 1148 /* 186 */ KEY_NOTUSED, 1149 /* 187 */ KEY_NOTUSED, 1150 /* 188 */ KEY_NOTUSED, 1151 /* 189 */ KEY_NOTUSED, 1152 /* 190 */ KEY_NOTUSED, 1153 /* 191 */ KEY_NOTUSED, 1154 /* 192 */ KEY_NOTUSED, 1155 /* 193 */ KEY_NOTUSED, 1156 /* 194 */ KEY_NOTUSED, 1157 /* 195 */ KEY_NOTUSED, 1158 /* 196 */ KEY_NOTUSED, 1159 /* 197 */ KEY_NOTUSED, 1160 /* 198 */ KEY_NOTUSED, 1161 /* 199 */ KEY_NOTUSED, 1162 /* 200 */ KEY_NOTUSED, 1163 /* 201 */ KEY_NOTUSED, 1164 /* 202 */ KEY_NOTUSED, 1165 /* 203 */ KEY_NOTUSED, 1166 /* 204 */ KEY_NOTUSED, 1167 /* 205 */ KEY_NOTUSED, 1168 /* 206 */ KEY_NOTUSED, 1169 /* 207 */ KEY_NOTUSED, 1170 /* 208 */ KEY_NOTUSED, 1171 /* 209 */ KEY_NOTUSED, 1172 /* 210 */ KEY_NOTUSED, 1173 /* 211 */ KEY_NOTUSED, 1174 /* 212 */ KEY_NOTUSED, 1175 /* 213 */ KEY_NOTUSED, 1176 /* 214 */ KEY_NOTUSED, 1177 /* 215 */ KEY_NOTUSED, 1178 /* 216 */ KEY_NOTUSED, 1179 /* 217 */ KEY_NOTUSED, 1180 /* 218 */ KEY_NOTUSED, 1181 /* 219 */ KEY_NOTUSED, 1182 /* 220 */ KEY_NOTUSED, 1183 /* 221 */ KEY_NOTUSED, 1184 /* 222 */ KEY_NOTUSED, 1185 /* 223 */ KEY_NOTUSED, 1186 /* 224 */ KEY_NOTUSED, 1187 /* 225 */ KEY_NOTUSED, 1188 /* 226 */ KEY_NOTUSED, 1189 /* 227 */ KEY_NOTUSED, 1190 /* 228 */ KEY_NOTUSED, 1191 /* 229 */ KEY_NOTUSED, 1192 /* 230 */ KEY_NOTUSED, 1193 /* 231 */ KEY_NOTUSED, 1194 /* 232 */ KEY_NOTUSED, 1195 /* 233 */ KEY_NOTUSED, 1196 /* 234 */ KEY_NOTUSED, 1197 /* 235 */ KEY_NOTUSED, 1198 /* 236 */ KEY_NOTUSED, 1199 /* 237 */ KEY_NOTUSED, 1200 /* 238 */ KEY_NOTUSED, 1201 /* 239 */ KEY_NOTUSED, 1202 /* 240 */ KEY_NOTUSED, 1203 /* 241 */ KEY_NOTUSED, 1204 /* 242 */ KEY_NOTUSED, 1205 /* 243 */ KEY_NOTUSED, 1206 /* 244 */ KEY_NOTUSED, 1207 /* 245 */ KEY_NOTUSED, 1208 /* 246 */ KEY_NOTUSED, 1209 /* 247 */ KEY_NOTUSED, 1210 /* 248 */ KEY_NOTUSED, 1211 /* 249 */ KEY_NOTUSED, 1212 /* 250 */ KEY_NOTUSED, 1213 /* 251 */ KEY_NOTUSED, 1214}; 1215#define WS_LK201_MAP_SIZE (sizeof(wsLk201Map)/sizeof(*wsLk201Map)) 1216 1217static 1218TransMapRec wsLk201 = { 1219 0, 1220 WS_LK201_MAP_SIZE, 1221 wsLk201Map 1222}; 1223 1224/* Map for LK401 keyboards */ 1225static CARD8 wsLk401Map[] = { 1226 /* 0 */ KEY_F1, 1227 /* 1 */ KEY_F2, 1228 /* 2 */ KEY_F3, 1229 /* 3 */ KEY_F4, 1230 /* 4 */ KEY_F5, 1231 /* 5 */ KEY_NOTUSED, 1232 /* 6 */ KEY_NOTUSED, 1233 /* 7 */ KEY_NOTUSED, 1234 /* 8 */ KEY_NOTUSED, 1235 /* 9 */ KEY_NOTUSED, 1236 /* 10 */ KEY_NOTUSED, 1237 /* 11 */ KEY_NOTUSED, 1238 /* 12 */ KEY_NOTUSED, 1239 /* 13 */ KEY_NOTUSED, 1240 /* 14 */ KEY_F6, 1241 /* 15 */ KEY_F7, 1242 /* 16 */ KEY_F8, 1243 /* 17 */ KEY_F9, 1244 /* 18 */ KEY_F10, 1245 /* 19 */ KEY_NOTUSED, 1246 /* 20 */ KEY_NOTUSED, 1247 /* 21 */ KEY_NOTUSED, 1248 /* 22 */ KEY_NOTUSED, 1249 /* 23 */ KEY_NOTUSED, 1250 /* 24 */ KEY_NOTUSED, 1251 /* 25 */ KEY_NOTUSED, 1252 /* 26 */ KEY_NOTUSED, 1253 /* 27 */ KEY_Escape, /* F11 */ 1254 /* 28 */ KEY_F12, 1255 /* 29 */ KEY_F13, 1256 /* 30 */ KEY_F14, 1257 /* 31 */ KEY_NOTUSED, 1258 /* 32 */ KEY_NOTUSED, 1259 /* 33 */ KEY_NOTUSED, 1260 /* 34 */ KEY_NOTUSED, 1261 /* 35 */ KEY_NOTUSED, 1262 /* 36 */ KEY_NOTUSED, 1263 /* 37 */ KEY_NOTUSED, 1264 /* 38 */ KEY_Help, 1265 /* 39 */ KEY_F16, /* Do */ 1266 /* 40 */ KEY_NOTUSED, 1267 /* 41 */ KEY_NOTUSED, 1268 /* 42 */ KEY_F17, 1269 /* 43 */ KEY_L8, /* F18 */ 1270 /* 44 */ KEY_L9, /* F19 */ 1271 /* 45 */ KEY_L10, /* F20 */ 1272 /* 46 */ KEY_NOTUSED, 1273 /* 47 */ KEY_NOTUSED, 1274 /* 48 */ KEY_NOTUSED, 1275 /* 49 */ KEY_NOTUSED, 1276 /* 50 */ KEY_NOTUSED, 1277 /* 51 */ KEY_NOTUSED, 1278 /* 52 */ KEY_Home, /* Find */ 1279 /* 53 */ KEY_Insert, /* Insert Here */ 1280 /* 54 */ KEY_Delete, /* Re-move */ 1281 /* 55 */ KEY_End, /* Select */ 1282 /* 56 */ KEY_PgUp, /* Prev-Screen */ 1283 /* 57 */ KEY_PgDown, /* Next-Screen */ 1284 /* 58 */ KEY_NOTUSED, 1285 /* 59 */ KEY_NOTUSED, 1286 /* 60 */ KEY_KP_0, 1287 /* 61 */ KEY_NOTUSED, 1288 /* 62 */ KEY_KP_Decimal, 1289 /* 63 */ KEY_KP_Enter, 1290 /* 64 */ KEY_KP_1, 1291 /* 65 */ KEY_KP_2, 1292 /* 66 */ KEY_KP_3, 1293 /* 67 */ KEY_KP_4, 1294 /* 68 */ KEY_KP_5, 1295 /* 69 */ KEY_KP_6, 1296 /* 70 */ KEY_KP_Plus, /* KP Comma */ 1297 /* 71 */ KEY_KP_7, 1298 /* 72 */ KEY_KP_8, 1299 /* 73 */ KEY_KP_9, 1300 /* 74 */ KEY_KP_Minus, 1301 /* 75 */ KEY_L1, /* PF1 */ 1302 /* 76 */ KEY_L2, /* PF2 */ 1303 /* 77 */ KEY_L3, /* PF3 */ 1304 /* 78 */ KEY_L4, /* PF4 */ 1305 /* 79 */ KEY_NOTUSED, 1306 /* 80 */ KEY_NOTUSED, 1307 /* 81 */ KEY_Left, 1308 /* 82 */ KEY_Right, 1309 /* 83 */ KEY_Down, 1310 /* 84 */ KEY_Up, 1311 /* 85 */ KEY_ShiftR, 1312 /* 86 */ KEY_Alt, 1313 /* 87 */ KEY_RMeta, /* Compose right */ 1314 /* 88 */ KEY_ShiftL, 1315 /* 89 */ KEY_LCtrl, 1316 /* 90 */ KEY_CapsLock, 1317 /* 91 */ KEY_LMeta, /* Compose left */ 1318 /* 92 */ KEY_AltLang, 1319 /* 93 */ KEY_NOTUSED, 1320 /* 94 */ KEY_NOTUSED, 1321 /* 95 */ KEY_NOTUSED, 1322 /* 96 */ KEY_NOTUSED, 1323 /* 97 */ KEY_NOTUSED, 1324 /* 98 */ KEY_NOTUSED, 1325 /* 99 */ KEY_NOTUSED, 1326 /* 100 */ KEY_NOTUSED, 1327 /* 101 */ KEY_NOTUSED, 1328 /* 102 */ KEY_BackSpace, 1329 /* 103 */ KEY_Enter, 1330 /* 104 */ KEY_Tab, 1331 /* 105 */ KEY_Tilde, /* tilde */ 1332 /* 106 */ KEY_1, 1333 /* 107 */ KEY_Q, 1334 /* 108 */ KEY_A, 1335 /* 109 */ KEY_Z, 1336 /* 110 */ KEY_NOTUSED, 1337 /* 111 */ KEY_2, 1338 /* 112 */ KEY_W, 1339 /* 113 */ KEY_S, 1340 /* 114 */ KEY_X, 1341 /* 115 */ KEY_Less, 1342 /* 116 */ KEY_NOTUSED, 1343 /* 117 */ KEY_3, 1344 /* 118 */ KEY_E, 1345 /* 119 */ KEY_D, 1346 /* 120 */ KEY_C, 1347 /* 121 */ KEY_NOTUSED, 1348 /* 122 */ KEY_4, 1349 /* 123 */ KEY_R, 1350 /* 124 */ KEY_F, 1351 /* 125 */ KEY_V, 1352 /* 126 */ KEY_Space, 1353 /* 127 */ KEY_NOTUSED, 1354 /* 128 */ KEY_5, 1355 /* 129 */ KEY_T, 1356 /* 130 */ KEY_G, 1357 /* 131 */ KEY_B, 1358 /* 132 */ KEY_NOTUSED, 1359 /* 133 */ KEY_6, 1360 /* 134 */ KEY_Y, 1361 /* 135 */ KEY_H, 1362 /* 136 */ KEY_N, 1363 /* 137 */ KEY_NOTUSED, 1364 /* 138 */ KEY_7, 1365 /* 139 */ KEY_U, 1366 /* 140 */ KEY_J, 1367 /* 141 */ KEY_M, 1368 /* 142 */ KEY_NOTUSED, 1369 /* 143 */ KEY_8, 1370 /* 144 */ KEY_I, 1371 /* 145 */ KEY_K, 1372 /* 146 */ KEY_Comma, 1373 /* 147 */ KEY_NOTUSED, 1374 /* 148 */ KEY_9, 1375 /* 149 */ KEY_O, 1376 /* 150 */ KEY_L, 1377 /* 151 */ KEY_Period, 1378 /* 152 */ KEY_NOTUSED, 1379 /* 153 */ KEY_0, 1380 /* 154 */ KEY_P, 1381 /* 155 */ KEY_NOTUSED, 1382 /* 156 */ KEY_SemiColon, 1383 /* 157 */ KEY_Slash, 1384 /* 158 */ KEY_NOTUSED, 1385 /* 159 */ KEY_Equal, 1386 /* 160 */ KEY_RBrace, 1387 /* 161 */ KEY_BSlash, 1388 /* 162 */ KEY_NOTUSED, 1389 /* 163 */ KEY_Minus, 1390 /* 164 */ KEY_LBrace, 1391 /* 165 */ KEY_Quote, 1392 /* 166 */ KEY_NOTUSED, 1393 /* 167 */ KEY_NOTUSED, 1394 /* 168 */ KEY_NOTUSED, 1395 /* 169 */ KEY_NOTUSED, 1396 /* 170 */ KEY_NOTUSED, 1397 /* 171 */ KEY_NOTUSED, 1398 /* 172 */ KEY_NOTUSED, 1399 /* 173 */ KEY_NOTUSED, 1400 /* 174 */ KEY_NOTUSED, 1401 /* 175 */ KEY_NOTUSED, 1402 /* 176 */ KEY_NOTUSED, 1403 /* 177 */ KEY_NOTUSED, 1404 /* 178 */ KEY_NOTUSED, 1405 /* 179 */ KEY_NOTUSED, 1406 /* 180 */ KEY_NOTUSED, 1407 /* 181 */ KEY_NOTUSED, 1408 /* 182 */ KEY_NOTUSED, 1409 /* 183 */ KEY_NOTUSED, 1410 /* 184 */ KEY_NOTUSED, 1411 /* 185 */ KEY_NOTUSED, 1412 /* 186 */ KEY_NOTUSED, 1413 /* 187 */ KEY_NOTUSED, 1414 /* 188 */ KEY_NOTUSED, 1415 /* 189 */ KEY_NOTUSED, 1416 /* 190 */ KEY_NOTUSED, 1417 /* 191 */ KEY_NOTUSED, 1418 /* 192 */ KEY_NOTUSED, 1419 /* 193 */ KEY_NOTUSED, 1420 /* 194 */ KEY_NOTUSED, 1421 /* 195 */ KEY_NOTUSED, 1422 /* 196 */ KEY_NOTUSED, 1423 /* 197 */ KEY_NOTUSED, 1424 /* 198 */ KEY_NOTUSED, 1425 /* 199 */ KEY_NOTUSED, 1426 /* 200 */ KEY_NOTUSED, 1427 /* 201 */ KEY_NOTUSED, 1428 /* 202 */ KEY_NOTUSED, 1429 /* 203 */ KEY_NOTUSED, 1430 /* 204 */ KEY_NOTUSED, 1431 /* 205 */ KEY_NOTUSED, 1432 /* 206 */ KEY_NOTUSED, 1433 /* 207 */ KEY_NOTUSED, 1434 /* 208 */ KEY_NOTUSED, 1435 /* 209 */ KEY_NOTUSED, 1436 /* 210 */ KEY_NOTUSED, 1437 /* 211 */ KEY_NOTUSED, 1438 /* 212 */ KEY_NOTUSED, 1439 /* 213 */ KEY_NOTUSED, 1440 /* 214 */ KEY_NOTUSED, 1441 /* 215 */ KEY_NOTUSED, 1442 /* 216 */ KEY_NOTUSED, 1443 /* 217 */ KEY_NOTUSED, 1444 /* 218 */ KEY_NOTUSED, 1445 /* 219 */ KEY_NOTUSED, 1446 /* 220 */ KEY_NOTUSED, 1447 /* 221 */ KEY_NOTUSED, 1448 /* 222 */ KEY_NOTUSED, 1449 /* 223 */ KEY_NOTUSED, 1450 /* 224 */ KEY_NOTUSED, 1451 /* 225 */ KEY_NOTUSED, 1452 /* 226 */ KEY_NOTUSED, 1453 /* 227 */ KEY_NOTUSED, 1454 /* 228 */ KEY_NOTUSED, 1455 /* 229 */ KEY_NOTUSED, 1456 /* 230 */ KEY_NOTUSED, 1457 /* 231 */ KEY_NOTUSED, 1458 /* 232 */ KEY_NOTUSED, 1459 /* 233 */ KEY_NOTUSED, 1460 /* 234 */ KEY_NOTUSED, 1461 /* 235 */ KEY_NOTUSED, 1462 /* 236 */ KEY_NOTUSED, 1463 /* 237 */ KEY_NOTUSED, 1464 /* 238 */ KEY_NOTUSED, 1465 /* 239 */ KEY_NOTUSED, 1466 /* 240 */ KEY_NOTUSED, 1467 /* 241 */ KEY_NOTUSED, 1468 /* 242 */ KEY_NOTUSED, 1469 /* 243 */ KEY_NOTUSED, 1470 /* 244 */ KEY_NOTUSED, 1471 /* 245 */ KEY_NOTUSED, 1472 /* 246 */ KEY_NOTUSED, 1473 /* 247 */ KEY_NOTUSED, 1474 /* 248 */ KEY_NOTUSED, 1475 /* 249 */ KEY_NOTUSED, 1476 /* 250 */ KEY_NOTUSED, 1477 /* 251 */ KEY_NOTUSED, 1478}; 1479#define WS_LK401_MAP_SIZE (sizeof(wsLk401Map)/sizeof(*wsLk401Map)) 1480 1481static 1482TransMapRec wsLk401 = { 1483 0, 1484 WS_LK401_MAP_SIZE, 1485 wsLk401Map 1486}; 1487 1488static CARD8 wsSunMap[] = { 1489 /* 0x00 */ KEY_Help, 1490 /* 0x01 */ KEY_L1, /* stop */ 1491 /* 0x02 */ KEY_AudioLower, /* BrightnessDown / S-VolumeDown */ 1492 /* 0x03 */ KEY_L2, /* again */ 1493 /* 0x04 */ KEY_AudioRaise, /* BrightnessUp / S-VolumeUp */ 1494 /* 0x05 */ KEY_F1, 1495 /* 0x06 */ KEY_F2, 1496 /* 0x07 */ KEY_F10, 1497 /* 0x08 */ KEY_F3, 1498 /* 0x09 */ KEY_F11, 1499 /* 0x0a */ KEY_F4, 1500 /* 0x0b */ KEY_F12, 1501 /* 0x0c */ KEY_F5, 1502 /* 0x0d */ KEY_AltLang, 1503 /* 0x0e */ KEY_F6, 1504 /* 0x0f */ KEY_NOTUSED, 1505 /* 0x10 */ KEY_F7, 1506 /* 0x11 */ KEY_F8, 1507 /* 0x12 */ KEY_F9, 1508 /* 0x13 */ KEY_Alt, 1509 /* 0x14 */ KEY_Up, 1510 /* 0x15 */ KEY_Pause, 1511 /* 0x16 */ KEY_Print, 1512 /* 0x17 */ KEY_ScrollLock, 1513 /* 0x18 */ KEY_Left, 1514 /* 0x19 */ KEY_L3, /* props */ 1515 /* 0x1a */ KEY_L4, /* undo */ 1516 /* 0x1b */ KEY_Down, 1517 /* 0x1c */ KEY_Right, 1518 /* 0x1d */ KEY_Escape, 1519 /* 0x1e */ KEY_1, 1520 /* 0x1f */ KEY_2, 1521 /* 0x20 */ KEY_3, 1522 /* 0x21 */ KEY_4, 1523 /* 0x22 */ KEY_5, 1524 /* 0x23 */ KEY_6, 1525 /* 0x24 */ KEY_7, 1526 /* 0x25 */ KEY_8, 1527 /* 0x26 */ KEY_9, 1528 /* 0x27 */ KEY_0, 1529 /* 0x28 */ KEY_Minus, 1530 /* 0x29 */ KEY_Equal, 1531 /* 0x2a */ KEY_Tilde, 1532 /* 0x2b */ KEY_BackSpace, 1533 /* 0x2c */ KEY_Insert, 1534 /* 0x2d */ KEY_Mute, /* Audio Mute */ 1535 /* 0x2e */ KEY_KP_Divide, 1536 /* 0x2f */ KEY_KP_Multiply, 1537 /* 0x30 */ KEY_Power, 1538 /* 0x31 */ KEY_L5, /* front */ 1539 /* 0x32 */ KEY_KP_Decimal, 1540 /* 0x33 */ KEY_L6, /* copy */ 1541 /* 0x34 */ KEY_Home, 1542 /* 0x35 */ KEY_Tab, 1543 /* 0x36 */ KEY_Q, 1544 /* 0x37 */ KEY_W, 1545 /* 0x38 */ KEY_E, 1546 /* 0x39 */ KEY_R, 1547 /* 0x3a */ KEY_T, 1548 /* 0x3b */ KEY_Y, 1549 /* 0x3c */ KEY_U, 1550 /* 0x3d */ KEY_I, 1551 /* 0x3e */ KEY_O, 1552 /* 0x3f */ KEY_P, 1553 /* 0x40 */ KEY_LBrace, 1554 /* 0x41 */ KEY_RBrace, 1555 /* 0x42 */ KEY_Delete, 1556 /* 0x43 */ KEY_Menu, /* compose */ 1557 /* 0x44 */ KEY_KP_7, 1558 /* 0x45 */ KEY_KP_8, 1559 /* 0x46 */ KEY_KP_9, 1560 /* 0x47 */ KEY_KP_Minus, 1561 /* 0x48 */ KEY_L7, /* open */ 1562 /* 0x49 */ KEY_L8, /* paste */ 1563 /* 0x4a */ KEY_End, 1564 /* 0x4b */ KEY_NOTUSED, 1565 /* 0x4c */ KEY_LCtrl, 1566 /* 0x4d */ KEY_A, 1567 /* 0x4e */ KEY_S, 1568 /* 0x4f */ KEY_D, 1569 /* 0x50 */ KEY_F, 1570 /* 0x51 */ KEY_G, 1571 /* 0x52 */ KEY_H, 1572 /* 0x53 */ KEY_J, 1573 /* 0x54 */ KEY_K, 1574 /* 0x55 */ KEY_L, 1575 /* 0x56 */ KEY_SemiColon, 1576 /* 0x57 */ KEY_Quote, 1577 /* 0x58 */ KEY_BSlash, 1578 /* 0x59 */ KEY_Enter, 1579 /* 0x5a */ KEY_KP_Enter, 1580 /* 0x5b */ KEY_KP_4, 1581 /* 0x5c */ KEY_KP_5, 1582 /* 0x5d */ KEY_KP_6, 1583 /* 0x5e */ KEY_KP_0, 1584 /* 0x5f */ KEY_L9, /* find */ 1585 /* 0x60 */ KEY_PgUp, 1586 /* 0x61 */ KEY_L10, /* cut */ 1587 /* 0x62 */ KEY_NumLock, 1588 /* 0x63 */ KEY_ShiftL, 1589 /* 0x64 */ KEY_Z, 1590 /* 0x65 */ KEY_X, 1591 /* 0x66 */ KEY_C, 1592 /* 0x67 */ KEY_V, 1593 /* 0x68 */ KEY_B, 1594 /* 0x69 */ KEY_N, 1595 /* 0x6a */ KEY_M, 1596 /* 0x6b */ KEY_Comma, 1597 /* 0x6c */ KEY_Period, 1598 /* 0x6d */ KEY_Slash, 1599 /* 0x6e */ KEY_ShiftR, 1600 /* 0x6f */ KEY_NOTUSED, /* linefeed */ 1601 /* 0x70 */ KEY_KP_1, 1602 /* 0x71 */ KEY_KP_2, 1603 /* 0x72 */ KEY_KP_3, 1604 /* 0x73 */ KEY_NOTUSED, 1605 /* 0x74 */ KEY_NOTUSED, 1606 /* 0x75 */ KEY_NOTUSED, 1607 /* 0x76 */ KEY_Help, /* help */ 1608 /* 0x77 */ KEY_CapsLock, 1609 /* 0x78 */ KEY_LMeta, 1610 /* 0x79 */ KEY_Space, 1611 /* 0x7a */ KEY_RMeta, 1612 /* 0x7b */ KEY_PgDown, 1613 /* 0x7c */ KEY_Less, /* < > on some keyboards */ 1614 /* 0x7d */ KEY_KP_Plus, 1615 /* 0x7e */ KEY_NOTUSED, 1616 /* 0x7f */ KEY_NOTUSED 1617}; 1618#define WS_SUN_MAP_SIZE (sizeof(wsSunMap)/sizeof(*wsSunMap)) 1619 1620static 1621TransMapRec wsSun = { 1622 0, 1623 WS_SUN_MAP_SIZE, 1624 wsSunMap 1625}; 1626 1627#endif /* WSCONS_SUPPORT */ 1628 1629/*ARGSUSED*/ 1630 1631/* 1632 * KbdGetMapping -- 1633 * Get the national keyboard mapping. The keyboard type is set, a new map 1634 * and the modifiermap is computed. 1635 */ 1636 1637void 1638KbdGetMapping (InputInfoPtr pInfo, KeySymsPtr pKeySyms, CARD8 *pModMap) 1639{ 1640 KbdDevPtr pKbd = (KbdDevPtr) pInfo->private; 1641 KeySym *k; 1642 int i; 1643 1644#ifndef __bsdi__ 1645 switch (pKbd->consType) { 1646 1647/* 1648 * XXX wscons has no GIO_KEYMAP 1649 */ 1650#if (defined (SYSCONS_SUPPORT) || defined (PCVT_SUPPORT)) && defined(GIO_KEYMAP) 1651 case SYSCONS: 1652 case PCVT: 1653 { 1654 keymap_t keymap; 1655 1656 if (ioctl(pInfo->fd, GIO_KEYMAP, &keymap) != -1) { 1657 for (i = 0; i < keymap.n_keys && i < NUM_KEYCODES; i++) 1658 if (remap[i]) { 1659 k = map + (remap[i] << 2); 1660 k[0] = KD_GET_ENTRY(i,0); /* non-shifed */ 1661 k[1] = KD_GET_ENTRY(i,1); /* shifted */ 1662 k[2] = KD_GET_ENTRY(i,4); /* alt */ 1663 k[3] = KD_GET_ENTRY(i,5); /* alt - shifted */ 1664 if (k[3] == k[2]) k[3] = NoSymbol; 1665 if (k[2] == k[1]) k[2] = NoSymbol; 1666 if (k[1] == k[0]) k[1] = NoSymbol; 1667 if (k[0] == k[2] && k[1] == k[3]) 1668 k[2] = k[3] = NoSymbol; 1669 } 1670 } 1671 } 1672 break; 1673#endif /* SYSCONS || PCVT */ 1674 1675 } 1676#endif /* !bsdi */ 1677 1678 /* 1679 * compute the modifier map 1680 */ 1681 for (i = 0; i < MAP_LENGTH; i++) 1682 pModMap[i] = NoSymbol; /* make sure it is restored */ 1683 1684 for (k = map, i = MIN_KEYCODE; 1685 i < (NUM_KEYCODES + MIN_KEYCODE); 1686 i++, k += 4) 1687 1688 switch(*k) { 1689 1690 case XK_Shift_L: 1691 case XK_Shift_R: 1692 pModMap[i] = ShiftMask; 1693 break; 1694 1695 case XK_Control_L: 1696 case XK_Control_R: 1697 pModMap[i] = ControlMask; 1698 break; 1699 1700 case XK_Caps_Lock: 1701 pModMap[i] = LockMask; 1702 break; 1703 1704 case XK_Alt_L: 1705 case XK_Alt_R: 1706 pModMap[i] = AltMask; 1707 break; 1708 1709 case XK_Num_Lock: 1710 pModMap[i] = NumLockMask; 1711 break; 1712 1713 case XK_Scroll_Lock: 1714 pModMap[i] = ScrollLockMask; 1715 break; 1716 1717 /* kana support */ 1718 case XK_Kana_Lock: 1719 case XK_Kana_Shift: 1720 pModMap[i] = KanaMask; 1721 break; 1722 1723 /* alternate toggle for multinational support */ 1724 case XK_Mode_switch: 1725 pModMap[i] = AltLangMask; 1726 break; 1727 1728 } 1729 1730 pKeySyms->map = map; 1731 pKeySyms->mapWidth = GLYPHS_PER_KEY; 1732 pKeySyms->minKeyCode = MIN_KEYCODE; 1733 pKeySyms->maxKeyCode = MAX_KEYCODE; 1734 1735 switch(pKbd->consType) { 1736#ifdef SYSCONS_SUPPORT 1737 case SYSCONS: 1738 if (pKbd->CustomKeycodes) 1739 pKbd->scancodeMap = &sysconsCODE; 1740 else 1741 pKbd->RemapScanCode = ATScancode; 1742 break; 1743#endif 1744#if defined(PCCONS_SUPPORT) || defined (PCVT_SUPPORT) 1745 case PCCONS: 1746 case PCVT: 1747 pKbd->RemapScanCode = ATScancode; 1748 break; 1749#endif 1750#ifdef WSCONS_SUPPORT 1751 case WSCONS: 1752 if (!pKbd->isConsole) { 1753 switch (pKbd->wsKbdType) { 1754 case WSKBD_TYPE_PC_XT: 1755 case WSKBD_TYPE_PC_AT: 1756 pKbd->scancodeMap = &wsXt; 1757 break; 1758 case WSKBD_TYPE_USB: 1759#ifdef WSKBD_TYPE_MAPLE 1760 case WSKBD_TYPE_MAPLE: 1761#endif 1762 pKbd->scancodeMap = &wsUsb; 1763 break; 1764#ifdef WSKBD_TYPE_ADB 1765 case WSKBD_TYPE_ADB: 1766 pKbd->scancodeMap = &wsAdb; 1767 break; 1768#endif 1769#ifdef WSKBD_TYPE_AMIGA 1770 case WSKBD_TYPE_AMIGA: 1771 pKbd->scancodeMap = &wsAmiga; 1772 break; 1773#endif 1774#ifdef WSKBD_TYPE_LK201 1775 case WSKBD_TYPE_LK201: 1776 pKbd->scancodeMap = &wsLk201; 1777 break; 1778#endif 1779#ifdef WSKBD_TYPE_LK401 1780 case WSKBD_TYPE_LK401: 1781 pKbd->scancodeMap = &wsLk401; 1782 break; 1783#endif 1784#ifdef WSKBD_TYPE_SUN 1785#ifdef WSKBD_TYPE_SUN5 1786 case WSKBD_TYPE_SUN5: 1787#endif 1788 case WSKBD_TYPE_SUN: 1789 pKbd->scancodeMap = &wsSun; 1790 break; 1791#endif 1792 default: 1793 ErrorF("Unknown wskbd type %d\n", pKbd->wsKbdType); 1794 } 1795 } else { 1796 pKbd->RemapScanCode = ATScancode; 1797 } 1798 break; 1799#endif 1800 } 1801 return; 1802} 1803