summaryrefslogtreecommitdiff
path: root/Source/Core/InputCommon/Src/ControllerInterface/DirectInput/DirectInputKeyboardMouse.h
diff options
context:
space:
mode:
authorJordan Woyak <jordan.woyak@gmail.com>2010-04-13 05:15:38 +0000
committerJordan Woyak <jordan.woyak@gmail.com>2010-04-13 05:15:38 +0000
commitd8906d2a0ca92b636b2e228da6431621e0cc9479 (patch)
treebc07102268a7af7d6ab987045a0da8db5b861fa4 /Source/Core/InputCommon/Src/ControllerInterface/DirectInput/DirectInputKeyboardMouse.h
parent9592da1a9ba32d5574e210df93c36a5913ee0427 (diff)
Commited my new wiimote plugin work so far. Some code was copied from the current wiimote plugin. I have cleaned up most of the functions, but there are still a bunch of unused structs and stuff that I need to clean up.
Moved ControllerInterface to InputCommon. Moved GCPadNew GUI/Config code to a new project, InputPluginCommon. It is used by both GCPadNew and WiimoteNew. I hope that I included everyone's fixes to GCPadNew and ControllerInterface. git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@5355 8ced0084-cf51-0410-be5f-012b33b47a6e
Diffstat (limited to 'Source/Core/InputCommon/Src/ControllerInterface/DirectInput/DirectInputKeyboardMouse.h')
-rw-r--r--Source/Core/InputCommon/Src/ControllerInterface/DirectInput/DirectInputKeyboardMouse.h125
1 files changed, 125 insertions, 0 deletions
diff --git a/Source/Core/InputCommon/Src/ControllerInterface/DirectInput/DirectInputKeyboardMouse.h b/Source/Core/InputCommon/Src/ControllerInterface/DirectInput/DirectInputKeyboardMouse.h
new file mode 100644
index 0000000000..6af5fb10d0
--- /dev/null
+++ b/Source/Core/InputCommon/Src/ControllerInterface/DirectInput/DirectInputKeyboardMouse.h
@@ -0,0 +1,125 @@
+#ifndef _CIFACE_DIRECTINPUT_KBM_H_
+#define _CIFACE_DIRECTINPUT_KBM_H_
+
+#include "../ControllerInterface.h"
+
+#define DIRECTINPUT_VERSION 0x0800
+#define WIN32_LEAN_AND_MEAN
+#define NOMINMAX
+#include <Windows.h>
+#include <dinput.h>
+
+#include <wx/stopwatch.h>
+#include <wx/utils.h>
+
+namespace ciface
+{
+namespace DirectInput
+{
+
+void InitKeyboardMouse( IDirectInput8* const idi8, std::vector<ControllerInterface::Device*>& devices );
+
+class KeyboardMouse : public ControllerInterface::Device
+{
+ friend class ControllerInterface;
+ friend class ControllerInterface::ControlReference;
+
+protected:
+
+ struct State
+ {
+ BYTE keyboard[256];
+ DIMOUSESTATE2 mouse;
+ };
+
+ class Input : public ControllerInterface::Device::Input
+ {
+ friend class KeyboardMouse;
+ protected:
+ virtual ControlState GetState( const State* const boardstate ) = 0;
+ };
+
+ class Output : public ControllerInterface::Device::Output
+ {
+ friend class KeyboardMouse;
+ protected:
+ virtual void SetState( const ControlState state, unsigned char* const state_out ) = 0;
+ };
+
+ class Key : public Input
+ {
+ friend class KeyboardMouse;
+ public:
+ std::string GetName() const;
+ protected:
+ Key( const unsigned int index ) : m_index(index) {}
+ ControlState GetState( const State* const state );
+ private:
+ const unsigned int m_index;
+ };
+
+ class Button : public Input
+ {
+ friend class KeyboardMouse;
+ public:
+ std::string GetName() const;
+ protected:
+ Button( const unsigned int index ) : m_index(index) {}
+ ControlState GetState( const State* const state );
+ private:
+ const unsigned int m_index;
+ };
+
+ class Axis : public Input
+ {
+ friend class KeyboardMouse;
+ public:
+ std::string GetName() const;
+ protected:
+ Axis( const unsigned int index, const LONG range ) : m_index(index), m_range(range) {}
+ ControlState GetState( const State* const state );
+ private:
+ const unsigned int m_index;
+ const LONG m_range;
+ };
+
+ class Light : public Output
+ {
+ friend class KeyboardMouse;
+ public:
+ std::string GetName() const;
+ protected:
+ Light( const unsigned int index ) : m_index(index) {}
+ void SetState( const ControlState state, unsigned char* const state_out );
+ private:
+ const unsigned int m_index;
+ };
+
+ bool UpdateInput();
+ bool UpdateOutput();
+
+ ControlState GetInputState( const ControllerInterface::Device::Input* const input );
+ void SetOutputState( const ControllerInterface::Device::Output* const input, const ControlState state );
+
+public:
+ 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;
+
+ wxLongLong m_last_update;
+ State m_state_in;
+ unsigned char m_state_out[3]; // NUM CAPS SCROLL
+ bool m_current_state_out[3]; // NUM CAPS SCROLL
+};
+
+}
+}
+
+#endif