15 #include <unordered_set>
17 #include <QtCore/QString>
19 #include "AxisValue.h"
22 #include "StandardControls.h"
23 #include "DeviceProxy.h"
27 const unsigned int CONTROLLER_0_EVENT = 1500U;
28 const unsigned int CONTROLLER_1_EVENT = 1501U;
30 namespace controller {
33 using EndpointPointer = std::shared_ptr<Endpoint>;
100 InputDevice(
const QString& name) : _name(name) {}
101 virtual ~InputDevice() =
default;
103 using Pointer = std::shared_ptr<InputDevice>;
105 typedef std::unordered_set<int> ButtonPressedMap;
106 typedef std::map<int, AxisValue> AxisStateMap;
107 typedef std::map<int, Pose> PoseStateMap;
110 float getButton(
int channel)
const;
111 AxisValue getAxis(
int channel)
const;
112 Pose getPose(
int channel)
const;
114 AxisValue getValue(
const Input& input)
const;
115 AxisValue getValue(ChannelType channelType, uint16_t channel)
const;
116 Pose getPoseValue(uint16_t channel)
const;
118 const QString& getName()
const {
return _name; }
121 virtual bool triggerHapticPulse(
float strength,
float duration, uint16_t index) {
return false; }
125 virtual void update(
float deltaTime,
const InputCalibrationData& inputCalibrationData) {};
127 virtual void focusOutEvent() {};
129 int getDeviceID() {
return _deviceID; }
130 void setDeviceID(
int deviceID) { _deviceID = deviceID; }
132 Input makeInput(StandardButtonChannel button)
const;
133 Input makeInput(StandardAxisChannel axis)
const;
134 Input makeInput(StandardPoseChannel pose)
const;
135 Input::NamedPair makePair(StandardButtonChannel button,
const QString& name)
const;
136 Input::NamedPair makePair(StandardAxisChannel button,
const QString& name)
const;
137 Input::NamedPair makePair(StandardPoseChannel button,
const QString& name)
const;
140 friend class UserInputMapper;
142 virtual Input::NamedVector getAvailableInputs()
const = 0;
143 virtual QStringList getDefaultMappingConfigs()
const {
return QStringList() << getDefaultMappingConfig(); }
144 virtual QString getDefaultMappingConfig()
const {
return QString(); }
145 virtual EndpointPointer createEndpoint(
const Input& input)
const;
147 uint16_t _deviceID { Input::INVALID_DEVICE };
151 ButtonPressedMap _buttonPressedMap;
152 AxisStateMap _axisStateMap;
153 PoseStateMap _poseStateMap;