4 * Copyright 1998 Ulrich Weigand
14 DEFAULT_DEBUG_CHANNEL(event
)
16 /**********************************************************************/
18 MOUSE_DRIVER
*MOUSE_Driver
= NULL
;
20 static LPMOUSE_EVENT_PROC DefMouseEventProc
= NULL
;
22 /***********************************************************************
23 * MOUSE_Inquire (MOUSE.1)
25 WORD WINAPI
MOUSE_Inquire(LPMOUSEINFO mouseInfo
)
27 mouseInfo
->msExist
= TRUE
;
28 mouseInfo
->msRelative
= FALSE
;
29 mouseInfo
->msNumButtons
= 2;
30 mouseInfo
->msRate
= 34; /* the DDK says so ... */
31 mouseInfo
->msXThreshold
= 0;
32 mouseInfo
->msYThreshold
= 0;
33 mouseInfo
->msXRes
= 0;
34 mouseInfo
->msYRes
= 0;
35 mouseInfo
->msMouseCommPort
= 0;
37 return sizeof(MOUSEINFO
);
40 /***********************************************************************
41 * MOUSE_Enable (MOUSE.2)
43 VOID WINAPI
MOUSE_Enable(LPMOUSE_EVENT_PROC lpMouseEventProc
)
45 DefMouseEventProc
= lpMouseEventProc
;
48 /***********************************************************************
49 * MOUSE_Disable (MOUSE.3)
51 VOID WINAPI
MOUSE_Disable(VOID
)
53 DefMouseEventProc
= 0;
56 /***********************************************************************
59 void MOUSE_SendEvent( DWORD mouseStatus
, DWORD posX
, DWORD posY
,
60 DWORD keyState
, DWORD time
, HWND hWnd
)
62 int width
= MONITOR_GetWidth (&MONITOR_PrimaryMonitor
);
63 int height
= MONITOR_GetHeight(&MONITOR_PrimaryMonitor
);
68 if ( !DefMouseEventProc
) return;
70 TRACE( event
, "(%04lX,%ld,%ld)\n", mouseStatus
, posX
, posY
);
72 mouseStatus
|= MOUSEEVENTF_ABSOLUTE
;
73 posX
= (((long)posX
<< 16) + width
-1) / width
;
74 posY
= (((long)posY
<< 16) + height
-1) / height
;
76 wme
.magic
= WINE_MOUSEEVENT_MAGIC
;
77 wme
.keyState
= keyState
;
81 bOldWarpPointer
= MOUSE_Driver
->pEnableWarpPointer(FALSE
);
82 /* To avoid deadlocks, we have to suspend all locks on windows structures
83 before the program control is passed to the mouse driver */
84 iWndsLocks
= WIN_SuspendWndsLock();
85 DefMouseEventProc( mouseStatus
, posX
, posY
, 0, (DWORD
)&wme
);
86 WIN_RestoreWndsLock(iWndsLocks
);
87 MOUSE_Driver
->pEnableWarpPointer(bOldWarpPointer
);