/* xeroxkb.c" */ #include "X.h" #include "Xmd.h" #include "input.h" #include "keynames.h" #include "keysym.h" #include "os.h" #include "opaque.h" #include "misc.h" #define INDEX(in) (((in) - MIN_XEROX_KEY) * XEROX_GLYPHS_PER_KEY) void InitXeroxMap(pKeySyms, pModMap) KeySymsPtr pKeySyms; ModifierMapPtr pModMap; { int i; KeySym *map; pModMap->lock = KEY_LOCK; pModMap->shiftA = KEY_LSHIFT; pModMap->shiftB = KEY_RSHIFT; pModMap->controlA = KEY_PROPS; pModMap->controlB = NoSymbol; pModMap->mod1A = KEY_MOVE; pModMap->mod1B = NoSymbol; pModMap->mod2B = NoSymbol; pModMap->mod3B = NoSymbol; pModMap->mod4B = NoSymbol; pModMap->mod5B = NoSymbol; pModMap->mod2A = NoSymbol; pModMap->mod3A = NoSymbol; pModMap->mod4A = NoSymbol; pModMap->mod5A = NoSymbol; map = (KeySym *)Xalloc(sizeof(KeySym)* (MAP_LENGTH * XEROX_GLYPHS_PER_KEY)); pKeySyms->minKeyCode = MIN_XEROX_KEY; pKeySyms->maxKeyCode = MAX_XEROX_KEY; pKeySyms->mapWidth = XEROX_GLYPHS_PER_KEY; pKeySyms->map = map; for( i=0; i<( MAP_LENGTH * XEROX_GLYPHS_PER_KEY ); i++ ) map[i] = NoSymbol; map[INDEX(KEY_5)] = XK_5; map[INDEX(KEY_5)+1] = XK_percent; map[INDEX(KEY_4)] = XK_4; map[INDEX(KEY_4)+1] = XK_dollar; map[INDEX(KEY_6)] = XK_6; map[INDEX(KEY_6)+1] = XK_asciitilde; map[INDEX(KEY_E)] = XK_E; map[INDEX(KEY_7)] = XK_7; map[INDEX(KEY_7)] = XK_ampersand; map[INDEX(KEY_D)] = XK_D; map[INDEX(KEY_U)] = XK_U; map[INDEX(KEY_V)] = XK_V; map[INDEX(KEY_0)] = XK_0; map[INDEX(KEY_0)+1] = XK_parenright; map[INDEX(KEY_K)] = XK_K; map[INDEX(KEY_DASH)] = XK_minus; map[INDEX(KEY_DASH)+1] = XK_underscore; map[INDEX(KEY_P)] = XK_P; map[INDEX(KEY_SLASH)] = XK_slash; map[INDEX(KEY_SLASH)+1] = XK_question; map[INDEX(KEY_BSLASH)] = XK_backslash; map[INDEX(KEY_BSLASH)+1] = XK_bar; map[INDEX(KEY_BS)] = XK_BackSpace; map[INDEX(KEY_2)] = XK_2; map[INDEX(KEY_2)+1] = XK_at; map[INDEX(KEY_3)] = XK_3; map[INDEX(KEY_3)] = XK_numbersign; map[INDEX(KEY_W)] = XK_W; map[INDEX(KEY_Q)] = XK_Q; map[INDEX(KEY_S)] = XK_S; map[INDEX(KEY_A)] = XK_A; map[INDEX(KEY_9)] = XK_9; map[INDEX(KEY_9)+1] = XK_parenleft; map[INDEX(KEY_I)] = XK_I; map[INDEX(KEY_X)] = XK_X; map[INDEX(KEY_O)] = XK_O; map[INDEX(KEY_L)] = XK_L; map[INDEX(KEY_COMMA)] = XK_comma; map[INDEX(KEY_COMMA)+1] = XK_less; map[INDEX(KEY_RQUOTE)] = XK_quoteright; map[INDEX(KEY_RQUOTE)+1] = XK_quotedbl; map[INDEX(KEY_RBRAC)] = XK_bracketright; map[INDEX(KEY_RBRAC)+1] = XK_braceright; map[INDEX(KEY_1)] = XK_1; map[INDEX(KEY_1)+1] = XK_exclam; map[INDEX(KEY_ESC)] = XK_Escape; map[INDEX(KEY_TAB)] = XK_Tab; map[INDEX(KEY_F)] = XK_F; map[INDEX(KEY_PROPS)] = XK_Control_L; map[INDEX(KEY_C)] = XK_C; map[INDEX(KEY_J)] = XK_J; map[INDEX(KEY_B)] = XK_B; map[INDEX(KEY_Z)] = XK_Z; map[INDEX(KEY_LSHIFT)] = XK_Shift_L; map[INDEX(KEY_PERIOD)] = XK_period; map[INDEX(KEY_PERIOD)+1] = XK_greater; map[INDEX(KEY_SEMICOLON)] = XK_semicolon; map[INDEX(KEY_SEMICOLON)+1] = XK_colon; map[INDEX(KEY_LF)] = XK_Linefeed; map[INDEX(KEY_RQUOTE)] = XK_quoteleft; map[INDEX(KEY_RQUOTE)+1] = XK_quotedbl; map[INDEX(KEY_R)] = XK_R; map[INDEX(KEY_T)] = XK_T; map[INDEX(KEY_G)] = XK_G; map[INDEX(KEY_Y)] = XK_Y; map[INDEX(KEY_H)] = XK_H; map[INDEX(KEY_8)] = XK_8; map[INDEX(KEY_8)+1] = XK_asterisk; map[INDEX(KEY_N)] = XK_N; map[INDEX(KEY_M)] = XK_M; map[INDEX(KEY_LOCK)] = XK_Caps_Lock; map[INDEX(KEY_SPACE)] = XK_space; map[INDEX(KEY_LBRAC)] = XK_bracketleft; map[INDEX(KEY_LBRAC)+1] = XK_braceleft; map[INDEX(KEY_EQUALS)] = XK_equal; map[INDEX(KEY_EQUALS)+1] = XK_plus; map[INDEX(KEY_RSHIFT)] = XK_Shift_R; map[INDEX(KEY_F1)] = XK_F1; map[INDEX(KEY_F2)] = XK_F2; map[INDEX(KEY_F3)] = XK_F3; map[INDEX(KEY_F4)] = XK_F4; map[INDEX(KEY_F5)] = XK_F5; map[INDEX(KEY_F6)] = XK_F6; map[INDEX(KEY_F7)] = XK_F7; map[INDEX(KEY_F8)] = XK_F8; } #undef INDEX Bool LegalModifier(key) BYTE key; { if ((key==KEY_LOCK)||(key==KEY_RSHIFT)||(key==KEY_MOVE)||(key==KEY_LSHIFT)) return TRUE; return FALSE; }