AntiMicroX
gamecontroller.h
Go to the documentation of this file.
1 /* antimicrox Gamepad to KB+M event mapper
2  * Copyright (C) 2015 Travis Nickles <nickles.travis@gmail.com>
3  * Copyright (C) 2020 Jagoda Górska <juliagoda.pl@protonmail>
4  *
5  * This program is free software: you can redistribute it and/or modify
6  * it under the terms of the GNU General Public License as published by
7  * the Free Software Foundation, either version 3 of the License, or
8  * (at your option) any later version.
9 
10  * This program is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13  * GNU General Public License for more details.
14 
15  * You should have received a copy of the GNU General Public License
16  * along with this program. If not, see <http://www.gnu.org/licenses/>.
17  */
18 
19 #ifndef GAMECONTROLLER_H
20 #define GAMECONTROLLER_H
21 
22 #include <SDL2/SDL_gamecontroller.h>
23 #include <inputdevice.h>
24 
25 class QXmlStreamReader;
26 class QXmlStreamWriter;
27 class AntiMicroSettings;
28 
45 {
46  Q_OBJECT
47 
48  public:
49  explicit GameController(SDL_GameController *controller, int deviceIndex, AntiMicroSettings *settings, int counterUniques,
50  QObject *parent);
51 
52  virtual QString getName() override;
53  virtual QString getSDLName() override;
54  virtual QString getXmlName() const override;
55 
56  // GUID available on SDL 2.
57  virtual QString getGUIDString() const override;
58  virtual QString getVendorString() const override;
59  virtual QString getProductIDString() const override;
60  virtual QString getSerialString() const override;
61  virtual QString getUniqueIDString() const override;
62  virtual QString getRawGUIDString() const override;
63  virtual QString getProductVersion() const override;
64  virtual QString getRawUniqueIDString() const override;
65  virtual QString getRawVendorString() const override;
66  virtual QString getRawProductIDString() const override;
67  virtual QString getRawProductVersion() const override;
68 
69  virtual bool isGameController() override;
70  virtual void closeSDLDevice() override;
71  virtual SDL_JoystickID getSDLJoystickID() override;
72 
73  virtual int getNumberRawButtons() override;
74  virtual int getNumberRawAxes() override;
75  virtual int getNumberRawHats() override;
76  virtual double getRawSensorRate(JoySensorType type) override;
77  virtual bool hasRawSensor(JoySensorType type) override;
78  void setCounterUniques(int counter) override;
79 
80  QString getBindStringForAxis(int index, bool trueIndex = true);
81  QString getBindStringForButton(int index, bool trueIndex = true);
82 
83  SDL_GameControllerButtonBind getBindForAxis(int index);
84  SDL_GameControllerButtonBind getBindForButton(int index);
85 
86  // bool isRelevantGUID(QString tempGUID);
87  bool isRelevantUniqueID(QString tempUniqueID);
88  void rawButtonEvent(int index, bool pressed);
89  void rawAxisEvent(int index, int value);
90  void rawDPadEvent(int index, int value);
91 
92  QHash<int, bool> const &getRawbuttons();
93  QHash<int, int> const &getAxisvalues();
94  QHash<int, int> const &getDpadvalues();
95 
96  SDL_GameController *getController() const;
97  virtual SDL_GameControllerType getControllerType() const override;
98 
99  protected slots:
100  virtual void axisActivatedEvent(int setindex, int axisindex, int value) override;
101  virtual void buttonClickEvent(int buttonindex) override;
102  virtual void buttonReleaseEvent(int buttonindex) override;
103 
104  private:
105  QHash<int, bool> rawbuttons;
106  QHash<int, int> axisvalues;
107  QHash<int, int> dpadvalues;
109 
110  SDL_JoystickID joystickID;
111  SDL_GameController *controller;
112  SDL_GameControllerType m_controller_type;
113 
114  void enableSensors();
115 };
116 
117 #endif // GAMECONTROLLER_H
GameController::buttonClickEvent
virtual void buttonClickEvent(int buttonindex) override
Definition: gamecontroller.cpp:288
GameController::axisActivatedEvent
virtual void axisActivatedEvent(int setindex, int axisindex, int value) override
Definition: gamecontroller.cpp:307
joycontrolstickbutton.h
GameController::joystickID
SDL_JoystickID joystickID
Definition: gamecontroller.h:110
GameController::counterUniques
int counterUniques
Definition: gamecontroller.h:108
GameController::controller
SDL_GameController * controller
Definition: gamecontroller.h:111
GameController::hasRawSensor
virtual bool hasRawSensor(JoySensorType type) override
Queries if the hardware has the given sensor type.
Definition: gamecontroller.cpp:217
gamecontroller.h
joycontrolstick.h
GameController::dpadvalues
QHash< int, int > dpadvalues
Definition: gamecontroller.h:107
GameController::axisvalues
QHash< int, int > axisvalues
Definition: gamecontroller.h:106
GameController::getNumberRawButtons
virtual int getNumberRawButtons() override
Definition: gamecontroller.cpp:186
GameController::getRawProductIDString
virtual QString getRawProductIDString() const override
Definition: gamecontroller.cpp:140
INFO
#define INFO()
Definition: logger.h:43
InputDevice::rawDPadButtonRelease
void rawDPadButtonRelease(int dpad, int buttonindex)
globalvariables.h
GameController::rawDPadEvent
void rawDPadEvent(int index, int value)
Definition: gamecontroller.cpp:362
InputDevice::rawButtonRelease
void rawButtonRelease(int index)
GameController::isRelevantUniqueID
bool isRelevantUniqueID(QString tempUniqueID)
Check if GUID passed matches the expected GUID for a device. Needed for xinput GUID abstraction.
Definition: gamecontroller.cpp:328
GameController::getRawSensorRate
virtual double getRawSensorRate(JoySensorType type) override
Queries the data rate of the given sensor from SDL.
Definition: gamecontroller.cpp:199
GameController::getBindStringForButton
QString getBindStringForButton(int index, bool trueIndex=true)
Definition: gamecontroller.cpp:250
InputDevice
Abstract class representing a hardware input device, e.g a joystick or controller.
Definition: inputdevice.h:50
InputDevice::rawButtonClick
void rawButtonClick(int index)
GameController::getUniqueIDString
virtual QString getUniqueIDString() const override
Definition: gamecontroller.cpp:100
GameController::getSDLJoystickID
virtual SDL_JoystickID getSDLJoystickID() override
Definition: gamecontroller.cpp:309
InputDevice::rawDPadButtonClick
void rawDPadButtonClick(int dpad, int buttonindex)
InputDevice::rawAxisActivated
void rawAxisActivated(int axis, int value)
InputDevice::isRelevantUniqueID
bool isRelevantUniqueID(QString tempUniqueID)
Check if GUID passed matches the expected GUID for a device. Needed for xinput GUID abstraction.
Definition: inputdevice.cpp:1652
AntiMicroSettings
Definition: antimicrosettings.h:26
GameController::rawbuttons
QHash< int, bool > rawbuttons
Definition: gamecontroller.h:105
JoySensorType
JoySensorType
Definition: joysensortype.h:23
GameController::getGUIDString
virtual QString getGUIDString() const override
Definition: gamecontroller.cpp:81
InputDevice::getRealJoyNumber
int getRealJoyNumber()
Definition: inputdevice.cpp:60
InputDevice::getDescription
virtual QString getDescription()
Definition: inputdevice.cpp:1310
GameController::getNumberRawHats
virtual int getNumberRawHats() override
Definition: gamecontroller.cpp:228
InputDevice::rawAxisMoved
void rawAxisMoved(int axis, int value)
GameController::getName
virtual QString getName() override
Definition: gamecontroller.cpp:62
GameController::closeSDLDevice
virtual void closeSDLDevice() override
Definition: gamecontroller.cpp:177
GameController::getProductVersion
virtual QString getProductVersion() const override
Definition: gamecontroller.cpp:102
GlobalVariables::InputDevice::NUMBER_JOYSETS
static const int NUMBER_JOYSETS
Definition: globalvariables.h:104
gamecontrollerset.h
InputDevice::rawAxisReleased
void rawAxisReleased(int axis, int value)
GameController::getRawUniqueIDString
virtual QString getRawUniqueIDString() const override
Definition: gamecontroller.cpp:172
GameController::rawButtonEvent
void rawButtonEvent(int index, bool pressed)
Definition: gamecontroller.cpp:330
GameController::getRawbuttons
const QHash< int, bool > & getRawbuttons()
Definition: gamecontroller.cpp:377
GameController::getRawGUIDString
virtual QString getRawGUIDString() const override
Definition: gamecontroller.cpp:104
GameController::m_controller_type
SDL_GameControllerType m_controller_type
Definition: gamecontroller.h:112
GameController::getSerialString
virtual QString getSerialString() const override
Definition: gamecontroller.cpp:87
GameController::getBindStringForAxis
QString getBindStringForAxis(int index, bool trueIndex=true)
Definition: gamecontroller.cpp:232
inputdevice.h
GameController::getController
SDL_GameController * getController() const
Definition: gamecontroller.cpp:383
InputDevice::enableSetConnections
void enableSetConnections(SetJoystick *setstick)
Establishes necessary connections for set change slots.
Definition: inputdevice.cpp:1132
GameController
Represents a typical gamepad (like PS4 or Xbox gamepad)
Definition: gamecontroller.h:44
GameController::setCounterUniques
void setCounterUniques(int counter) override
Definition: gamecontroller.cpp:230
common.h
GameController::getControllerType
virtual SDL_GameControllerType getControllerType() const override
Returns the current controller model.
Definition: gamecontroller.cpp:388
GlobalVariables::GameController::xmlName
static const QString xmlName
Definition: globalvariables.h:155
GameController::getDpadvalues
const QHash< int, int > & getDpadvalues()
Definition: gamecontroller.cpp:381
GameController::getRawVendorString
virtual QString getRawVendorString() const override
Definition: gamecontroller.cpp:124
GameController::getXmlName
virtual QString getXmlName() const override
Definition: gamecontroller.cpp:79
GameController::getRawProductVersion
virtual QString getRawProductVersion() const override
Definition: gamecontroller.cpp:156
GameController::getNumberRawAxes
virtual int getNumberRawAxes() override
Definition: gamecontroller.cpp:188
GameController::getProductIDString
virtual QString getProductIDString() const override
Definition: gamecontroller.cpp:85
WARN
#define WARN()
Definition: logger.h:44
GameController::isGameController
virtual bool isGameController() override
Check if device is using the SDL Game Controller API.
Definition: gamecontroller.cpp:315
GameController::GameController
GameController(SDL_GameController *controller, int deviceIndex, AntiMicroSettings *settings, int counterUniques, QObject *parent)
Definition: gamecontroller.cpp:37
GYROSCOPE
@ GYROSCOPE
Definition: joysensortype.h:26
InputDevice::rawAxisDeadZone
int rawAxisDeadZone
Definition: inputdevice.h:180
GameController::rawAxisEvent
void rawAxisEvent(int index, int value)
Definition: gamecontroller.cpp:345
GameController::getVendorString
virtual QString getVendorString() const override
Definition: gamecontroller.cpp:83
InputDevice::getJoystick_sets
QMap< int, SetJoystick * > & getJoystick_sets()
Definition: inputdevice.cpp:1715
GameController::buttonReleaseEvent
virtual void buttonReleaseEvent(int buttonindex) override
Definition: gamecontroller.cpp:290
number
it is up to the author donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License If the distribution and or use of the Library is restricted in certain countries either by patents or by copyrighted the original copyright holder who places the Library under this License may add an geographical distribution limitation excluding those so that distribution is permitted only in or among countries not thus excluded In such this License incorporates the limitation as if written in the body of this License The Free Software Foundation may publish revised and or new versions of the Lesser General Public License from time to time Such new versions will be similar in spirit to the present but may differ in detail to address new problems or concerns Each version is given a distinguishing version number If the Library specifies a version number of this License which applies to it and any later you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation If the Library does not specify a license version number
Definition: lgpl-2.1.txt:423
GameController::enableSensors
void enableSensors()
Definition: gamecontroller.cpp:292
GameController::getAxisvalues
const QHash< int, int > & getAxisvalues()
Definition: gamecontroller.cpp:379
gamecontrollerdpad.h
antimicrosettings.h
GameControllerSet
A SetJoystick specialized for gamepads.
Definition: gamecontrollerset.h:32
GameController::getBindForButton
SDL_GameControllerButtonBind getBindForButton(int index)
Definition: gamecontroller.cpp:283
GameController::getSDLName
virtual QString getSDLName() override
Definition: gamecontroller.cpp:67
ACCELEROMETER
@ ACCELEROMETER
Definition: joysensortype.h:25
GameController::getBindForAxis
SDL_GameControllerButtonBind getBindForAxis(int index)
Definition: gamecontroller.cpp:278