Play-/Source/ui_unix/PH_HidUnix.h

79 lines
1.7 KiB
C
Raw Normal View History

2016-07-26 00:52:31 +01:00
#ifndef _PH_HIDUnix_H_
#define _PH_HIDUnix_H_
#include "PadHandler.h"
#include <memory>
class CPH_HidUnix : public CPadHandler
{
public:
CPH_HidUnix();
virtual ~CPH_HidUnix();
void Update(uint8*) override;
static FactoryFunction GetFactoryFunction();
2016-09-06 00:23:31 +01:00
void InputValueCallbackPressed(uint32 valueRef, int type);
void InputValueCallbackReleased(uint32 valueRef, int type);
2016-07-26 00:52:31 +01:00
private:
class CBinding
{
public:
virtual ~CBinding() {}
2016-09-06 00:23:31 +01:00
virtual void ProcessEvent(uint32, uint32, int) = 0;
2016-07-26 00:52:31 +01:00
virtual uint32 GetValue() const = 0;
};
2016-09-06 00:23:31 +01:00
public:
2016-07-26 00:52:31 +01:00
typedef std::shared_ptr<CBinding> BindingPtr;
class CSimpleBinding : public CBinding
{
public:
2016-09-06 00:23:31 +01:00
CSimpleBinding(uint32, int t = 0);
2016-07-26 00:52:31 +01:00
virtual ~CSimpleBinding();
2016-09-06 00:23:31 +01:00
virtual void ProcessEvent(uint32, uint32, int);
2016-07-26 00:52:31 +01:00
virtual uint32 GetValue() const;
private:
uint32 m_keyCode;
uint32 m_state;
2016-09-06 00:23:31 +01:00
int m_controllerType;
2016-07-26 00:52:31 +01:00
};
class CSimulatedAxisBinding : public CBinding
{
public:
2016-09-06 00:23:31 +01:00
CSimulatedAxisBinding(uint32, uint32, int = 0);
2016-07-26 00:52:31 +01:00
virtual ~CSimulatedAxisBinding();
2016-09-06 00:23:31 +01:00
virtual void ProcessEvent(uint32, uint32, int);
2016-07-26 00:52:31 +01:00
virtual uint32 GetValue() const;
private:
uint32 m_negativeKeyCode;
uint32 m_positiveKeyCode;
uint32 m_negativeState;
uint32 m_positiveState;
2016-09-06 00:23:31 +01:00
int m_controllerType;
2016-07-26 00:52:31 +01:00
};
static CPadHandler* PadHandlerFactory(CPH_HidUnix*);
2016-09-06 00:23:31 +01:00
void InputValueCallback(uint32 value, uint32 action, int type);
2016-07-26 00:52:31 +01:00
BindingPtr m_bindings[PS2::CControllerInfo::MAX_BUTTONS];
2016-09-06 00:23:31 +01:00
void UpdateBinding(BindingPtr *bindarr);
2016-07-26 00:52:31 +01:00
};
#endif