/* $Id: Exp $ *************************************************************************** X server for LibGLTEX - Handling of input devices (keyboard) Copyright (C) 2002 Christopher Alexander North-Keys http://www.talisman.org/~erlkonig/ *************************************************************************** */ #include "X.h" #include "inputstr.h" #include "input.h" #include "mi.h" #include "keysym.h" #include "keysymdef.h" #include "keymap.h" /* in this dir */ #include "keyboard.h" /* in this dir */ static unsigned long int xgltexCodemap[NUM_KEYCODES] = { 100, /* arbitrary code in place of, eventually, a list of Z sym-keycodes */ }; Bool LegalModifier(unsigned int key, DevicePtr pDev) { return TRUE; } int xgltexKeybdProc(DeviceIntPtr pDevice, int onoff) { KeySymsRec keySyms; CARD8 modMap[MAP_LENGTH]; DevicePtr pDev = (DevicePtr)pDevice; KeySym *ksym; int i; switch (onoff) { case DEVICE_INIT: /* Clear map */ for (i = 0; i < MAP_LENGTH; i++) { modMap[i] = NoSymbol; } for (ksym = xgltexKeymap, i = MIN_KEYCODE; i < (NUM_KEYCODES + MIN_KEYCODE); i++, ksym += 4) { switch (*ksym) { case XK_Shift_L: case XK_Shift_R: modMap[i] = ShiftMask; break; case XK_Control_L: case XK_Control_R: modMap[i] = ControlMask; break; case XK_Caps_Lock: modMap[i] = LockMask; break; case XK_Alt_L: case XK_Alt_R: modMap[i] = AltMask; break; case XK_Num_Lock: modMap[i] = NumLockMask; break; case XK_Scroll_Lock: modMap[i] = ScrollLockMask; break; case XK_Kana_Lock: case XK_Kana_Shift: modMap[i] = KanaMask; break; case XK_Mode_switch: modMap[i] = AltLangMask; break; } } keySyms.minKeyCode = MIN_KEYCODE; keySyms.maxKeyCode = MAX_KEYCODE; keySyms.mapWidth = GLYPHS_PER_KEY; keySyms.map = xgltexKeymap; InitKeyboardDeviceStruct(pDev, &keySyms, modMap, (BellProcPtr)NoopDDA, (KbdCtrlProcPtr)NoopDDA); break; case DEVICE_ON: pDev->on = TRUE; break; case DEVICE_OFF: pDev->on = FALSE; break; case DEVICE_CLOSE: pDev->on = FALSE; break; } return Success; }