diff --git a/src/mouse.c b/src/mouse.c index 23fcf5de..7d8bde30 100644 --- a/src/mouse.c +++ b/src/mouse.c @@ -105,11 +105,20 @@ void moveMouse(MMPoint point) 0, 0, 0, 0, point.x, point.y); XFlush(display); #elif defined(IS_WINDOWS) + //Mouse motion is now done using SendInput with MOUSEINPUT. We use Absolute mouse positioning #define MOUSE_COORD_TO_ABS(coord, width_or_height) (((65536 * coord) / width_or_height) + (coord < 0 ? -1 : 1)) point.x = MOUSE_COORD_TO_ABS(point.x, GetSystemMetrics(SM_CXSCREEN)); point.y = MOUSE_COORD_TO_ABS(point.y, GetSystemMetrics(SM_CYSCREEN)); - mouse_event(MOUSEEVENTF_ABSOLUTE | MOUSEEVENTF_MOVE, - (DWORD)point.x, (DWORD)point.y, 0, 0); + INPUT mouseInput; + mouseInput.type = INPUT_MOUSE; + mouseInput.mi.dx = point.x; + mouseInput.mi.dy = point.y; + mouseInput.mi.dwFlags = MOUSEEVENTF_ABSOLUTE | MOUSEEVENTF_MOVE; + mouseInput.mi.time = 0; //System will provide the timestamp + mouseInput.mi.dwExtraInfo = 0; + mouseInput.mi.mouseData = 0; + SendInput(1, &mouseInput, sizeof(mouseInput)); + #endif }