
/*
 *  DMOUSE.H
 */

#include <local/typedefs.h>
#include <local/ipc.h>

#define DMS struct _DMS
#define REQ struct _REQ

#define PORTNAME    "DMouse"

#define REQ_SCREENON	-1
#define REQ_SCREENOFF	-2
#define REQ_MOUSEON	-3
#define REQ_MOUSEOFF	-4
#define REQ_DOCMD	-5
#define REQ_RAWMOUSE	-6
#define REQ_RAWKEY	-7

#define SBF_C	SIGBREAKF_CTRL_C
#define SBF_D	SIGBREAKF_CTRL_D
#define SBF_E	SIGBREAKF_CTRL_E
#define SBF_F	SIGBREAKF_CTRL_F

typedef struct IOStdReq     IOR;
typedef struct Interrupt    INT;
typedef struct timeval	    TS;
typedef void		    (*FPTR)();


DMS {
    PORT    Port;
    short   Version;
    short   Acc;
    short   AThresh;
    long    STo;
    long    MTo;
    uword   Code;
    uword   Qual;
    uword   RQual;	    /*	Right button qualifier	*/
    uword   LQual;	    /*	Left button qualifier	*/
    char    Cmd[256];
    char    LMBEnable;
    char    AAEnable;
    char    IPri;
    char    FSEnable;	    /*	Foreign Screen Enable	*/
    char    Workbench;	    /*	Use WindowToFront/Back	*/
    char    Reserved2;
    char    Reserved3;
    TASK    *HandTask;
    TASK    *ShakeTask;
    short   ShakeSig;
    short   StartupError;
    uword   *NoSprData;
    long    Segment;

    uword   Clicks;	/*  # clicks required		*/
    uword   CLeft;	/*  # clicks left to do 	*/
    TS	    CTime;	/*  time of last click		*/
    WIN     *CWin;	/*  All clicks in same window	*/
    char    Reset;	/*  Option modified, reset tos	*/
};

REQ {
    MSG     Msg;
    TS	    ie_TimeStamp;
    uword   ie_Code;
    uword   ie_Qualifier;
};

extern IOR *CreateStdIO();
extern SCR *OpenScreen();
extern void *AllocMem();
extern void *malloc();
extern void *GetMsg();
extern void *OpenLibrary();
extern PORT *CreatePort();
extern PROC *CreateProc();
extern LAYER *WhichMouseLayer();
extern LAYER *WhichLayer();


