From 4e0470c3b416428cb0686cae6740b3005b569cdd Mon Sep 17 00:00:00 2001 From: Dustin Bensing Date: Tue, 16 Jul 2013 14:00:12 +0200 Subject: [PATCH] typo --- XInputSimulator/xinputsimulator.h | 4 +- XInputSimulator/xinputsimulatorimplwin.cpp | 148 +++++++++++++++++++++ XInputSimulator/xinputsimulatorimplwin.h | 51 +++++++ 3 files changed, 201 insertions(+), 2 deletions(-) create mode 100644 XInputSimulator/xinputsimulatorimplwin.cpp create mode 100644 XInputSimulator/xinputsimulatorimplwin.h diff --git a/XInputSimulator/xinputsimulator.h b/XInputSimulator/xinputsimulator.h index d525163..36f03e0 100644 --- a/XInputSimulator/xinputsimulator.h +++ b/XInputSimulator/xinputsimulator.h @@ -29,7 +29,7 @@ #elif __APPLE__ #include "xinputsimulatorimplmacos.h" #elif _WIN32 -#include "xinputsimularotimplwin.h" +#include "xinputsimulatorimplwin.h" #endif class XInputSimulator @@ -63,7 +63,7 @@ public: #elif __APPLE__ instance.implementation = new XInputSimulatorImplMacOs; #elif _WIN32 - instance.implementation = new XInputSimularotImplWin; + instance.implementation = new XInputSimulatorImplWin; #endif return instance; } diff --git a/XInputSimulator/xinputsimulatorimplwin.cpp b/XInputSimulator/xinputsimulatorimplwin.cpp new file mode 100644 index 0000000..bb3840f --- /dev/null +++ b/XInputSimulator/xinputsimulatorimplwin.cpp @@ -0,0 +1,148 @@ + +// Copyright 2013 Dustin Bensing + +// This file is part of XInputSimulator. + +// XInputSimulator is free software: you can redistribute it and/or modify +// it under the terms of the GNU Lesser Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// any later version. + +// XInputSimulator is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Lesser Public License for more details. + +// You should have received a copy of the GNU Lesser Public License +// along with XInputSimulator. If not, see . + +#ifdef _WIN32 + +#include "xinputsimulatorimplwin.h" +#include "notimplementedexception.h" +#include + +#include + +#define MOUSEEVENTF_HWHEEL 0x01000 + +XInputSimulatorImplWin::XInputSimulatorImplWin() +{ + this->initCurrentMousePosition(); +} + +void XInputSimulatorImplWin::initCurrentMousePosition() +{ + POINT p; + if (GetCursorPos(&p)) + { + this->currentX = p.x; + this->currentY = p.y; + } +} + + +void XInputSimulatorImplWin::mouseMoveTo(int x, int y) +{ + SetCursorPos(x, y); + + this->currentX = x; + this->currentY = y; +} + +void XInputSimulatorImplWin::mouseMoveRelative(int x, int y) +{ + 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 XInputSimulatorImplWin::mouseDown(int button) +{ + 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 XInputSimulatorImplWin::mouseUp(int button) +{ + 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 XInputSimulatorImplWin::mouseClick(int button) +{ + this->mouseDown(button); + //std::this_thread::sleep_for(std::chrono::milliseconds(1000)); + this->mouseUp(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 XInputSimulatorImplWin::mouseScrollX(int length) +{ + 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 XInputSimulatorImplWin::mouseScrollY(int length) +{ + 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 XInputSimulatorImplWin::keyDown(int key) +{ + throw NotImplementedException(); +} + +void XInputSimulatorImplWin::keyUp(int key) +{ + throw NotImplementedException(); +} + +#endif //win diff --git a/XInputSimulator/xinputsimulatorimplwin.h b/XInputSimulator/xinputsimulatorimplwin.h new file mode 100644 index 0000000..2b2ef36 --- /dev/null +++ b/XInputSimulator/xinputsimulatorimplwin.h @@ -0,0 +1,51 @@ +// Copyright 2013 Dustin Bensing + +// This file is part of XInputSimulator. + +// XInputSimulator is free software: you can redistribute it and/or modify +// it under the terms of the GNU Lesser Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// any later version. + +// XInputSimulator is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Lesser Public License for more details. + +// You should have received a copy of the GNU Lesser Public License +// along with XInputSimulator. If not, see . + +#ifdef _WIN32 + +#ifndef XINPUTSIMULATORIMPLWIN_H +#define XINPUTSIMULATORIMPLWIN_H + +#include "xinputsimulatorimpl.h" + +class XInputSimulatorImplWin: public XInputSimulatorImpl +{ +private: + int currentX; + int currentY; + + void initCurrentMousePosition(); + +public: + XInputSimulatorImplWin(); + ~XInputSimulatorImplWin(){} + + virtual void mouseMoveTo(int x, int y) override; + virtual void mouseMoveRelative(int x, int y) override; + virtual void mouseDown(int button) override; + virtual void mouseUp(int button) override; + virtual void mouseClick(int button) override; + virtual void mouseScrollX(int length) override; + virtual void mouseScrollY(int length) override; + + virtual void keyDown(int key) override; + virtual void keyUp(int key) override; +}; + +#endif // XINPUTSIMULATORIMPLWIN_H + +#endif //win