AntiMicroX
Loading...
Searching...
No Matches
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
25class QXmlStreamReader;
26class QXmlStreamWriter;
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;
113
114 void enableSensors();
115};
116
117#endif // GAMECONTROLLER_H
Definition antimicrosettings.h:27
Represents a typical gamepad (like PS4 or Xbox gamepad)
Definition gamecontroller.h:45
QHash< int, bool > rawbuttons
Definition gamecontroller.h:105
virtual QString getUniqueIDString() const override
Definition gamecontroller.cpp:99
void enableSensors()
Definition gamecontroller.cpp:286
virtual QString getXmlName() const override
Definition gamecontroller.cpp:78
virtual QString getRawUniqueIDString() const override
Definition gamecontroller.cpp:171
SDL_GameControllerButtonBind getBindForButton(int index)
Definition gamecontroller.cpp:277
void setCounterUniques(int counter) override
Definition gamecontroller.cpp:224
virtual int getNumberRawButtons() override
Definition gamecontroller.cpp:185
QString getBindStringForAxis(int index, bool trueIndex=true)
Definition gamecontroller.cpp:226
QHash< int, bool > const & getRawbuttons()
Definition gamecontroller.cpp:371
virtual int getNumberRawAxes() override
Definition gamecontroller.cpp:187
virtual QString getSerialString() const override
Definition gamecontroller.cpp:86
SDL_GameController * getController() const
Definition gamecontroller.cpp:377
virtual bool hasRawSensor(JoySensorType type) override
Queries if the hardware has the given sensor type.
Definition gamecontroller.cpp:211
virtual QString getRawProductVersion() const override
Definition gamecontroller.cpp:155
virtual QString getRawProductIDString() const override
Definition gamecontroller.cpp:139
virtual SDL_JoystickID getSDLJoystickID() override
Definition gamecontroller.cpp:303
virtual void axisActivatedEvent(int setindex, int axisindex, int value) override
Definition gamecontroller.cpp:301
SDL_GameControllerButtonBind getBindForAxis(int index)
Definition gamecontroller.cpp:272
SDL_JoystickID joystickID
Definition gamecontroller.h:110
void rawDPadEvent(int index, int value)
Definition gamecontroller.cpp:356
virtual int getNumberRawHats() override
Definition gamecontroller.cpp:222
virtual void buttonReleaseEvent(int buttonindex) override
Definition gamecontroller.cpp:284
QHash< int, int > const & getDpadvalues()
Definition gamecontroller.cpp:375
int counterUniques
Definition gamecontroller.h:108
bool isRelevantUniqueID(QString tempUniqueID)
Check if GUID passed matches the expected GUID for a device. Needed for xinput GUID abstraction.
Definition gamecontroller.cpp:322
SDL_GameControllerType m_controller_type
Definition gamecontroller.h:112
virtual double getRawSensorRate(JoySensorType type) override
Queries the data rate of the given sensor from SDL.
Definition gamecontroller.cpp:193
virtual bool isGameController() override
Check if device is using the SDL Game Controller API.
Definition gamecontroller.cpp:309
void rawButtonEvent(int index, bool pressed)
Definition gamecontroller.cpp:324
virtual SDL_GameControllerType getControllerType() const override
Returns the current controller model.
Definition gamecontroller.cpp:382
virtual QString getVendorString() const override
Definition gamecontroller.cpp:82
virtual QString getRawGUIDString() const override
Definition gamecontroller.cpp:103
QHash< int, int > const & getAxisvalues()
Definition gamecontroller.cpp:373
virtual QString getGUIDString() const override
Definition gamecontroller.cpp:80
virtual void buttonClickEvent(int buttonindex) override
Definition gamecontroller.cpp:282
QString getBindStringForButton(int index, bool trueIndex=true)
Definition gamecontroller.cpp:244
virtual QString getRawVendorString() const override
Definition gamecontroller.cpp:123
QHash< int, int > axisvalues
Definition gamecontroller.h:106
virtual QString getProductIDString() const override
Definition gamecontroller.cpp:84
virtual QString getSDLName() override
Definition gamecontroller.cpp:66
SDL_GameController * controller
Definition gamecontroller.h:111
virtual QString getName() override
Definition gamecontroller.cpp:61
void rawAxisEvent(int index, int value)
Definition gamecontroller.cpp:339
virtual void closeSDLDevice() override
Definition gamecontroller.cpp:176
QHash< int, int > dpadvalues
Definition gamecontroller.h:107
virtual QString getProductVersion() const override
Definition gamecontroller.cpp:101
Abstract class representing a hardware input device, e.g a joystick or controller.
Definition inputdevice.h:51
SDL_GameControllerType
Definition inputdevice.h:37
JoySensorType
Definition joysensortype.h:24