home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The Fred Fish Collection 1.5
/
ffcollection-1-5-1992-11.iso
/
ff_disks
/
100-199
/
ff193.lzh
/
KeyMapEd
/
Source
/
KME_UpdateDisplay.c
< prev
next >
Wrap
C/C++ Source or Header
|
1989-03-13
|
20KB
|
811 lines
/*
* Key Map Editor ver 1.0
* Update Display
*
* parameters: GadgetList - pointer to linked list of Gadgets to update
* KeyMapNode - KeyMapNode pointer
* Option - Update Options (TRUE = all keys, FALSE = 1 key)
*
* by: Tim Friest
* on: January 2, 1989
*/
#include "KME_Includes.h"
#include "KME_Protos.h"
#include "KME_Defs.h"
#include "KME_Globals.h"
extern char GetKeyVal(UBYTE, ULONG, int);
extern int GetKeyStr(char *, UBYTE, UBYTE *, int);
extern char GetKeyDead(UBYTE, UBYTE *, int, UBYTE *);
extern struct Gadget CloseBracketGadget;
void UpdateDisplay(Gadget, KeyMapNode, UpdateAll)
struct Gadget *Gadget;
struct KeyMapNode *KeyMapNode;
int UpdateAll;
{
struct Gadget *Gad;
USHORT KeyCode;
struct KeyMap *KeyMap;
struct HalfKeyMap *HalfKeyMap;
int Capsable;
static char buff[256];
static struct IntuiText buffIText = {
1, 0, JAM1, 0, 0, NULL, buff, NULL
};
int len;
UBYTE color;
struct IntuiText *IntuiText;
int GadWidth;
KeyMap = &KeyMapNode->kn_KeyMap;
Gad = Gadget;
KeyCode = Gad->GadgetID;
do {
if (KeyCode < 0x40)
HalfKeyMap = (struct HalfKeyMap *)KeyMap;
else {
HalfKeyMap = (struct HalfKeyMap *)&KeyMap->km_HiKeyMapTypes;
KeyCode -= 0x40;
}
len = 0;
color = 1;
Capsable = HalfKeyMap->Capsable[(KeyCode/8)] & (1<<(KeyCode % 8));
switch (HalfKeyMap->KeyMapTypes[KeyCode] & (KCF_DEAD|KCF_STRING|KCF_NOP)) {
case KC_NOQUAL:
buff[0] = GetKeyVal(
HalfKeyMap->KeyMapTypes[KeyCode],
HalfKeyMap->KeyMap[KeyCode],
Capsable);
buff[1] = '\x00';
len = 2;
break;
case KCF_STRING:
len = GetKeyStr(buff,
HalfKeyMap->KeyMapTypes[KeyCode],
(UBYTE *)HalfKeyMap->KeyMap[KeyCode],
Capsable);
break;
case KCF_DEAD:
buff[0] = GetKeyDead(
HalfKeyMap->KeyMapTypes[KeyCode],
(UBYTE *)HalfKeyMap->KeyMap[KeyCode],
Capsable, &color);
buff[1] = '\x00';
len = 2;
break;
case KCF_NOP:
default:
len = 0;
} /* switch */
if (len > 0) {
GadWidth = Gad->Width;
if (Gad->Activation & BOOLEXTEND)
GadWidth -= 22;
while ((len > 0) && (IntuiTextLength(&buffIText) > GadWidth))
buff[--len] = '\x00';
if (Gad->GadgetText == NULL) {
IntuiText = (struct IntuiText *)AllocMem(sizeof(struct IntuiText), MEMF_CLEAR);
if (IntuiText != NULL) {
IntuiText->IText = (UBYTE *)AllocMem(len, 0);
IntuiText->FrontPen = 1;
IntuiText->BackPen = 0;
IntuiText->DrawMode = JAM2;
}
}
else {
IntuiText = Gad->GadgetText;
if (IntuiText->IText == NULL)
IntuiText->IText = (UBYTE *)AllocMem(len, 0);
else
if (strlen(IntuiText->IText) != len) {
FreeMem(IntuiText->IText, strlen(IntuiText->IText)+1);
IntuiText->IText = (UBYTE *)AllocMem(len, 0);
}
}
if (IntuiText != NULL) {
if (IntuiText->IText != NULL) {
if (buff[0] != '\x00') {
strcpy(IntuiText->IText, buff);
IntuiText->FrontPen = color;
IntuiText->BackPen = 0;
}
else {
IntuiText->IText[0] = '@';
IntuiText->IText[1] = '\x00';
IntuiText->FrontPen = 0;
IntuiText->BackPen = 1;
}
if (buff[0] == ' ')
IntuiText->BackPen = 1;
IntuiText->LeftEdge = (GadWidth - IntuiTextLength(IntuiText))/2;
if (Gad->Activation & BOOLEXTEND)
IntuiText->LeftEdge += 22;
Gad->GadgetText = IntuiText;
FlagResource(RF_GadgetText);
}
else {
FreeMem(IntuiText, sizeof(struct IntuiText));
Gad->GadgetText = NULL;
}
}
}
else
if (Gad->GadgetText != NULL)
if (Gad->GadgetText->IText != NULL) {
FreeMem(Gad->GadgetText->IText, strlen(Gad->GadgetText->IText)+1);
Gad->GadgetText->IText = NULL;
}
} while ((Gad = Gad->NextGadget) && ((KeyCode = Gad->GadgetID) < 0x60) && UpdateAll);
if (CheckResource(RF_Window))
if (UpdateAll)
RefreshGList(GadgetList, KeyMapEdWindow, NULL, DefinableKeys);
else {
RefreshGList(Gadget, KeyMapEdWindow, NULL, 1);
if (Gadget->GadgetType == BOOLGADGET) /* kludge to fix return key overwriting this gadget */
RefreshGList(&CloseBracketGadget, KeyMapEdWindow, NULL, 1);
}
}
/*
* Get Key Value
*
* parameters: KeyType - Key Type Flags
* KeyMap - Longword Key Map Value
* KeyCapsable - Is key Caps Lockable
* returns: Key Value
*/
char GetKeyVal(KeyType, KeyMap, KeyCapsable)
UBYTE KeyType;
ULONG KeyMap;
int KeyCapsable;
{
char KeyVal = '\x00';
ULONG CurrentStatus;
CurrentStatus = StatusFlags;
if (CheckFlag(SF_CapsLock))
if (KeyCapsable)
CurrentStatus |= SF_Shift;
switch(KeyType & KC_VANILLA) {
case KC_NOQUAL:
KeyVal = KeyMap & 0x000000FF;
break;
case KCF_SHIFT:
if (!(CurrentStatus & SF_Shift))
KeyVal = KeyMap & 0x000000FF;
else
KeyVal = ((KeyMap & 0x0000FF00)>>8);
break;
case KCF_ALT:
if (!(CurrentStatus & SF_Alt))
KeyVal = KeyMap & 0x000000FF;
else
KeyVal = ((KeyMap & 0x0000FF00)>>8);
break;
case KCF_CONTROL:
if (!(CurrentStatus & SF_Control))
KeyVal = KeyMap & 0x000000FF;
else
KeyVal = ((KeyMap & 0x0000FF00)>>8);
break;
case KCF_ALT|KCF_SHIFT:
switch (CurrentStatus & (SF_Shift|SF_Alt)) {
case 0: /* Shift and Alt are not pressed */
KeyVal = KeyMap & 0x000000FF;
break;
case SF_Shift:
KeyVal = ((KeyMap & 0x0000FF00)>>8);
break;
case SF_Alt:
KeyVal = ((KeyMap & 0x00FF0000)>>16);
break;
case SF_Shift|SF_Alt:
KeyVal = ((KeyMap & 0xFF000000)>>24);
} /* switch */
break;
case KCF_CONTROL|KCF_SHIFT:
switch (CurrentStatus & (SF_Shift|SF_Control)) {
case 0: /* Shift and Control are not pressed */
KeyVal = KeyMap & 0x000000FF;
break;
case SF_Shift:
KeyVal = ((KeyMap & 0x0000FF00)>>8);
break;
case SF_Control:
KeyVal = ((KeyMap & 0x00FF0000)>>16);
break;
case SF_Shift|SF_Control:
KeyVal = ((KeyMap & 0xFF000000)>>24);
} /* switch */
break;
case KCF_CONTROL|KCF_ALT:
switch (CurrentStatus & (SF_Control|SF_Alt)) {
case 0: /* Control and Alt are not pressed */
KeyVal = KeyMap & 0x000000FF;
break;
case SF_Alt:
KeyVal = ((KeyMap & 0x0000FF00)>>8);
break;
case SF_Control:
KeyVal = ((KeyMap & 0x00FF0000)>>16);
break;
case SF_Alt|SF_Control:
KeyVal = ((KeyMap & 0xFF000000)>>24);
} /* switch */
break;
case KC_VANILLA:
switch (CurrentStatus & (SF_Shift|SF_Alt)) {
case 0: /* Shift and Alt are not pressed */
KeyVal = KeyMap & 0x000000FF;
break;
case SF_Shift:
KeyVal = ((KeyMap & 0x0000FF00)>>8);
break;
case SF_Alt:
KeyVal = ((KeyMap & 0x00FF0000)>>16);
break;
case SF_Shift|SF_Alt:
KeyVal = ((KeyMap & 0xFF000000)>>24);
} /* switch */
if (CurrentStatus & SF_Control)
if ((KeyMap & 0x00000040) && (!((CurrentStatus & SF_Shift) && (KeyMap & 0x00000040))))
KeyVal = KeyMap & 0x0000009F;
else
if (KeyMap & 0x00004000)
KeyVal = ((KeyMap & 0x00009F00)>>8);
} /* switch */
return(KeyVal);
}
/*
* Get Key String
*
* parameters: KeyStr - String to receive key's string
* KeyType - Key Type Flags
* KeyMap - Longword Key Map Value
* KeyCapsable - Is key Caps Lockable
* returns: String length
*/
int GetKeyStr(KeyStr, KeyType, KeyMap, KeyCapsable)
char *KeyStr;
UBYTE KeyType;
UBYTE *KeyMap;
int KeyCapsable;
{
ULONG CurrentStatus;
int len = 0;
CurrentStatus = StatusFlags;
if (CheckFlag(SF_CapsLock))
if (KeyCapsable)
CurrentStatus |= SF_Shift;
switch(KeyType & KC_VANILLA) {
case KC_NOQUAL:
len = *KeyMap;
memcpy(KeyStr, (KeyMap + *(KeyMap+1)), len);
break;
case KCF_SHIFT:
if (!(CurrentStatus & SF_Shift)) {
len = *KeyMap;
memcpy(KeyStr, (KeyMap + *(KeyMap+1)), len);
}
else {
len = *(KeyMap+2);
memcpy(KeyStr, (KeyMap + *(KeyMap+3)), len);
}
break;
case KCF_ALT:
if (!(CurrentStatus & SF_Alt)) {
len = *KeyMap;
memcpy(KeyStr, (KeyMap + *(KeyMap+1)), len);
}
else {
len = *(KeyMap+2);
memcpy(KeyStr, (KeyMap + *(KeyMap+3)), len);
}
break;
case KCF_CONTROL:
if (!(CurrentStatus & SF_Control)) {
len = *KeyMap;
memcpy(KeyStr, (KeyMap + *(KeyMap+1)), len);
}
else {
len = *(KeyMap+2);
memcpy(KeyStr, (KeyMap + *(KeyMap+3)), len);
}
break;
case KCF_ALT|KCF_SHIFT:
switch (CurrentStatus & (SF_Shift|SF_Alt)) {
case 0: /* Shift and Alt are not pressed */
len = *KeyMap;
memcpy(KeyStr, (KeyMap + *(KeyMap+1)), len);
break;
case SF_Shift:
len = *(KeyMap+2);
memcpy(KeyStr, (KeyMap + *(KeyMap+3)), len);
break;
case SF_Alt:
len = *(KeyMap+4);
memcpy(KeyStr, (KeyMap + *(KeyMap+5)), len);
break;
case SF_Shift|SF_Alt:
len = *(KeyMap+6);
memcpy(KeyStr, (KeyMap + *(KeyMap+7)), len);
} /* switch */
break;
case KCF_CONTROL|KCF_SHIFT:
switch (CurrentStatus & (SF_Shift|SF_Control)) {
case 0: /* Shift and Control are not pressed */
len = *KeyMap;
memcpy(KeyStr, (KeyMap + *(KeyMap+1)), len);
break;
case SF_Shift:
len = *(KeyMap+2);
memcpy(KeyStr, (KeyMap + *(KeyMap+3)), len);
break;
case SF_Control:
len = *(KeyMap+4);
memcpy(KeyStr, (KeyMap + *(KeyMap+5)), len);
break;
case SF_Shift|SF_Control:
len = *(KeyMap+6);
memcpy(KeyStr, (KeyMap + *(KeyMap+7)), len);
} /* switch */
break;
case KCF_CONTROL|KCF_ALT:
switch (CurrentStatus & (SF_Control|SF_Alt)) {
case 0: /* Alt and Control are not pressed */
len = *KeyMap;
memcpy(KeyStr, (KeyMap + *(KeyMap+1)), len);
break;
case SF_Alt:
len = *(KeyMap+2);
memcpy(KeyStr, (KeyMap + *(KeyMap+3)), len);
break;
case SF_Control:
len = *(KeyMap+4);
memcpy(KeyStr, (KeyMap + *(KeyMap+5)), len);
break;
case SF_Alt|SF_Control:
len = *(KeyMap+6);
memcpy(KeyStr, (KeyMap + *(KeyMap+7)), len);
} /* switch */
break;
case KC_VANILLA:
switch (CurrentStatus & (SF_Shift|SF_Control|SF_Alt)) {
case 0: /* Shift, Alt and Control are not pressed */
len = *KeyMap;
memcpy(KeyStr, (KeyMap + *(KeyMap+1)), len);
break;
case SF_Shift:
len = *(KeyMap+2);
memcpy(KeyStr, (KeyMap + *(KeyMap+3)), len);
break;
case SF_Alt:
len = *(KeyMap+4);
memcpy(KeyStr, (KeyMap + *(KeyMap+5)), len);
break;
case SF_Shift|SF_Alt:
len = *(KeyMap+6);
memcpy(KeyStr, (KeyMap + *(KeyMap+7)), len);
break;
case SF_Control:
len = *(KeyMap+8);
memcpy(KeyStr, (KeyMap + *(KeyMap+9)), len);
break;
case SF_Shift|SF_Control:
len = *(KeyMap+10);
memcpy(KeyStr, (KeyMap + *(KeyMap+11)), len);
break;
case SF_Control|SF_Alt:
len = *(KeyMap+12);
memcpy(KeyStr, (KeyMap + *(KeyMap+13)), len);
break;
case SF_Shift|SF_Control|SF_Alt:
len = *(KeyMap+14);
memcpy(KeyStr, (KeyMap + *(KeyMap+15)), len);
} /* switch */
} /* switch */
if (len > 0)
KeyStr[len++] = '\x00';
return(len);
}
/*
* Get Key Dead
*
* parameters: KeyType - Key Type Flags
* KeyMap - Longword Key Map Value
* KeyCapsable - Is key Caps Lockable
* returns: Key Value
*/
char GetKeyDead(KeyType, KeyMap, KeyCapsable, color)
UBYTE KeyType;
UBYTE *KeyMap;
int KeyCapsable;
UBYTE *color;
{
static char Accents[] = {
'\xB4', '`', '^', '~', '\xA8'
};
ULONG CurrentStatus;
char KeyVal = '\x00';
CurrentStatus = StatusFlags;
if (CheckFlag(SF_CapsLock))
if (KeyCapsable)
CurrentStatus |= SF_Shift;
*color = 1;
switch (KeyType & KC_VANILLA) {
case KC_NOQUAL:
switch (*KeyMap) {
case KC_NOQUAL:
KeyVal = *(KeyMap+1);
break;
case DPF_MOD:
KeyVal = *(KeyMap + *(KeyMap+1));
break;
case DPF_DEAD:
KeyVal = Accents[*(KeyMap+1)-1];
*color = 3;
} /* switch */
break;
case KCF_SHIFT:
if (!(CurrentStatus & SF_Shift))
switch (*KeyMap) {
case KC_NOQUAL:
KeyVal = *(KeyMap+1);
break;
case DPF_MOD:
KeyVal = *(KeyMap + *(KeyMap+1));
break;
case DPF_DEAD:
KeyVal = Accents[*(KeyMap+1)-1];
*color = 3;
} /* switch */
else
switch (*(KeyMap+2)) {
case KC_NOQUAL:
KeyVal = *(KeyMap+3);
break;
case DPF_MOD:
KeyVal = *(KeyMap + *(KeyMap+3));
break;
case DPF_DEAD:
KeyVal = Accents[*(KeyMap+3)-1];
*color = 3;
} /* switch */
break;
case KCF_ALT:
if (!(CurrentStatus & SF_Alt))
switch (*KeyMap) {
case KC_NOQUAL:
KeyVal = *(KeyMap+1);
break;
case DPF_MOD:
KeyVal = *(KeyMap + *(KeyMap+1));
break;
case DPF_DEAD:
KeyVal = Accents[*(KeyMap+1)-1];
*color = 3;
} /* switch */
else
switch (*(KeyMap+2)) {
case KC_NOQUAL:
KeyVal = *(KeyMap+3);
break;
case DPF_MOD:
KeyVal = *(KeyMap + *(KeyMap+3));
break;
case DPF_DEAD:
KeyVal = Accents[*(KeyMap+3)-1];
*color = 3;
} /* switch */
break;
case KCF_CONTROL:
if (!(CurrentStatus & SF_Control))
switch (*KeyMap) {
case KC_NOQUAL:
KeyVal = *(KeyMap+1);
break;
case DPF_MOD:
KeyVal = *(KeyMap + *(KeyMap+1));
break;
case DPF_DEAD:
KeyVal = Accents[*(KeyMap+1)-1];
*color = 3;
} /* switch */
else
switch (*(KeyMap+2)) {
case KC_NOQUAL:
KeyVal = *(KeyMap+3);
break;
case DPF_MOD:
KeyVal = *(KeyMap + *(KeyMap+3));
break;
case DPF_DEAD:
KeyVal = Accents[*(KeyMap+3)-1];
*color = 3;
} /* switch */
break;
case KCF_SHIFT|KCF_ALT:
switch (CurrentStatus & (SF_Shift|SF_Alt)) {
case 0: /* Shift and Alt not selected */
switch (*KeyMap) {
case KC_NOQUAL:
KeyVal = *(KeyMap+1);
break;
case DPF_MOD:
KeyVal = *(KeyMap + *(KeyMap+1));
break;
case DPF_DEAD:
KeyVal = Accents[*(KeyMap+1)-1];
*color = 3;
} /* switch */
break;
case SF_Shift:
switch (*(KeyMap+2)) {
case KC_NOQUAL:
KeyVal = *(KeyMap+3);
break;
case DPF_MOD:
KeyVal = *(KeyMap + *(KeyMap+3));
break;
case DPF_DEAD:
KeyVal = Accents[*(KeyMap+3)-1];
*color = 3;
} /* switch */
break;
case SF_Alt:
switch (*(KeyMap+4)) {
case KC_NOQUAL:
KeyVal = *(KeyMap+5);
break;
case DPF_MOD:
KeyVal = *(KeyMap + *(KeyMap+5));
break;
case DPF_DEAD:
KeyVal = Accents[*(KeyMap+5)-1];
*color = 3;
} /* switch */
break;
case SF_Shift|SF_Alt:
switch (*(KeyMap+6)) {
case KC_NOQUAL:
KeyVal = *(KeyMap+7);
break;
case DPF_MOD:
KeyVal = *(KeyMap + *(KeyMap+7));
break;
case DPF_DEAD:
KeyVal = Accents[*(KeyMap+7)-1];
*color = 3;
} /* switch */
} /* switch */
break;
case KCF_SHIFT|KCF_CONTROL:
switch (CurrentStatus & (SF_Shift|SF_Control)) {
case 0: /* Shift and Control not selected */
switch (*KeyMap) {
case KC_NOQUAL:
KeyVal = *(KeyMap+1);
break;
case DPF_MOD:
KeyVal = *(KeyMap + *(KeyMap+1));
break;
case DPF_DEAD:
KeyVal = Accents[*(KeyMap+1)-1];
*color = 3;
} /* switch */
break;
case SF_Shift:
switch (*(KeyMap+2)) {
case KC_NOQUAL:
KeyVal = *(KeyMap+3);
break;
case DPF_MOD:
KeyVal = *(KeyMap + *(KeyMap+3));
break;
case DPF_DEAD:
KeyVal = Accents[*(KeyMap+3)-1];
*color = 3;
} /* switch */
break;
case SF_Control:
switch (*(KeyMap+4)) {
case KC_NOQUAL:
KeyVal = *(KeyMap+5);
break;
case DPF_MOD:
KeyVal = *(KeyMap + *(KeyMap+5));
break;
case DPF_DEAD:
KeyVal = Accents[*(KeyMap+5)-1];
*color = 3;
} /* switch */
break;
case SF_Shift|SF_Control:
switch (*(KeyMap+6)) {
case KC_NOQUAL:
KeyVal = *(KeyMap+7);
break;
case DPF_MOD:
KeyVal = *(KeyMap + *(KeyMap+7));
break;
case DPF_DEAD:
KeyVal = Accents[*(KeyMap+7)-1];
*color = 3;
} /* switch */
} /* switch */
break;
case KCF_ALT|KCF_CONTROL:
switch (CurrentStatus & (SF_Alt|SF_Control)) {
case 0: /* Alt and Control not selected */
switch (*KeyMap) {
case KC_NOQUAL:
KeyVal = *(KeyMap+1);
break;
case DPF_MOD:
KeyVal = *(KeyMap + *(KeyMap+1));
break;
case DPF_DEAD:
KeyVal = Accents[*(KeyMap+1)-1];
*color = 3;
} /* switch */
break;
case SF_Alt:
switch (*(KeyMap+2)) {
case KC_NOQUAL:
KeyVal = *(KeyMap+3);
break;
case DPF_MOD:
KeyVal = *(KeyMap + *(KeyMap+3));
break;
case DPF_DEAD:
KeyVal = Accents[*(KeyMap+3)-1];
*color = 3;
} /* switch */
break;
case SF_Control:
switch (*(KeyMap+4)) {
case KC_NOQUAL:
KeyVal = *(KeyMap+5);
break;
case DPF_MOD:
KeyVal = *(KeyMap + *(KeyMap+5));
break;
case DPF_DEAD:
KeyVal = Accents[*(KeyMap+5)-1];
*color = 3;
} /* switch */
break;
case SF_Alt|SF_Control:
switch (*(KeyMap+6)) {
case KC_NOQUAL:
KeyVal = *(KeyMap+7);
break;
case DPF_MOD:
KeyVal = *(KeyMap + *(KeyMap+7));
break;
case DPF_DEAD:
KeyVal = Accents[*(KeyMap+7)-1];
*color = 3;
} /* switch */
} /* switch */
break;
case KC_VANILLA:
switch (CurrentStatus & (SF_Shift|SF_Alt|SF_Control)) {
case 0: /* Shift, Alt and Control not selected */
switch (*KeyMap) {
case KC_NOQUAL:
KeyVal = *(KeyMap+1);
break;
case DPF_MOD:
KeyVal = *(KeyMap + *(KeyMap+1));
break;
case DPF_DEAD:
KeyVal = Accents[*(KeyMap+1)-1];
*color = 3;
} /* switch */
break;
case SF_Shift:
switch (*(KeyMap+2)) {
case KC_NOQUAL:
KeyVal = *(KeyMap+3);
break;
case DPF_MOD:
KeyVal = *(KeyMap + *(KeyMap+3));
break;
case DPF_DEAD:
KeyVal = Accents[*(KeyMap+3)-1];
*color = 3;
} /* switch */
break;
case SF_Alt:
switch (*(KeyMap+4)) {
case KC_NOQUAL:
KeyVal = *(KeyMap+5);
break;
case DPF_MOD:
KeyVal = *(KeyMap + *(KeyMap+5));
break;
case DPF_DEAD:
KeyVal = Accents[*(KeyMap+5)-1];
*color = 3;
} /* switch */
break;
case SF_Shift|SF_Alt:
switch (*(KeyMap+6)) {
case KC_NOQUAL:
KeyVal = *(KeyMap+7);
break;
case DPF_MOD:
KeyVal = *(KeyMap + *(KeyMap+7));
break;
case DPF_DEAD:
KeyVal = Accents[*(KeyMap+7)-1];
*color = 3;
} /* switch */
break;
case SF_Control:
switch (*(KeyMap+8)) {
case KC_NOQUAL:
KeyVal = *(KeyMap+9);
break;
case DPF_MOD:
KeyVal = *(KeyMap + *(KeyMap+9));
break;
case DPF_DEAD:
KeyVal = Accents[*(KeyMap+9)-1];
*color = 3;
} /* switch */
break;
case SF_Shift|SF_Control:
switch (*(KeyMap+10)) {
case KC_NOQUAL:
KeyVal = *(KeyMap+11);
break;
case DPF_MOD:
KeyVal = *(KeyMap + *(KeyMap+11));
break;
case DPF_DEAD:
KeyVal = Accents[*(KeyMap+11)-1];
*color = 3;
} /* switch */
break;
case SF_Alt|SF_Control:
switch (*(KeyMap+12)) {
case KC_NOQUAL:
KeyVal = *(KeyMap+13);
break;
case DPF_MOD:
KeyVal = *(KeyMap + *(KeyMap+13));
break;
case DPF_DEAD:
KeyVal = Accents[*(KeyMap+13)-1];
*color = 3;
} /* switch */
break;
case SF_Shift|SF_Alt|SF_Control:
switch (*(KeyMap+14)) {
case KC_NOQUAL:
KeyVal = *(KeyMap+15);
break;
case DPF_MOD:
KeyVal = *(KeyMap + *(KeyMap+15));
break;
case DPF_DEAD:
KeyVal = Accents[*(KeyMap+15)-1];
*color = 3;
} /* switch */
} /* switch */
} /* switch */
return(KeyVal);
}