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