AntiMicroX
Loading...
Searching...
No Matches
joyaxis.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 JOYAXIS_H
20#define JOYAXIS_H
21
22#include <QList>
23#include <QObject>
24
27
29class JoyControlStick;
30class SetJoystick;
31class JoyAxisButton;
34class JoyAxis;
35
40class JoyAxis : public QObject
41{
43
44 public:
45 explicit JoyAxis(int index, int originset, SetJoystick *parentSet, QObject *parent);
46 virtual ~JoyAxis();
47
56
57 void joyEvent(int value, bool ignoresets = false, bool updateLastValues = true); // JoyAxisEvent class
58 void queuePendingEvent(int value, bool ignoresets = false, bool updateLastValues = true); // JoyAxisEvent class
59 void activatePendingEvent(); // JoyAxisEvent class
60 bool hasPendingEvent(); // JoyAxisEvent class
61 void clearPendingEvent(); // JoyAxisEvent class
62 bool inDeadZone(int value);
63
64 virtual QString getName(bool forceFullFormat = false, bool displayNames = false);
65 virtual QString getPartialName(bool forceFullFormat = false, bool displayNames = false);
66 virtual QString getXmlName(); // JoyAxisXml class
67
68 void setIndex(int index);
69 int getIndex();
70 int getRealJoyIndex();
71
74
75 int getDeadZone();
76
77 int getMaxZoneValue();
78 void setThrottle(int value);
79 void setInitialThrottle(int value);
81 int getThrottle();
87
89 double getDistanceFromDeadZone(int value);
90 double getRawDistance(int value);
91
93 void removeControlStick(bool performRelease = true);
94 bool isPartControlStick();
97 void removeVDPads();
98
102
106
107 void setButtonsSpringWidth(int value);
109
110 void setButtonsSpringHeight(int value);
112
113 void setButtonsSensitivity(double value);
115
116 void setButtonsWheelSpeedX(int value);
117 void setButtonsWheelSpeedY(int value);
118
120
121 bool isCalibrated() const;
122 void resetCalibration();
123 void getCalibration(double *offset, double *gain) const;
124 void setCalibration(double offset, double gain);
125
126 virtual QString getAxisName();
127 virtual int getDefaultDeadZone();
128 virtual int getDefaultMaxZone();
130
131 virtual void setDefaultAxisName(QString tempname);
132 virtual QString getDefaultAxisName();
133
135
136 virtual bool isDefault();
137
138 bool isRelativeSpring();
140
144 void setCurrentRawValue(int value);
145
146 // Don't use direct assignment but copying from a current axis.
149
152
153 virtual void eventReset(); // JoyAxisEvent class
154
156 int calculateThrottledValue(int value);
157
158 virtual bool hasHapticTrigger() const;
159 virtual HapticTriggerPs5 *getHapticTrigger() const;
161
162 protected:
163 void createDeskEvent(bool ignoresets = false); // JoyAxisEvent class
164 void adjustRange();
165
166 void performCalibration(int value);
167 void stickPassEvent(int value, bool ignoresets = false, bool updateLastValues = true); // JoyAxisEvent class
168
171
174
185
190
192
193 // TODO: CHECK IF PROPERTY IS NEEDED.
194 // bool pendingUpdateLastValues;
195
196 signals:
197 void active(int value);
198 void released(int value);
199 void moved(int value);
205
206 public slots:
207 virtual void reset();
208 virtual void reset(int index);
210
211 void setDeadZone(int value);
212 void setMaxZoneValue(int value);
214 void setButtonsSpringRelativeStatus(bool value);
215 void setButtonsEasingDuration(double value);
216
219
220 private:
222
224
226
228 double m_offset;
229 double m_gain;
230
231 void resetPrivateVars();
232};
233
234#endif // JOYAXIS_H
Represents a single haptic trigger effect on a PS5 controller. See https://gist.github....
Definition haptictriggerps5.h:34
Definition joyaxisbutton.h:30
Represents single axis of of joystick (or other input)
Definition joyaxis.h:41
int getCurrentThrottledValue()
Definition joyaxis.cpp:253
int getThrottle()
Definition joyaxis.cpp:423
int getCurrentThrottledDeadValue()
Definition joyaxis.cpp:483
virtual QString getXmlName()
Definition joyaxis.cpp:769
void released(int value)
int getCurrentRawValue()
Definition joyaxis.cpp:463
int calculateThrottledValue(int value)
Definition joyaxis.cpp:257
int currentThrottledValue
Definition joyaxis.h:179
void clearPendingEvent()
Definition joyaxis.cpp:89
bool isPartControlStick()
Definition joyaxis.cpp:522
void createDeskEvent(bool ignoresets=false)
Definition joyaxis.cpp:319
SetJoystick * getParentSet()
Definition joyaxis.cpp:777
void setIndex(int index)
Definition joyaxis.cpp:315
double getButtonsPresetSensitivity()
Definition joyaxis.cpp:680
void setButtonsMouseMode(JoyButton::JoyMouseMovementMode mode)
Definition joyaxis.cpp:586
SetJoystick * m_parentSet
Definition joyaxis.h:225
void adjustRange()
Definition joyaxis.cpp:465
bool hasPendingEvent()
Definition joyaxis.cpp:87
int getCurrentlyAssignedSet()
Definition joyaxis.cpp:512
int currentThrottledDeadValue
Definition joyaxis.h:180
virtual QString getDefaultAxisName()
Definition joyaxis.cpp:738
JoyButton::JoyExtraAccelerationCurve getExtraAccelerationCurve()
Definition joyaxis.cpp:887
void setButtonsMouseCurve(JoyButton::JoyMouseCurve mouseCurve)
Definition joyaxis.cpp:614
int currentRawValue
Definition joyaxis.h:178
bool hasSameButtonsMouseCurve()
Definition joyaxis.cpp:620
void performCalibration(int value)
Definition joyaxis.cpp:805
JoyAxisButton * activeButton
Definition joyaxis.h:191
void setDeadZone(int value)
Definition joyaxis.cpp:354
void setInitialThrottle(int value)
Set the initial calibrated throttle based on the first event passed by SDL.
Definition joyaxis.cpp:412
JoyButton::JoyMouseCurve getButtonsPresetMouseCurve()
Definition joyaxis.cpp:631
virtual ~JoyAxis()
Definition joyaxis.cpp:54
void setButtonsSpringRelativeStatus(bool value)
Definition joyaxis.cpp:789
int pendingValue
Definition joyaxis.h:184
int m_index
Definition joyaxis.h:181
void setButtonsWheelSpeedY(int value)
Definition joyaxis.cpp:730
void copyThrottledValues(JoyAxis *srcAxis)
Definition joyaxis.cpp:905
bool isRelativeSpring()
Definition joyaxis.cpp:795
void setButtonsSpringWidth(int value)
Definition joyaxis.cpp:642
virtual ThrottleTypes getDefaultThrottle()
Definition joyaxis.cpp:775
double m_offset
Definition joyaxis.h:228
bool pendingEvent
Definition joyaxis.h:187
bool hasSameButtonsMouseMode()
Definition joyaxis.cpp:592
void setButtonsEasingDuration(double value)
Definition joyaxis.cpp:833
virtual int getDefaultMaxZone()
Definition joyaxis.cpp:773
virtual QString getAxisName()
Definition joyaxis.cpp:722
int deadZone
Definition joyaxis.h:176
double getButtonsEasingDuration()
Definition joyaxis.cpp:839
QString defaultAxisName
Definition joyaxis.h:173
void activatePendingEvent()
Definition joyaxis.cpp:75
int getLastKnownThrottleValue()
Definition joyaxis.cpp:851
void propertyUpdated()
JoyAxisButton * paxisbutton
Definition joyaxis.h:169
bool pendingIgnoreSets
Definition joyaxis.h:188
int lastKnownRawValue
Definition joyaxis.h:183
int m_originset
Definition joyaxis.h:221
double m_gain
Definition joyaxis.h:229
ThrottleTypes
Definition joyaxis.h:49
@ PositiveHalfThrottle
Definition joyaxis.h:54
@ NegativeThrottle
Definition joyaxis.h:51
@ NegativeHalfThrottle
Definition joyaxis.h:50
@ PositiveThrottle
Definition joyaxis.h:53
@ NormalThrottle
Definition joyaxis.h:52
void throttleChangePropogated(int index)
void copyRawValues(JoyAxis *srcAxis)
Definition joyaxis.cpp:899
JoyControlStick * m_stick
Definition joyaxis.h:223
void copyAssignments(JoyAxis *destAxis)
Definition joyaxis.cpp:820
virtual int getDefaultDeadZone()
Definition joyaxis.cpp:771
void setAxisName(QString tempName)
Definition joyaxis.cpp:712
void removeVDPads()
Definition joyaxis.cpp:550
void resetCalibration()
Resets the axis calibration back to uncalibrated state.
Definition joyaxis.cpp:926
void updateCurrentThrottledValue(int newValue)
Definition joyaxis.cpp:255
void setExtraAccelerationCurve(JoyButton::JoyExtraAccelerationCurve curve)
Definition joyaxis.cpp:881
virtual QString getName(bool forceFullFormat=false, bool displayNames=false)
Definition joyaxis.cpp:198
virtual QString getPartialName(bool forceFullFormat=false, bool displayNames=false)
Definition joyaxis.cpp:740
void setButtonsSensitivity(double value)
Definition joyaxis.cpp:674
bool isActive
Definition joyaxis.h:186
virtual bool hasHapticTrigger() const
Checks if the axis supports haptic trigger feedback.
Definition joyaxis.cpp:302
JoyAxisButton * getAxisButtonByValue(int value)
Definition joyaxis.cpp:690
void joyEvent(int value, bool ignoresets=false, bool updateLastValues=true)
Definition joyaxis.cpp:130
int getRealJoyIndex()
Definition joyaxis.cpp:251
virtual void reset()
Definition joyaxis.cpp:425
void removeControlStick(bool performRelease=true)
Definition joyaxis.cpp:526
int getMaxZoneValue()
Definition joyaxis.cpp:382
int lastKnownThottledValue
Definition joyaxis.h:182
virtual void setDefaultAxisName(QString tempname)
Definition joyaxis.cpp:736
int getProperReleaseValue()
Determine an appropriate release value for an axis depending on the current throttle setting being us...
Definition joyaxis.cpp:860
void throttleChanged()
void setThrottle(int value)
Set throttle value for axis.
Definition joyaxis.cpp:388
JoyButton::JoyMouseMovementMode getButtonsPresetMouseMode()
Definition joyaxis.cpp:604
JoyControlStick * getControlStick()
Definition joyaxis.cpp:524
JoyAxisButton * getNAxisButton()
Definition joyaxis.cpp:461
void setButtonsWheelSpeedX(int value)
Definition joyaxis.cpp:724
void axisNameChanged()
void active(int value)
void queuePendingEvent(int value, bool ignoresets=false, bool updateLastValues=true)
Definition joyaxis.cpp:56
int getButtonsPresetSpringHeight()
Definition joyaxis.cpp:664
void setControlStick(JoyControlStick *stick)
Definition joyaxis.cpp:514
int getLastKnownRawValue()
Definition joyaxis.cpp:853
void establishPropertyUpdatedConnection()
Definition joyaxis.cpp:779
bool eventActive
Definition joyaxis.h:189
void setCurrentRawValue(int value)
Definition joyaxis.cpp:581
virtual void setHapticTriggerMode(HapticTriggerModePs5)
Changes the haptic trigger effect mode.
Definition joyaxis.cpp:313
static const ThrottleTypes DEFAULTTHROTTLE
Definition joyaxis.h:155
int getButtonsPresetSpringWidth()
Definition joyaxis.cpp:654
QString axisName
Definition joyaxis.h:172
bool m_calibrated
Definition joyaxis.h:227
JoyAxisButton * getPAxisButton()
Definition joyaxis.cpp:459
void setMaxZoneValue(int value)
Definition joyaxis.cpp:367
virtual bool isDefault()
Definition joyaxis.cpp:565
void hapticTriggerChanged()
void setButtonsSpringHeight(int value)
Definition joyaxis.cpp:648
int maxZoneValue
Definition joyaxis.h:177
void moved(int value)
bool hasControlOfButtons()
Definition joyaxis.cpp:538
void disconnectPropertyUpdatedConnection()
Definition joyaxis.cpp:784
double getDistanceFromDeadZone()
Definition joyaxis.cpp:485
bool isCalibrated() const
Check if the axis is calibrated.
Definition joyaxis.cpp:921
void setCalibration(double offset, double gain)
Sets the axis calibration values and sets the calibration flag. Calibrated value is calculated by the...
Definition joyaxis.cpp:943
void getCalibration(double *offset, double *gain) const
Reads the axis calibration values.
Definition joyaxis.cpp:933
bool inDeadZone(int value)
Definition joyaxis.cpp:179
void stickPassEvent(int value, bool ignoresets=false, bool updateLastValues=true)
Definition joyaxis.cpp:96
int getDeadZone()
Definition joyaxis.cpp:365
void propogateThrottleChange()
Definition joyaxis.cpp:510
double getRawDistance(int value)
Get the current value for an axis in either direction converted to the range of -1....
Definition joyaxis.cpp:508
virtual HapticTriggerPs5 * getHapticTrigger() const
Always returns nullptr for JoyAxis base objects.
Definition joyaxis.cpp:307
int throttle
Definition joyaxis.h:175
void resetPrivateVars()
Definition joyaxis.cpp:427
virtual void eventReset()
Definition joyaxis.cpp:911
int getIndex()
Definition joyaxis.cpp:317
JoyAxisButton * naxisbutton
Definition joyaxis.h:170
JoyMouseMovementMode
Definition joybutton.h:63
JoyExtraAccelerationCurve
Definition joybutton.h:79
JoyMouseCurve
Definition joybutton.h:68
Represents stick of a joystick.
Definition joycontrolstick.h:38
Definition joydpadxml.h:27
A set of mapped events which can by switched by a controller event. Contains controller input objects...
Definition setjoystick.h:40
HapticTriggerModePs5
Enum of the supported haptic trigger effect for a PS5 controller.
Definition haptictriggermodeps5.h:23