Skip to content

Commit 92bdacd

Browse files
committed
added win support for mouse like linux and mac
1 parent c159b1e commit 92bdacd

File tree

4 files changed

+99
-35
lines changed

4 files changed

+99
-35
lines changed

XInputSimulator/main.cpp

Lines changed: 18 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -33,26 +33,25 @@ int main()
3333

3434
XInputSimulator &sim = XInputSimulator::getInstance();
3535
waitABit();
36-
waitABit();
3736
sim.mouseMoveTo(500,400);
38-
// waitABit();
39-
// sim.mouseMoveRelative(400, -100);
40-
// waitABit();
41-
// sim.mouseDown(1);
42-
// waitABit();
43-
// sim.mouseMoveRelative(0, 300);
44-
// waitABit();
45-
// sim.mouseUp(1);
46-
// waitABit();
47-
// //scroll down and up
48-
// sim.mouseScrollY(10);
49-
// waitABit();
50-
// sim.mouseScrollY(-10);
51-
// //scroll left and right
52-
// waitABit();
53-
// sim.mouseScrollX(10);
54-
// waitABit();
55-
// sim.mouseScrollX(-10);
37+
waitABit();
38+
sim.mouseMoveRelative(400, -100);
39+
waitABit();
40+
sim.mouseDown(1);
41+
waitABit();
42+
sim.mouseMoveRelative(0, 300);
43+
waitABit();
44+
sim.mouseUp(1);
45+
waitABit();
46+
//scroll down and up
47+
sim.mouseScrollY(10);
48+
waitABit();
49+
sim.mouseScrollY(-10);
50+
//scroll left and right
51+
waitABit();
52+
sim.mouseScrollX(10);
53+
waitABit();
54+
sim.mouseScrollX(-10);
5655

5756

5857
waitABit();

XInputSimulator/xinputsimularotimplwin.cpp

Lines changed: 77 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -22,48 +22,117 @@
2222
#include "notimplementedexception.h"
2323
#include <iostream>
2424

25+
#include <Windows.h>
26+
27+
#define MOUSEEVENTF_HWHEEL 0x01000
28+
2529
XInputSimularotImplWin::XInputSimularotImplWin()
2630
{
31+
this->initCurrentMousePosition();
32+
}
33+
34+
void XInputSimularotImplWin::initCurrentMousePosition()
35+
{
36+
POINT p;
37+
if (GetCursorPos(&p))
38+
{
39+
this->currentX = p.x;
40+
this->currentY = p.y;
41+
}
2742
}
2843

2944

3045
void XInputSimularotImplWin::mouseMoveTo(int x, int y)
3146
{
32-
std::cout << "move the mouse!\n";
47+
SetCursorPos(x, y);
48+
49+
this->currentX = x;
50+
this->currentY = y;
3351
}
3452

3553
void XInputSimularotImplWin::mouseMoveRelative(int x, int y)
3654
{
37-
throw NotImplementedException();
55+
int newX = this->currentX + x;
56+
int newY = this->currentY + y;
57+
58+
SetCursorPos(newX, newY);
59+
60+
this->currentX = newX;
61+
this->currentY = newY;
3862
}
3963

64+
//TODO use the button from parameter list
4065
void XInputSimularotImplWin::mouseDown(int button)
4166
{
42-
throw NotImplementedException();
67+
INPUT in={0};
68+
in.type = INPUT_MOUSE;
69+
in.mi.dwFlags = MOUSEEVENTF_LEFTDOWN;
70+
SendInput(1,&in,sizeof(INPUT));
71+
ZeroMemory(&in,sizeof(INPUT));
4372
}
4473

74+
//TODO use the button from parameter list
4575
void XInputSimularotImplWin::mouseUp(int button)
4676
{
47-
throw NotImplementedException();
48-
77+
INPUT in={0};
78+
in.type = INPUT_MOUSE;
79+
in.mi.dwFlags = MOUSEEVENTF_LEFTUP;
80+
SendInput(1,&in,sizeof(INPUT));
81+
ZeroMemory(&in,sizeof(INPUT));
4982
}
5083

84+
//TODO use the button from parameter list
5185
void XInputSimularotImplWin::mouseClick(int button)
5286
{
53-
throw NotImplementedException();
5487
this->mouseDown(button);
5588
//std::this_thread::sleep_for(std::chrono::milliseconds(1000));
5689
this->mouseUp(button);
5790
}
5891
//kajsdölfkjasdölfkjasldökfjaölsdkjfalsdkjfalskdjfaldskjfkajsdölfkjasdölfkjasldökfjaölsdkjfalsdkjfalskdjfaldskjfkajsdölfkjasdölfkjasldökfjaölsdkjfalsdkjfalskdjfaldskjfkajsdölfkjasdölfkjasldökfjaölsdkjfalsdkjfalskdjfaldskjfkajsdölfkjasdölfkjasldökfjaölsdkjfalsdkjfalskdjfaldskjfkajsdölfkjasdölfkjasldökfjaölsdkjfalsdkjfalskdjfaldskjfkajsdölfkjasdölfkjasldökfjaölsdkjfalsdkjfalskdjfaldskjfkajsdölfkjasdölfkjasldökfjaölsdkjfalsdkjfalskdjfaldskjfkajsdölfkjasdölfkjasldökfjaölsdkjfalsdkjfalskdjfaldskjfkajsdölfkjasdölfkjasldökfjaölsdkjfalsdkjfalskdjfaldskjfkajsdölfkjasdölfkjasldökfjaölsdkjfalsdkjfalskdjfaldskjfkajsdölfkjasdölfkjasldökfjaölsdkjfalsdkjfalskdjfaldskjfkajsdölfkjasdölfkjasldökfjaölsdkjfalsdkjfalskdjfaldskjfkajsdölfkjasdölfkjasldökfjaölsdkjfalsdkjfalskdjfaldskjfkajsdölfkjasdölfkjasldökfjaölsdkjfalsdkjfalskdjfaldskjfkajsdölfkjasdölfkjasldökfjaölsdkjfalsdkjfalskdjfaldskjfkajsdölfkjasdölfkjasldökfjaölsdkjfalsdkjfalskdjfaldskjf
5992
void XInputSimularotImplWin::mouseScrollX(int length)
6093
{
61-
throw NotImplementedException();
94+
int scrollDirection = 1 * 50; // 1 left -1 right
95+
96+
if(length < 0){
97+
length *= -1;
98+
scrollDirection *= -1;
99+
}
100+
101+
for(int cnt = 0; cnt < length; cnt++)
102+
{
103+
INPUT in;
104+
in.type = INPUT_MOUSE;
105+
in.mi.dx = 0;
106+
in.mi.dy = 0;
107+
in.mi.dwFlags = MOUSEEVENTF_HWHEEL;
108+
in.mi.time = 0;
109+
in.mi.dwExtraInfo = 0;
110+
in.mi.mouseData = scrollDirection;// WHEEL_DELTA;
111+
SendInput(1,&in,sizeof(in));
112+
}
62113
}
63114

64115
void XInputSimularotImplWin::mouseScrollY(int length)
65116
{
66-
throw NotImplementedException();
117+
int scrollDirection = -1 * 50; // 1 up -1 down
118+
119+
if(length < 0){
120+
length *= -1;
121+
scrollDirection *= -1;
122+
}
123+
124+
for(int cnt = 0; cnt < length; cnt++)
125+
{
126+
INPUT in;
127+
in.type = INPUT_MOUSE;
128+
in.mi.dx = 0;
129+
in.mi.dy = 0;
130+
in.mi.dwFlags = MOUSEEVENTF_WHEEL;
131+
in.mi.time = 0;
132+
in.mi.dwExtraInfo = 0;
133+
in.mi.mouseData = scrollDirection;// WHEEL_DELTA;
134+
SendInput(1,&in,sizeof(in));
135+
}
67136
}
68137

69138
void XInputSimularotImplWin::keyDown(int key)

XInputSimulator/xinputsimularotimplwin.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,10 @@
2525
class XInputSimularotImplWin: public XInputSimulatorImpl
2626
{
2727
private:
28+
int currentX;
29+
int currentY;
30+
31+
void initCurrentMousePosition();
2832

2933
public:
3034
XInputSimularotImplWin();

XInputSimulator/xinputsimulatorimplmacos.cpp

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -91,8 +91,6 @@ void XInputSimulatorImplMacOs::mouseMoveRelative(int x, int y)
9191
//TODO use the button from parameter list
9292
void XInputSimulatorImplMacOs::mouseDown(int button)
9393
{
94-
//throw NotImplementedException();
95-
9694
CGEventRef mouseEv = CGEventCreateMouseEvent(
9795
NULL, kCGEventLeftMouseDown,
9896
CGPointMake(this->currentX, this->currentY),
@@ -107,8 +105,6 @@ void XInputSimulatorImplMacOs::mouseDown(int button)
107105
//TODO use the button from parameter list
108106
void XInputSimulatorImplMacOs::mouseUp(int button)
109107
{
110-
//throw NotImplementedException();
111-
112108
CGEventRef mouseEv = CGEventCreateMouseEvent(
113109
NULL, kCGEventLeftMouseUp,
114110
CGPointMake(this->currentX, this->currentY),
@@ -128,8 +124,6 @@ void XInputSimulatorImplMacOs::mouseClick(int button)
128124
//kajsdölfkjasdölfkjasldökfjaölsdkjfalsdkjfalskdjfaldskjfkajsdölfkjasdölfkjasldökfjaölsdkjfalsdkjfalskdjfaldskjfkajsdölfkjasdölfkjasldökfjaölsdkjfalsdkjfalskdjfaldskjfkajsdölfkjasdölfkjasldökfjaölsdkjfalsdkjfalskdjfaldskjfkajsdölfkjasdölfkjasldökfjaölsdkjfalsdkjfalskdjfaldskjfkajsdölfkjasdölfkjasldökfjaölsdkjfalsdkjfalskdjfaldskjfkajsdölfkjasdölfkjasldökfjaölsdkjfalsdkjfalskdjfaldskjfkajsdölfkjasdölfkjasldökfjaölsdkjfalsdkjfalskdjfaldskjfkajsdölfkjasdölfkjasldökfjaölsdkjfalsdkjfalskdjfaldskjfkajsdölfkjasdölfkjasldökfjaölsdkjfalsdkjfalskdjfaldskjfkajsdölfkjasdölfkjasldökfjaölsdkjfalsdkjfalskdjfaldskjfkajsdölfkjasdölfkjasldökfjaölsdkjfalsdkjfalskdjfaldskjfkajsdölfkjasdölfkjasldökfjaölsdkjfalsdkjfalskdjfaldskjfkajsdölfkjasdölfkjasldökfjaölsdkjfalsdkjfalskdjfaldskjfkajsdölfkjasdölfkjasldökfjaölsdkjfalsdkjfalskdjfaldskjfkajsdölfkjasdölfkjasldökfjaölsdkjfalsdkjfalskdjfaldskjfkajsdölfkjasdölfkjasldökfjaölsdkjfalsdkjfalskdjfaldskjf
129125
void XInputSimulatorImplMacOs::mouseScrollX(int length)
130126
{
131-
//throw NotImplementedException();
132-
133127
int scrollDirection = -1; // 1 left -1 right
134128

135129
if(length < 0){
@@ -158,8 +152,6 @@ void XInputSimulatorImplMacOs::mouseScrollX(int length)
158152

159153
void XInputSimulatorImplMacOs::mouseScrollY(int length)
160154
{
161-
//throw NotImplementedException();
162-
163155
int scrollDirection = -1; // 1 down -1 up
164156

165157
if(length < 0){

0 commit comments

Comments
 (0)