Skip to content

Commit

Permalink
Migrate to SendInput from mouse_event (#181)
Browse files Browse the repository at this point in the history
* Test fix for node 0.8 failing.

This was suggested by someone. Just checking it out.

* Migrate to SendInput for Mouse movement

Since mouse_event is deprecated we are moving to SendInput.

* Revert "Test fix for node 0.8 failing."

This reverts commit eb18a1f.
  • Loading branch information
Deltatiger authored and octalmage committed May 10, 2016
1 parent 4d003a5 commit 66611b7
Showing 1 changed file with 11 additions and 2 deletions.
13 changes: 11 additions & 2 deletions src/mouse.c
Original file line number Diff line number Diff line change
Expand Up @@ -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
}

Expand Down

0 comments on commit 66611b7

Please sign in to comment.