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_ProcGadget.c
< prev
next >
Wrap
C/C++ Source or Header
|
1989-03-13
|
18KB
|
631 lines
/*
* Key Map Editor ver 1.0
* Process Gadget
*
* parameter: Gadget - Address of Gadget selected
*
* by: Tim Friest
* on: January 1, 1989
*/
#include "KME_Includes.h"
#include "KME_Protos.h"
#include "KME_Defs.h"
#include "KME_Globals.h"
extern int CopyKey(struct KeyMap *, USHORT, USHORT);
extern void MoveKey(struct KeyMap *, USHORT, USHORT);
extern void SwapKeys(struct KeyMap *, USHORT, USHORT);
extern void ClearKey(struct KeyMap *, USHORT);
void ProcGadget(Gad)
struct Gadget *Gad;
{
int OldStatus;
switch (Gad->GadgetID) {
case 0x60: /* Shift Key Toggled */
case 0x61:
OldStatus = CheckFlag(SF_Shift);
if ((LeftShiftGadget.Flags & SELECTED) || (RightShiftGadget.Flags & SELECTED))
SetFlag(SF_Shift);
else
ClearFlag(SF_Shift);
if (OldStatus != (CheckFlag(SF_Shift)))
UpdateDisplay(GadgetList, KeyMapNode, TRUE);
break;
case 0x62: /* Caps Lock Key Toggled */
OldStatus = CheckFlag(SF_CapsLock);
if (Gad->Flags & SELECTED)
SetFlag(SF_CapsLock);
else
ClearFlag(SF_CapsLock);
if (!(CheckFlag(SF_Shift)) && (OldStatus != (CheckFlag(SF_CapsLock))))
UpdateDisplay(GadgetList, KeyMapNode, TRUE);
break;
case 0x63: /* Control Key Toggled */
OldStatus = CheckFlag(SF_Control);
if (Gad->Flags & SELECTED)
SetFlag(SF_Control);
else
ClearFlag(SF_Control);
if (OldStatus != (CheckFlag(SF_Control)))
UpdateDisplay(GadgetList, KeyMapNode, TRUE);
break;
case 0x64: /* Alt Key Toggled */
case 0x65:
OldStatus = CheckFlag(SF_Alt);
if ((LeftAltGadget.Flags & SELECTED) || (RightAltGadget.Flags & SELECTED))
SetFlag(SF_Alt);
else
ClearFlag(SF_Alt);
if (OldStatus != (CheckFlag(SF_Alt)))
UpdateDisplay(GadgetList, KeyMapNode, TRUE);
break;
default:
switch (StatusFlags & (SF_Define|SF_Copy|SF_Move|SF_Swap|SF_Clear)) {
case SF_Define:
if (ProcKeyReq(Gad->GadgetID))
UpdateDisplay(Gad, KeyMapNode, FALSE);
break;
case SF_Copy:
if (FromKeyGad == NULL) {
FromKeyGad = Gad;
ChangePointer(-1);
}
else {
if (FromKeyGad != Gad) {
CopyKey(&KeyMapNode->kn_KeyMap, FromKeyGad->GadgetID, Gad->GadgetID);
UpdateDisplay(Gad, KeyMapNode, FALSE);
}
ChangePointer(SF_Copy);
FromKeyGad = NULL;
}
break;
case SF_Move:
if (FromKeyGad == NULL) {
FromKeyGad = Gad;
ChangePointer(-1);
}
else {
if (FromKeyGad != Gad) {
MoveKey(&KeyMapNode->kn_KeyMap, FromKeyGad->GadgetID, Gad->GadgetID);
UpdateDisplay(FromKeyGad, KeyMapNode, FALSE);
UpdateDisplay(Gad, KeyMapNode, FALSE);
}
ChangePointer(SF_Move);
FromKeyGad = NULL;
}
break;
case SF_Swap:
if (FromKeyGad == NULL) {
FromKeyGad = Gad;
ChangePointer(-1);
}
else {
if (FromKeyGad != Gad) {
SwapKeys(&KeyMapNode->kn_KeyMap, FromKeyGad->GadgetID, Gad->GadgetID);
UpdateDisplay(FromKeyGad, KeyMapNode, FALSE);
UpdateDisplay(Gad, KeyMapNode, FALSE);
}
ChangePointer(SF_Swap);
FromKeyGad = NULL;
}
break;
case SF_Clear:
ClearKey(&KeyMapNode->kn_KeyMap, Gad->GadgetID);
UpdateDisplay(Gad, KeyMapNode, FALSE);
} /* switch */
} /* switch */
}
/*
* Copy Key
*
* Parameters: KeyMap - KeyMap to work with
* FromKeyCode - Key Code to copy from
* ToKeyCode - Key Code to copy to
*/
int CopyKey(KeyMap, FromKey, ToKey)
struct KeyMap *KeyMap;
unsigned short FromKey;
unsigned short ToKey;
{
struct HalfKeyMap *FromHalfKeyMap, *ToHalfKeyMap;
int len;
UBYTE headerlen;
if (FromKey < 0x40)
FromHalfKeyMap = (struct HalfKeyMap *)KeyMap;
else {
FromHalfKeyMap = (struct HalfKeyMap *)&KeyMap->km_HiKeyMapTypes;
FromKey -= 0x40;
}
if (ToKey < 0x40)
ToHalfKeyMap = (struct HalfKeyMap *)KeyMap;
else {
ToHalfKeyMap = (struct HalfKeyMap *)&KeyMap->km_HiKeyMapTypes;
ToKey -= 0x40;
}
switch (FromHalfKeyMap->KeyMapTypes[FromKey] & (KCF_STRING|KCF_DEAD|KCF_NOP)) {
case KC_NOQUAL:
case KCF_NOP:
ToHalfKeyMap->KeyMap[ToKey] = FromHalfKeyMap->KeyMap[FromKey];
break;
case KCF_STRING:
len = StringKeyLength(FromHalfKeyMap, FromKey, &headerlen);
if ((ToHalfKeyMap->KeyMap[ToKey] = (ULONG)AllocMem(len, MEMF_CLEAR)) == NULL) {
Write(Output(), "Memory Allocation Failed, CopyKey:String\n", 41);
return(FALSE);
}
CopyStringKey(FromHalfKeyMap, FromKey, (UBYTE *)ToHalfKeyMap->KeyMap[ToKey], headerlen);
break;
case KCF_DEAD:
len = DeadKeyLength(FromHalfKeyMap, FromKey, &headerlen);
if ((ToHalfKeyMap->KeyMap[ToKey] = (ULONG)AllocMem(len, MEMF_CLEAR)) == NULL) {
Write(Output(), "Memory Allocation Failed, CopyKey:Dead\n", 39);
return(FALSE);
}
CopyDeadKey(FromHalfKeyMap, FromKey, (UBYTE *)ToHalfKeyMap->KeyMap[ToKey], headerlen);
} /* switch */
ToHalfKeyMap->KeyMapTypes[ToKey] = FromHalfKeyMap->KeyMapTypes[FromKey];
ToHalfKeyMap->Capsable[ToKey/8] &= ~(ToKey % 8);
ToHalfKeyMap->Capsable[ToKey/8] |= (FromHalfKeyMap->Capsable[FromKey/8] & (FromKey % 8));
ToHalfKeyMap->Repeatable[ToKey/8] &= ~(ToKey % 8);
ToHalfKeyMap->Repeatable[ToKey/8] |= (FromHalfKeyMap->Repeatable[FromKey/8] & (FromKey % 8));
SetFlag(SF_Modified);
return(TRUE);
}
/*
* Move Key
*
* Parameters: KeyMap - KeyMap to work with
* FromKeyCode - Key Code to move from
* ToKeyCode - Key Code to move to
*/
void MoveKey(KeyMap, FromKey, ToKey)
struct KeyMap *KeyMap;
unsigned short FromKey;
unsigned short ToKey;
{
struct HalfKeyMap *FromHalfKeyMap, *ToHalfKeyMap;
if (FromKey < 0x40)
FromHalfKeyMap = (struct HalfKeyMap *)KeyMap;
else {
FromHalfKeyMap = (struct HalfKeyMap *)&KeyMap->km_HiKeyMapTypes;
FromKey -= 0x40;
}
if (ToKey < 0x40)
ToHalfKeyMap = (struct HalfKeyMap *)KeyMap;
else {
ToHalfKeyMap = (struct HalfKeyMap *)&KeyMap->km_HiKeyMapTypes;
ToKey -= 0x40;
}
ToHalfKeyMap->KeyMapTypes[ToKey] = FromHalfKeyMap->KeyMapTypes[FromKey];
ToHalfKeyMap->KeyMap[ToKey] = FromHalfKeyMap->KeyMap[FromKey];
ToHalfKeyMap->Capsable[ToKey/8] &= ~(ToKey % 8);
ToHalfKeyMap->Capsable[ToKey/8] |= (FromHalfKeyMap->Capsable[FromKey/8] & (FromKey % 8));
ToHalfKeyMap->Repeatable[ToKey/8] &= ~(ToKey % 8);
ToHalfKeyMap->Repeatable[ToKey/8] |= (FromHalfKeyMap->Repeatable[FromKey/8] & (FromKey % 8));
FromHalfKeyMap->KeyMapTypes[FromKey] = KCF_NOP;
FromHalfKeyMap->KeyMap[FromKey] = NULL;
FromHalfKeyMap->Capsable[FromKey/8] &= ~(FromKey % 8);
FromHalfKeyMap->Repeatable[FromKey/8] &= ~(FromKey % 8);
SetFlag(SF_Modified);
}
/*
* Swap Key
*
* Parameters: KeyMap - KeyMap to work with
* FromKeyCode - Key Code to swap from
* ToKeyCode - Key Code to swap to
*/
void SwapKeys(KeyMap, FromKey, ToKey)
struct KeyMap *KeyMap;
unsigned short FromKey;
unsigned short ToKey;
{
struct HalfKeyMap *FromHalfKeyMap, *ToHalfKeyMap;
UBYTE temptype, tempcaps, temprepeat;
ULONG tempmap;
if (FromKey < 0x40)
FromHalfKeyMap = (struct HalfKeyMap *)KeyMap;
else {
FromHalfKeyMap = (struct HalfKeyMap *)&KeyMap->km_HiKeyMapTypes;
FromKey -= 0x40;
}
if (ToKey < 0x40)
ToHalfKeyMap = (struct HalfKeyMap *)KeyMap;
else {
ToHalfKeyMap = (struct HalfKeyMap *)&KeyMap->km_HiKeyMapTypes;
ToKey -= 0x40;
}
temptype = ToHalfKeyMap->KeyMapTypes[ToKey];
tempmap = ToHalfKeyMap->KeyMap[ToKey];
tempcaps = ToHalfKeyMap->Capsable[ToKey/8] & (ToKey % 8);
temprepeat = ToHalfKeyMap->Repeatable[ToKey/8] & (ToKey % 8);
ToHalfKeyMap->KeyMapTypes[ToKey] = FromHalfKeyMap->KeyMapTypes[FromKey];
ToHalfKeyMap->KeyMap[ToKey] = FromHalfKeyMap->KeyMap[FromKey];
ToHalfKeyMap->Capsable[ToKey/8] &= ~(ToKey % 8);
ToHalfKeyMap->Capsable[ToKey/8] |= (FromHalfKeyMap->Capsable[FromKey/8] & (FromKey % 8));
ToHalfKeyMap->Repeatable[ToKey/8] &= ~(ToKey % 8);
ToHalfKeyMap->Repeatable[ToKey/8] |= (FromHalfKeyMap->Repeatable[FromKey/8] & (FromKey % 8));
FromHalfKeyMap->KeyMapTypes[FromKey] = temptype;
FromHalfKeyMap->KeyMap[FromKey] = tempmap;
FromHalfKeyMap->Capsable[FromKey/8] &= ~(FromKey % 8);
FromHalfKeyMap->Capsable[FromKey/8] |= tempcaps;
FromHalfKeyMap->Repeatable[FromKey/8] &= ~(FromKey % 8);
FromHalfKeyMap->Repeatable[FromKey/8] |= temprepeat;
SetFlag(SF_Modified);
}
/*
* Clear Key
*
* parameters: KeyMap - Key Map to work with
* KeyCode - KeyCode to erase
*/
void ClearKey(KeyMap, KeyCode)
struct KeyMap *KeyMap;
unsigned short KeyCode;
{
struct HalfKeyMap *HalfKeyMap;
int len;
UBYTE headerlen;
if (KeyCode < 0x40)
HalfKeyMap = (struct HalfKeyMap *)KeyMap;
else {
HalfKeyMap = (struct HalfKeyMap *)&KeyMap->km_HiKeyMapTypes;
KeyCode -= 0x40;
}
switch (HalfKeyMap->KeyMapTypes[KeyCode] & (KCF_STRING|KCF_DEAD|KCF_NOP)) {
case KCF_STRING:
len = StringKeyLength(HalfKeyMap, KeyCode, &headerlen);
FreeMem((UBYTE *)HalfKeyMap->KeyMap[KeyCode], len);
break;
case KCF_DEAD:
len = DeadKeyLength(HalfKeyMap, KeyCode, &headerlen);
FreeMem((UBYTE *)HalfKeyMap->KeyMap[KeyCode], len);
} /* switch */
HalfKeyMap->KeyMap[KeyCode] = NULL;
HalfKeyMap->KeyMapTypes[KeyCode] = KCF_NOP;
HalfKeyMap->Capsable[KeyCode/8] &= ~(KeyCode % 8);
HalfKeyMap->Repeatable[KeyCode/8] &= ~(KeyCode % 8);
SetFlag(SF_Modified);
}
/*
* String Key Length
*
* parameters: HalfKeyMap - half of a key map structure
* KeyCode - Key Code
* HeaderLen - Location to place header length
*
* returns: Length - length of key buffer
*/
UBYTE StringKeyLength(HalfKeyMap, KeyCode, HeaderLength)
struct HalfKeyMap *HalfKeyMap;
USHORT KeyCode;
UBYTE *HeaderLength;
{
UBYTE KeyType;
UBYTE *KeyMapPtr;
UBYTE len, index;
KeyType = HalfKeyMap->KeyMapTypes[KeyCode];
KeyMapPtr = (UBYTE *)HalfKeyMap->KeyMap[KeyCode];
len = 2 + KeyMapPtr[index = 0];
if (KeyType & KCF_SHIFT)
len += 2 + KeyMapPtr[index += 2];
if (KeyType & KCF_ALT)
len += 2 + KeyMapPtr[index += 2];
if ((KeyType & (KCF_SHIFT|KCF_ALT)) == (KCF_SHIFT|KCF_ALT))
len += 2 + KeyMapPtr[index += 2];
if (KeyType & KCF_CONTROL)
len += 2 + KeyMapPtr[index += 2];
if ((KeyType & (KCF_CONTROL|KCF_SHIFT)) == (KCF_CONTROL|KCF_SHIFT))
len += 2 + KeyMapPtr[index += 2];
if ((KeyType & (KCF_CONTROL|KCF_ALT)) == (KCF_CONTROL|KCF_ALT))
len += 2 + KeyMapPtr[index += 2];
if ((KeyType & KC_VANILLA) == KC_VANILLA)
len += 2 + KeyMapPtr[index += 2];
*HeaderLength = index + 2;
return(len);
}
/*
* Copy String Key
*
* parameters: HalfKeyMap - Half of a key map
* KeyCode - Key Code
* KeyBuff - location to place key data
* Header - length of key data header
*
* returns: Length - length copied
*/
UBYTE CopyStringKey(HalfKeyMap, KeyCode, KeyBuff, HeaderLength)
struct HalfKeyMap *HalfKeyMap;
USHORT KeyCode;
UBYTE *KeyBuff;
UBYTE HeaderLength;
{
UBYTE KeyType;
UBYTE *KeyMapPtr;
UBYTE len, index;
KeyType = HalfKeyMap->KeyMapTypes[KeyCode];
KeyMapPtr = (UBYTE *)HalfKeyMap->KeyMap[KeyCode];
len = HeaderLength;
KeyBuff[index = 0] = KeyMapPtr[index];
KeyBuff[index+1] = len;
memcpy(&KeyBuff[len], (KeyMapPtr+KeyMapPtr[index+1]), KeyMapPtr[index]);
len += KeyBuff[index];
if (KeyType & KCF_SHIFT) {
KeyBuff[index += 2] = KeyMapPtr[index];
KeyBuff[index+1] = len;
memcpy(&KeyBuff[len], (KeyMapPtr+KeyMapPtr[index+1]), KeyMapPtr[index]);
len += KeyBuff[index];
}
if (KeyType & KCF_ALT) {
KeyBuff[index += 2] = KeyMapPtr[index];
KeyBuff[index+1] = len;
memcpy(&KeyBuff[len], (KeyMapPtr+KeyMapPtr[index+1]), KeyMapPtr[index]);
len += KeyBuff[index];
}
if ((KeyType & (KCF_SHIFT|KCF_ALT)) == (KCF_SHIFT|KCF_ALT)) {
KeyBuff[index += 2] = KeyMapPtr[index];
KeyBuff[index+1] = len;
memcpy(&KeyBuff[len], (KeyMapPtr+KeyMapPtr[index+1]), KeyMapPtr[index]);
len += KeyBuff[index];
}
if (KeyType & KCF_CONTROL) {
KeyBuff[index += 2] = KeyMapPtr[index];
KeyBuff[index+1] = len;
memcpy(&KeyBuff[len], (KeyMapPtr+KeyMapPtr[index+1]), KeyMapPtr[index]);
len += KeyBuff[index];
}
if ((KeyType & (KCF_CONTROL|KCF_SHIFT)) == (KCF_CONTROL|KCF_SHIFT)) {
KeyBuff[index += 2] = KeyMapPtr[index];
KeyBuff[index+1] = len;
memcpy(&KeyBuff[len], (KeyMapPtr+KeyMapPtr[index+1]), KeyMapPtr[index]);
len += KeyBuff[index];
}
if ((KeyType & (KCF_CONTROL|KCF_ALT)) == (KCF_CONTROL|KCF_ALT)) {
KeyBuff[index += 2] = KeyMapPtr[index];
KeyBuff[index+1] = len;
memcpy(&KeyBuff[len], (KeyMapPtr+KeyMapPtr[index+1]), KeyMapPtr[index]);
len += KeyBuff[index];
}
if ((KeyType & KC_VANILLA) == KC_VANILLA) {
KeyBuff[index += 2] = KeyMapPtr[index];
KeyBuff[index+1] = len;
memcpy(&KeyBuff[len], (KeyMapPtr+KeyMapPtr[index+1]), KeyMapPtr[index]);
len += KeyBuff[index];
}
return(len);
}
/*
* Dead Key Length
*
* parameters: HalfKeyMap - half of a key map structure
* KeyCode - Key Code
* HeaderLength - Location to place header length
*
* returns: Length - length of key buffer
*/
UBYTE DeadKeyLength(HalfKeyMap, KeyCode, HeaderLength)
struct HalfKeyMap *HalfKeyMap;
USHORT KeyCode;
UBYTE *HeaderLength;
{
UBYTE KeyType;
UBYTE *KeyMapPtr;
UBYTE len, index;
KeyType = HalfKeyMap->KeyMapTypes[KeyCode];
KeyMapPtr = (UBYTE *)HalfKeyMap->KeyMap[KeyCode];
switch (KeyMapPtr[index = 0]) {
case KC_NOQUAL:
case DPF_DEAD:
len = 2;
break;
case DPF_MOD:
len = 2 + 6;
} /* switch */
if (KeyType & KCF_SHIFT)
switch (KeyMapPtr[index += 2]) {
case KC_NOQUAL:
case DPF_DEAD:
len += 2;
break;
case DPF_MOD:
len += 2 + 6;
} /* switch */
if (KeyType & KCF_ALT)
switch (KeyMapPtr[index += 2]) {
case KC_NOQUAL:
case DPF_DEAD:
len += 2;
break;
case DPF_MOD:
len += 2 + 6;
} /* switch */
if ((KeyType & (KCF_SHIFT|KCF_ALT)) == (KCF_SHIFT|KCF_ALT))
switch (KeyMapPtr[index += 2]) {
case KC_NOQUAL:
case DPF_DEAD:
len += 2;
break;
case DPF_MOD:
len += 2 + 6;
} /* switch */
if (KeyType & KCF_CONTROL)
switch (KeyMapPtr[index += 2]) {
case KC_NOQUAL:
case DPF_DEAD:
len += 2;
break;
case DPF_MOD:
len += 2 + 6;
} /* switch */
if ((KeyType & (KCF_CONTROL|KCF_SHIFT)) == (KCF_CONTROL|KCF_SHIFT))
switch (KeyMapPtr[index += 2]) {
case KC_NOQUAL:
case DPF_DEAD:
len += 2;
break;
case DPF_MOD:
len += 2 + 6;
} /* switch */
if ((KeyType & (KCF_CONTROL|KCF_ALT)) == (KCF_CONTROL|KCF_ALT))
switch (KeyMapPtr[index += 2]) {
case KC_NOQUAL:
case DPF_DEAD:
len += 2;
break;
case DPF_MOD:
len += 2 + 6;
} /* switch */
if ((KeyType & KC_VANILLA) == KC_VANILLA)
switch (KeyMapPtr[index += 2]) {
case KC_NOQUAL:
case DPF_DEAD:
len += 2;
break;
case DPF_MOD:
len += 2 + 6;
} /* switch */
*HeaderLength = index + 2;
return(len);
}
/*
* Copy Dead Key
*
* parameters: HalfKeyMap - Half of a key map
* KeyCode - Key Code
* KeyBuff - location to place key data
* HeaderLength - length of key data header
*
* returns: Length - length copied
*/
UBYTE CopyDeadKey(HalfKeyMap, KeyCode, KeyBuff, HeaderLength)
struct HalfKeyMap *HalfKeyMap;
USHORT KeyCode;
UBYTE *KeyBuff;
UBYTE HeaderLength;
{
UBYTE KeyType;
UBYTE *KeyMapPtr;
UBYTE len, index;
KeyType = HalfKeyMap->KeyMapTypes[KeyCode];
KeyMapPtr = (UBYTE *)HalfKeyMap->KeyMap[KeyCode];
len = HeaderLength;
switch (KeyBuff[index = 0] = KeyMapPtr[index]) {
case KC_NOQUAL:
case DPF_DEAD:
KeyBuff[index+1] = KeyMapPtr[index+1];
break;
case DPF_MOD:
KeyBuff[index+1] = len;
memcpy(&KeyBuff[len], (KeyMapPtr+KeyMapPtr[index+1]), 6);
len += 6;
} /* switch */
if (KeyType & KCF_SHIFT)
switch (KeyBuff[index += 2] = KeyMapPtr[index]) {
case KC_NOQUAL:
case DPF_DEAD:
KeyBuff[index+1] = KeyMapPtr[index+1];
break;
case DPF_MOD:
KeyBuff[index+1] = len;
memcpy(&KeyBuff[len], (KeyMapPtr+KeyMapPtr[index+1]), 6);
len += 6;
} /* switch */
if (KeyType & KCF_ALT)
switch (KeyBuff[index += 2] = KeyMapPtr[index]) {
case KC_NOQUAL:
case DPF_DEAD:
KeyBuff[index+1] = KeyMapPtr[index+1];
break;
case DPF_MOD:
KeyBuff[index+1] = len;
memcpy(&KeyBuff[len], (KeyMapPtr+KeyMapPtr[index+1]), 6);
len += 6;
} /* switch */
if ((KeyType & (KCF_SHIFT|KCF_ALT)) == (KCF_SHIFT|KCF_ALT))
switch (KeyBuff[index += 2] = KeyMapPtr[index]) {
case KC_NOQUAL:
case DPF_DEAD:
KeyBuff[index+1] = KeyMapPtr[index+1];
break;
case DPF_MOD:
KeyBuff[index+1] = len;
memcpy(&KeyBuff[len], (KeyMapPtr+KeyMapPtr[index+1]), 6);
len += 6;
} /* switch */
if (KeyType & KCF_CONTROL)
switch (KeyBuff[index += 2] = KeyMapPtr[index]) {
case KC_NOQUAL:
case DPF_DEAD:
KeyBuff[index+1] = KeyMapPtr[index+1];
break;
case DPF_MOD:
KeyBuff[index+1] = len;
memcpy(&KeyBuff[len], (KeyMapPtr+KeyMapPtr[index+1]), 6);
len += 6;
} /* switch */
if ((KeyType & (KCF_CONTROL|KCF_SHIFT)) == (KCF_CONTROL|KCF_SHIFT))
switch (KeyBuff[index += 2] = KeyMapPtr[index]) {
case KC_NOQUAL:
case DPF_DEAD:
KeyBuff[index+1] = KeyMapPtr[index+1];
break;
case DPF_MOD:
KeyBuff[index+1] = len;
memcpy(&KeyBuff[len], (KeyMapPtr+KeyMapPtr[index+1]), 6);
len += 6;
} /* switch */
if ((KeyType & (KCF_CONTROL|KCF_ALT)) == (KCF_CONTROL|KCF_ALT))
switch (KeyBuff[index += 2] = KeyMapPtr[index]) {
case KC_NOQUAL:
case DPF_DEAD:
KeyBuff[index+1] = KeyMapPtr[index+1];
break;
case DPF_MOD:
KeyBuff[index+1] = len;
memcpy(&KeyBuff[len], (KeyMapPtr+KeyMapPtr[index+1]), 6);
len += 6;
} /* switch */
if ((KeyType & KC_VANILLA) == KC_VANILLA)
switch (KeyBuff[index += 2] = KeyMapPtr[index]) {
case KC_NOQUAL:
case DPF_DEAD:
KeyBuff[index+1] = KeyMapPtr[index+1];
break;
case DPF_MOD:
KeyBuff[index+1] = len;
memcpy(&KeyBuff[len], (KeyMapPtr+KeyMapPtr[index+1]), 6);
len += 6;
} /* switch */
return(len);
}