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
|