InputCommon / DolphinQt / Core: Add a "RelativeMouse" input which provides the raw delta mouse input

Co-authored-by: Jordan Woyak <jordan.woyak@gmail.com>
This commit is contained in:
iwubcode
2020-04-20 23:16:07 -05:00
parent 679d51c289
commit db4b4e40cb
10 changed files with 165 additions and 5 deletions

View File

@ -7,6 +7,7 @@
#include <windows.h>
#include "Common/Matrix.h"
#include "InputCommon/ControllerInterface/ControllerInterface.h"
#include "InputCommon/ControllerInterface/CoreDevice.h"
#include "InputCommon/ControllerInterface/DInput/DInput8.h"
@ -14,14 +15,23 @@ namespace ciface::DInput
{
void InitKeyboardMouse(IDirectInput8* const idi8, HWND hwnd);
using RelativeMouseState = RelativeInputState<Common::TVec3<LONG>>;
class KeyboardMouse : public Core::Device
{
private:
struct State
{
BYTE keyboard[256];
// Old smoothed relative mouse movement.
DIMOUSESTATE2 mouse;
// Normalized mouse cursor position.
Common::TVec2<ControlState> cursor;
// Raw relative mouse movement.
RelativeMouseState relative_mouse;
};
class Key : public Input
@ -53,6 +63,7 @@ private:
public:
Axis(u8 index, const LONG& axis, LONG range) : m_axis(axis), m_range(range), m_index(index) {}
std::string GetName() const override;
bool IsDetectable() const override { return false; }
ControlState GetState() const override;
private: