diff options
| author | Jules Blok <jules.blok@gmail.com> | 2015-06-10 00:00:12 +0200 |
|---|---|---|
| committer | Jules Blok <jules.blok@gmail.com> | 2015-06-10 00:00:12 +0200 |
| commit | 7dfced21a2e5aac7195e0e1ad76468e30306766b (patch) | |
| tree | bd671b639d3d911460b767caabad8fc8a759a6bf /Source/Core/InputCommon/ControllerInterface/DInput/DInputKeyboardMouse.h | |
| parent | c25be031fc1031d795157d8344b87b7841145197 (diff) | |
| parent | 7b0a65e295c784f9d573f2ef52d4e2a7b9bb2889 (diff) | |
Merge branch 'master' into stable
Diffstat (limited to 'Source/Core/InputCommon/ControllerInterface/DInput/DInputKeyboardMouse.h')
| -rw-r--r-- | Source/Core/InputCommon/ControllerInterface/DInput/DInputKeyboardMouse.h | 98 |
1 files changed, 98 insertions, 0 deletions
diff --git a/Source/Core/InputCommon/ControllerInterface/DInput/DInputKeyboardMouse.h b/Source/Core/InputCommon/ControllerInterface/DInput/DInputKeyboardMouse.h new file mode 100644 index 0000000000..db4d363df0 --- /dev/null +++ b/Source/Core/InputCommon/ControllerInterface/DInput/DInputKeyboardMouse.h @@ -0,0 +1,98 @@ +// Copyright 2010 Dolphin Emulator Project +// Licensed under GPLv2+ +// Refer to the license.txt file included. + +#pragma once + +#include <windows.h> + +#include "InputCommon/ControllerInterface/Device.h" +#include "InputCommon/ControllerInterface/DInput/DInput8.h" + +namespace ciface +{ +namespace DInput +{ + +void InitKeyboardMouse(IDirectInput8* const idi8, std::vector<Core::Device*>& devices, HWND _hwnd); + +class KeyboardMouse : public Core::Device +{ +private: + struct State + { + BYTE keyboard[256]; + DIMOUSESTATE2 mouse; + struct + { + ControlState x, y; + } cursor; + }; + + class Key : public Input + { + public: + std::string GetName() const; + Key(u8 index, const BYTE& key) : m_index(index), m_key(key) {} + ControlState GetState() const; + private: + const BYTE& m_key; + const u8 m_index; + }; + + class Button : public Input + { + public: + std::string GetName() const; + Button(u8 index, const BYTE& button) : m_index(index), m_button(button) {} + ControlState GetState() const; + private: + const BYTE& m_button; + const u8 m_index; + }; + + class Axis : public Input + { + public: + std::string GetName() const; + Axis(u8 index, const LONG& axis, LONG range) : m_index(index), m_axis(axis), m_range(range) {} + ControlState GetState() const; + private: + const LONG& m_axis; + const LONG m_range; + const u8 m_index; + }; + + class Cursor : public Input + { + public: + std::string GetName() const; + bool IsDetectable() { return false; } + Cursor(u8 index, const ControlState& axis, const bool positive) : m_index(index), m_axis(axis), m_positive(positive) {} + ControlState GetState() const; + private: + const ControlState& m_axis; + const u8 m_index; + const bool m_positive; + }; + +public: + void UpdateInput() override; + + KeyboardMouse(const LPDIRECTINPUTDEVICE8 kb_device, const LPDIRECTINPUTDEVICE8 mo_device); + ~KeyboardMouse(); + + std::string GetName() const; + int GetId() const; + std::string GetSource() const; + +private: + const LPDIRECTINPUTDEVICE8 m_kb_device; + const LPDIRECTINPUTDEVICE8 m_mo_device; + + DWORD m_last_update; + State m_state_in; +}; + +} +} |
