/* 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; }