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