#include #include extern char *WindowModeNames[]; extern char *ClickModeNames[]; extern char *ClickRollModeNames[]; extern char *DoubleClickModeNames[]; enum WindowModes {OverWindow,ActiveWindow}; enum ClickModes {ClickIgnore,ClickShift,ClickShiftClick, ClickToggleLMB,ClickMoveToScroll, ClickMoveScrollToggle,ClickCycleScreens}; enum ClickRollModes {ClickRollIgnore,ClickRollDepthArrange,ClickRollHorizontalScroll}; enum DoubleClickModes {DClickIgnore,DClickCycleScreens,DClickSwapAxis}; struct ButtonData { enum ClickModes ClickMode; enum ClickRollModes ClickRollMode; enum DoubleClickModes DoubleClickMode; char **ClickModeNames; char **ClickRollModeNames; char **DoubleClickModeNames; BOOL State; long Count,Secs,Microsecs; /* Used for double-click detection */ BOOL LMBToggle,ScrollToggle,AxisToggle; }; struct WheelMouseContext { void (*Dispose)(struct WheelMouseContext *wm); BOOL (*Handle)(struct WheelMouseContext *wm,unsigned long signals); int ScrollX,ScrollY; int FakeX,FakeY; enum WindowModes WindowMode; char **WindowModeNames; struct ButtonData MidButton,FourthButton; int MouseSpeedX,MouseSpeedY; int ScrollSpeedX,ScrollSpeedY; int FakeScrollSpeed; BOOL ClickToFront,ClickToBack; BOOL NudgeProp,ForgeRawKey,RawKeyPage; int PageThreshold; struct Task *MainTask; unsigned long Signals; int SigBit; struct MsgPort *ReplyPort,*IOPort; struct IOStdReq *IOReq; struct Window *Window; struct Gadget *Gadget; struct ExtIntuiMessage Msg1; unsigned long pad11,pad12,pad13,pad14; /* struct might be extended further! */ struct ExtIntuiMessage Msg2; unsigned long pad21,pad22,pad23,pad24; struct InputEvent Event; }; struct WheelMouseContext *WheelMouse_Create();