4 * Copyright 1998 Ulrich Weigand
13 /**********************************************************************/
15 MOUSE_DRIVER
*MOUSE_Driver
= NULL
;
17 static LPMOUSE_EVENT_PROC DefMouseEventProc
= NULL
;
19 /***********************************************************************
20 * MOUSE_Inquire (MOUSE.1)
22 WORD WINAPI
MOUSE_Inquire(LPMOUSEINFO mouseInfo
)
24 mouseInfo
->msExist
= TRUE
;
25 mouseInfo
->msRelative
= FALSE
;
26 mouseInfo
->msNumButtons
= 2;
27 mouseInfo
->msRate
= 34; /* the DDK says so ... */
28 mouseInfo
->msXThreshold
= 0;
29 mouseInfo
->msYThreshold
= 0;
30 mouseInfo
->msXRes
= 0;
31 mouseInfo
->msYRes
= 0;
32 mouseInfo
->msMouseCommPort
= 0;
34 return sizeof(MOUSEINFO
);
37 /***********************************************************************
38 * MOUSE_Enable (MOUSE.2)
40 VOID WINAPI
MOUSE_Enable(LPMOUSE_EVENT_PROC lpMouseEventProc
)
42 DefMouseEventProc
= lpMouseEventProc
;
45 /***********************************************************************
46 * MOUSE_Disable (MOUSE.3)
48 VOID WINAPI
MOUSE_Disable(VOID
)
50 DefMouseEventProc
= 0;
53 /***********************************************************************
56 void MOUSE_SendEvent( DWORD mouseStatus
, DWORD posX
, DWORD posY
,
57 DWORD keyState
, DWORD time
, HWND hWnd
)
59 int width
= MONITOR_GetWidth (&MONITOR_PrimaryMonitor
);
60 int height
= MONITOR_GetHeight(&MONITOR_PrimaryMonitor
);
64 if ( !DefMouseEventProc
) return;
66 TRACE( event
, "(%04lX,%ld,%ld)\n", mouseStatus
, posX
, posY
);
68 mouseStatus
|= MOUSEEVENTF_ABSOLUTE
;
69 posX
= (((long)posX
<< 16) + width
-1) / width
;
70 posY
= (((long)posY
<< 16) + height
-1) / height
;
72 wme
.magic
= WINE_MOUSEEVENT_MAGIC
;
73 wme
.keyState
= keyState
;
77 bOldWarpPointer
= MOUSE_Driver
->pEnableWarpPointer(FALSE
);
78 DefMouseEventProc( mouseStatus
, posX
, posY
, 0, (DWORD
)&wme
);
79 MOUSE_Driver
->pEnableWarpPointer(bOldWarpPointer
);