added win support for mouse like linux and mac

This commit is contained in:
Dustin Bensing 2013-07-16 13:43:44 +02:00
parent c159b1e110
commit 92bdacddca
4 changed files with 99 additions and 35 deletions

View File

@ -33,26 +33,25 @@ int main()
XInputSimulator &sim = XInputSimulator::getInstance();
waitABit();
waitABit();
sim.mouseMoveTo(500,400);
// waitABit();
// sim.mouseMoveRelative(400, -100);
// waitABit();
// sim.mouseDown(1);
// waitABit();
// sim.mouseMoveRelative(0, 300);
// waitABit();
// sim.mouseUp(1);
// waitABit();
// //scroll down and up
// sim.mouseScrollY(10);
// waitABit();
// sim.mouseScrollY(-10);
// //scroll left and right
// waitABit();
// sim.mouseScrollX(10);
// waitABit();
// sim.mouseScrollX(-10);
waitABit();
sim.mouseMoveRelative(400, -100);
waitABit();
sim.mouseDown(1);
waitABit();
sim.mouseMoveRelative(0, 300);
waitABit();
sim.mouseUp(1);
waitABit();
//scroll down and up
sim.mouseScrollY(10);
waitABit();
sim.mouseScrollY(-10);
//scroll left and right
waitABit();
sim.mouseScrollX(10);
waitABit();
sim.mouseScrollX(-10);
waitABit();

View File

@ -22,35 +22,68 @@
#include "notimplementedexception.h"
#include <iostream>
#include <Windows.h>
#define MOUSEEVENTF_HWHEEL 0x01000
XInputSimularotImplWin::XInputSimularotImplWin()
{
this->initCurrentMousePosition();
}
void XInputSimularotImplWin::initCurrentMousePosition()
{
POINT p;
if (GetCursorPos(&p))
{
this->currentX = p.x;
this->currentY = p.y;
}
}
void XInputSimularotImplWin::mouseMoveTo(int x, int y)
{
std::cout << "move the mouse!\n";
SetCursorPos(x, y);
this->currentX = x;
this->currentY = y;
}
void XInputSimularotImplWin::mouseMoveRelative(int x, int y)
{
throw NotImplementedException();
int newX = this->currentX + x;
int newY = this->currentY + y;
SetCursorPos(newX, newY);
this->currentX = newX;
this->currentY = newY;
}
//TODO use the button from parameter list
void XInputSimularotImplWin::mouseDown(int button)
{
throw NotImplementedException();
INPUT in={0};
in.type = INPUT_MOUSE;
in.mi.dwFlags = MOUSEEVENTF_LEFTDOWN;
SendInput(1,&in,sizeof(INPUT));
ZeroMemory(&in,sizeof(INPUT));
}
//TODO use the button from parameter list
void XInputSimularotImplWin::mouseUp(int button)
{
throw NotImplementedException();
INPUT in={0};
in.type = INPUT_MOUSE;
in.mi.dwFlags = MOUSEEVENTF_LEFTUP;
SendInput(1,&in,sizeof(INPUT));
ZeroMemory(&in,sizeof(INPUT));
}
//TODO use the button from parameter list
void XInputSimularotImplWin::mouseClick(int button)
{
throw NotImplementedException();
this->mouseDown(button);
//std::this_thread::sleep_for(std::chrono::milliseconds(1000));
this->mouseUp(button);
@ -58,12 +91,48 @@ void XInputSimularotImplWin::mouseClick(int button)
//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
void XInputSimularotImplWin::mouseScrollX(int length)
{
throw NotImplementedException();
int scrollDirection = 1 * 50; // 1 left -1 right
if(length < 0){
length *= -1;
scrollDirection *= -1;
}
for(int cnt = 0; cnt < length; cnt++)
{
INPUT in;
in.type = INPUT_MOUSE;
in.mi.dx = 0;
in.mi.dy = 0;
in.mi.dwFlags = MOUSEEVENTF_HWHEEL;
in.mi.time = 0;
in.mi.dwExtraInfo = 0;
in.mi.mouseData = scrollDirection;// WHEEL_DELTA;
SendInput(1,&in,sizeof(in));
}
}
void XInputSimularotImplWin::mouseScrollY(int length)
{
throw NotImplementedException();
int scrollDirection = -1 * 50; // 1 up -1 down
if(length < 0){
length *= -1;
scrollDirection *= -1;
}
for(int cnt = 0; cnt < length; cnt++)
{
INPUT in;
in.type = INPUT_MOUSE;
in.mi.dx = 0;
in.mi.dy = 0;
in.mi.dwFlags = MOUSEEVENTF_WHEEL;
in.mi.time = 0;
in.mi.dwExtraInfo = 0;
in.mi.mouseData = scrollDirection;// WHEEL_DELTA;
SendInput(1,&in,sizeof(in));
}
}
void XInputSimularotImplWin::keyDown(int key)

View File

@ -25,6 +25,10 @@
class XInputSimularotImplWin: public XInputSimulatorImpl
{
private:
int currentX;
int currentY;
void initCurrentMousePosition();
public:
XInputSimularotImplWin();

View File

@ -91,8 +91,6 @@ void XInputSimulatorImplMacOs::mouseMoveRelative(int x, int y)
//TODO use the button from parameter list
void XInputSimulatorImplMacOs::mouseDown(int button)
{
//throw NotImplementedException();
CGEventRef mouseEv = CGEventCreateMouseEvent(
NULL, kCGEventLeftMouseDown,
CGPointMake(this->currentX, this->currentY),
@ -107,8 +105,6 @@ void XInputSimulatorImplMacOs::mouseDown(int button)
//TODO use the button from parameter list
void XInputSimulatorImplMacOs::mouseUp(int button)
{
//throw NotImplementedException();
CGEventRef mouseEv = CGEventCreateMouseEvent(
NULL, kCGEventLeftMouseUp,
CGPointMake(this->currentX, this->currentY),
@ -128,8 +124,6 @@ void XInputSimulatorImplMacOs::mouseClick(int button)
//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
void XInputSimulatorImplMacOs::mouseScrollX(int length)
{
//throw NotImplementedException();
int scrollDirection = -1; // 1 left -1 right
if(length < 0){
@ -158,8 +152,6 @@ void XInputSimulatorImplMacOs::mouseScrollX(int length)
void XInputSimulatorImplMacOs::mouseScrollY(int length)
{
//throw NotImplementedException();
int scrollDirection = -1; // 1 down -1 up
if(length < 0){