/*
 * Key Map Editor Definitions
 *
 * by: Tim Friest
 * on: January 1, 1989
 */

#define	KeyMapEdVer	"Key Map Editor v1.02"

/*
 * Define used resources macros and flags
 */

#define	FlagResource(x)	ResourceFlags |= x
#define CheckResource(x)	ResourceFlags & x
#define ClearResource(x)	ResourceFlags &= ~x

#define RB_Graphics	0
#define RF_Graphics	(1<<RB_Graphics)
#define	RB_Intuition	1
#define RF_Intuition	(1<<RB_Intuition)
#define RB_Font		2
#define	RF_Font		(1<<RB_Font)
#define RB_Window	3
#define RF_Window	(1<<RB_Window)
#define RB_GadgetText	4
#define RF_GadgetText	(1<<RB_GadgetText)
#define RB_Menu		5
#define RF_Menu		(1<<RB_Menu)
#define	RB_DirLock	6
#define RF_DirLock	(1<<RB_DirLock)
#define RB_CurrentDir	7
#define RF_CurrentDir	(1<<RB_CurrentDir)
#define RB_KeyMap	8
#define RF_KeyMap	(1<<RB_KeyMap)
#define RB_FileReq	9
#define RF_FileReq	(1<<RB_FileReq)
#define RB_KeyReq	10
#define RF_KeyReq	(1<<RB_KeyReq)
#define RB_FileList	11
#define	RF_FileList	(1<<RB_FileList)
#define RB_Timer	12
#define RF_Timer	(1<<RB_Timer)
#define RB_Pointer	13
#define RF_Pointer	(1<<RB_Pointer)

/* Status Flags */

#define	SetFlag(x)	StatusFlags |= x
#define CheckFlag(x)	StatusFlags & x
#define ClearFlag(x)	StatusFlags &= ~x

#define SB_Define	0
#define SF_Define	(1<<SB_Define)
#define SB_Copy		1
#define SF_Copy		(1<<SB_Copy)
#define SB_Move		2
#define SF_Move		(1<<SB_Move)
#define SB_Swap		3
#define SF_Swap		(1<<SB_Swap)
#define SB_Clear	4
#define SF_Clear	(1<<SB_Clear)
#define SB_Modified	8
#define SF_Modified	(1<<SB_Modified)
#define SB_Timer	9
#define SF_Timer	(1<<SB_Timer)
#define SB_Pointer	10
#define SF_Pointer	(1<<SB_Pointer)
#define	SB_CapsLock	23
#define	SF_CapsLock	(1<<SB_CapsLock)
#define SB_Shift	24
#define SF_Shift	(1<<SB_Shift)
#define	SB_Control	25
#define	SF_Control	(1<<SB_Control)
#define SB_Alt		26
#define SF_Alt		(1<<SB_Alt)

/* Sizes */

#define KeyNodeSize sizeof(struct KeyMapNode)
#define KeyMapSize ((0x40 + 0x40*4 + 0x08 + 0x08) + (0x38 + 0x38*4 + 0x07 + 0x07))

/* Option Values */

#define LOAD 0
#define SAVE 1

/* Data definitions */

struct FileNode {
	struct FileNode *NextFile, *PrevFile;
	char *FileName;
};

struct HalfKeyMap {
	UBYTE	*KeyMapTypes;
	ULONG	*KeyMap;
	UBYTE	*Capsable;
	UBYTE	*Repeatable;
};
