
/*
 *  DMOUSE.H
 */

#include <local/typedefs.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 REQ_DEBUG	-8
#define REQ_DEBUGOFF	-9

#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    Debug;	    /*	Debug Mode		*/
    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	*/

    char    *MRemote;	/*  Remote mouse blanker (obsolete) */
    char    *SRemote;	/*  Remote screen blanker(obsolete) */
    long    DLock[2];	/*  synchronizing lock	 (obsolete) */
};

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


