AntiMicroX
Loading...
Searching...
No Matches
joybutton.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 JOYBUTTON_H
20#define JOYBUTTON_H
21
22#include "globalvariables.h"
24#include "joybuttonslot.h"
25#include "springmousemoveinfo.h"
26
27#include <QDeadlineTimer>
28#include <QQueue>
29#include <QReadWriteLock>
30#include <QRunnable>
31#include <QThread>
32#include <QTimer>
33
34class VDPad;
35class SetJoystick;
38// class QThread;
39class QThreadPool;
40
46class JoyButton : public QObject
47{
49
50 public:
51 explicit JoyButton(int sdl_button_index, int originset, SetJoystick *parentSet, QObject *parent);
52 ~JoyButton();
53
61
91
97
98 void joyEvent(bool pressed, bool ignoresets = false); // JoyButtonEvents class
99 void queuePendingEvent(bool pressed, bool ignoresets = false); // JoyButtonEvents class
100 void activatePendingEvent(); // JoyButtonEvents class
101 void setJoyNumber(int index);
102 void clearPendingEvent(); // JoyButtonEvents class
103 void setCustomName(QString name);
104 void setUpdateInitAccel(bool state);
105 void removeVDPad();
106 void setIgnoreEventState(bool ignore); // JoyButtonEvents class
109 void setWhileHeldStatus(bool status);
110 void setCycleResetStatus(bool enabled);
114 void setExtraAccelerationMultiplier(double value);
115 void setCycleResetTime(int interval); // .., unsigned
116 void setMinAccelThreshold(double value);
118 void setSpringDeadCircleMultiplier(int value);
119 void setAccelExtraDuration(double value);
120 void setStartAccelMultiplier(double value);
121 void setMaxAccelThreshold(double value);
122 void setChangeSetSelection(int index, bool updateActiveString = true);
124
125 bool hasPendingEvent(); // JoyButtonEvents class
126 bool getToggleState();
127 bool isUsingTurbo();
128 bool getButtonState();
129 bool containsSequence();
130 bool containsDistanceSlots(); // JoyButtonSlots class
131 bool containsReleaseSlots(); // JoyButtonSlots class
132 bool getIgnoreEventState(); // JoyButtonEvents class
133 bool getWhileHeldStatus();
134 bool hasActiveSlots(); // JoyButtonSlots class
135 bool isCycleResetActive();
136 bool isRelativeSpring();
137 bool isPartVDPad();
139
140 double getMinAccelThreshold();
141 double getMaxAccelThreshold();
143 double getAccelExtraDuration();
145 double getSensitivity();
146 double getEasingDuration();
147
148 int getJoyNumber();
149 int getTurboInterval();
150 int getMouseSpeedX();
151 int getMouseSpeedY();
152 int getWheelSpeedX();
153 int getWheelSpeedY();
154 int getSetSelection();
155 int getOriginSet();
156 int getSpringWidth();
157 int getSpringHeight();
158 int getCycleResetTime(); // unsigned
160
164
165 QList<JoyButtonSlot *> *getAssignedSlots(); // JoyButtonSlots class
166 QList<JoyButtonSlot *> const &getActiveSlots(); // JoyButtonSlots class
167
168 virtual bool isPartRealAxis();
169 virtual bool isModifierButton();
170 bool isDefault();
171
172 virtual JoyMouseCurve getDefaultMouseCurve() const;
173
174 virtual int getRealJoyNumber() const;
175
176 virtual double getDistanceFromDeadZone();
177 virtual double getMouseDistanceFromDeadZone();
178 virtual double getLastMouseDistanceFromDeadZone();
179 virtual double getAccelerationDistance();
180 virtual double getLastAccelerationDistance();
181
182 virtual void initializeDistanceValues();
183 virtual void setTurboMode(TurboMode mode);
186 JoyButton *srcButton); // Don't use direct assignment but copying from a current button.
188 virtual void setVDPad(VDPad *vdpad);
189 virtual void setChangeSetCondition(SetChangeCondition condition, bool passive = false, bool updateActiveString = true);
190
191 virtual QString getPartialName(bool forceFullFormat = false, bool displayNames = false) const;
192 virtual QString getSlotsSummary(); // JoyButtonSlots class
193 virtual QString getSlotsString(); // JoyButtonSlots class
196 virtual QString getName(bool forceFullFormat = false, bool displayNames = false);
197 virtual QString getXmlName(); // JoyButtonXml class
199
201
203
204 VDPad *getVDPad();
205
207
209
211
213
214 static int calculateFinalMouseSpeed(JoyMouseCurve curve, int value, const float joyspeed);
215
217 QList<JoyButton::mouseCursorInfo> *cursorYSpeedsList); // JoyButtonEvents class
222
223 static void setWeightModifier(double modifier, double maxWeightModifier, double &weightModifier);
224 static void moveMouseCursor(int &movedX, int &movedY, int &movedElapsed, QList<double> *mouseHistoryX,
226 int mouseRefreshRate, int mouseHistorySize, QList<JoyButton::mouseCursorInfo> *cursorXSpeeds,
227 QList<JoyButton::mouseCursorInfo> *cursorYSpeeds, double &cursorRemainderX,
228 double &cursorRemainderY, double weightModifier, int idleMouseRefrRate,
230 static void moveSpringMouse(int &movedX, int &movedY, bool &hasMoved, int springModeScreen,
233 int mouseRefreshRate, int idleMouseRefrRate, QTimer *staticMouseEventTimer);
234 static void setMouseHistorySize(int size, int maxMouseHistSize, int &mouseHistSize, QList<double> *mouseHistoryX,
235 QList<double> *mouseHistoryY);
236 static void setMouseRefreshRate(int refresh, int &mouseRefreshRate, int idleMouseRefrRate,
240 static void setSpringModeScreen(int screen, int &springModeScreen);
242 static void setGamepadRefreshRate(int refresh, int &gamepadRefreshRate, JoyButtonMouseHelper *mouseHelper);
247 static void invokeMouseEvents(JoyButtonMouseHelper *mouseHelper); // JoyButtonEvents class
248
255 static QTimer *getStaticMouseEventTimer(); // JoyButtonEvents class
257
259
265
266 bool insertAssignedSlot(JoyButtonSlot *slot, bool updateActiveString = true); // JoyButtonSlots class
267 bool insertAssignedSlot(JoyButtonSlot *newSlot, int index, bool updateActiveString = true);
268 bool containsJoyMixSlot();
269
270 protected:
271 int getPreferredKeyPressTime(); // unsigned
272
274
275 bool distanceEvent(); // JoyButtonEvents class
277 void clearAssignedSlots(bool signalEmit = true); // JoyButtonSlots class
278 void releaseSlotEvent(); // JoyButtonEvents class
281 void vdpadPassEvent(bool pressed, bool ignoresets = false); // JoyButtonEvents class
283
287
288 virtual double getCurrentSpringDeadCircle();
289
291
293
294 static QList<JoyButtonSlot *> mouseSpeedModList; // JoyButtonSlots class
300 static JoyButtonSlot *lastActiveKey; // JoyButtonSlots class
302
303 int m_index_sdl; // Used to denote the SDL index of the actual joypad button
310
311 bool isButtonPressed; // Used to denote whether the actual joypad button is pressed
312 bool isKeyPressed; // Used to denote whether the virtual key is pressed
313
317
321
325
328 JoyButtonSlot *currentWheelVerticalEvent; // JoyButtonEvents class
330
335
336 QString buttonName; // User specified button name
337 QString defaultButtonName; // Name used by the system
338
339 signals:
340 void clicked(int index);
341 void released(int index);
342 void keyChanged(int keycode);
344 void setChangeActivated(int index);
347 void turboChanged(bool state);
350 void slotsChanged(); // JoyButtonSlots class
355
356 public slots:
357 void setTurboInterval(int interval);
358 void setToggle(bool toggle);
359 void setUseTurbo(bool useTurbo);
360 void setMouseSpeedX(int speed);
361 void setMouseSpeedY(int speed);
362 void setWheelSpeed(int speed, QChar ax);
363 void setSpringWidth(int value);
364 void setSpringHeight(int value);
365 void setSensitivity(double value);
366 void setSpringRelativeStatus(bool value);
369 void setEasingDuration(double value);
372 void removeAssignedSlot(int index);
373
374 virtual void reset();
375 virtual void reset(int index);
376 virtual void resetProperties();
377 virtual void clearSlotsEventReset(bool clearSignalEmit = true); // JoyButtonEvents class
378 virtual void eventReset(); // JoyButtonEvents class
379 virtual void mouseEvent(); // JoyButtonEvents class
380
381 static void establishMouseTimerConnections();
382
383 bool setAssignedSlot(int code, int alias, int index,
385
386 bool setAssignedSlot(int code,
388
389 bool setAssignedSlot(int code, int alias,
391
392 bool setAssignedSlot(JoyButtonSlot *otherSlot, int index); // JoyButtonSlots class
393
394 bool insertAssignedSlot(int code, int alias, int index,
396
398
399 protected slots:
400 virtual void turboEvent(); // JoyButtonEvents class
401 virtual void wheelEventVertical(); // JoyButtonEvents class
402 virtual void wheelEventHorizontal(); // JoyButtonEvents class
403
404 void createDeskEvent(); // JoyButtonEvents class
405 void releaseDeskEvent(bool skipsetchange = false); // JoyButtonEvents class
406
407 private slots:
408 void releaseActiveSlots(); // JoyButtonSlots class
409 void activateSlots(); // JoyButtonSlots class
410 void waitForDeskEvent(); // JoyButtonEvents class
411 void waitForReleaseDeskEvent(); // JoyButtonEvents class
412 void holdEvent(); // JoyButtonEvents class
413 void delayEvent(); // JoyButtonEvents class
414 void pauseWaitEvent(); // JoyButtonEvents class
415 void checkForSetChange();
416 void keyPressEvent(); // JoyButtonEvents class
417 void slotSetChange();
418
419 private:
426
433
434 inline void resetSlotsProp(bool currentChangedSlot = false) // JoyButtonSlots class
435 {
436 currentCycle = nullptr;
437 previousCycle = nullptr;
438 currentPause = nullptr;
439 currentHold = nullptr;
440 m_currentDistance = nullptr;
441 currentRawValue = 0;
442 currentMouseEvent = nullptr;
443 currentRelease = nullptr;
446 currentKeyPress = nullptr;
447 currentDelay = nullptr;
449 currentSetChangeSlot = nullptr;
450
452 quitEvent = true;
453 }
454
456 {
457 turboTimer.stop();
458 pauseWaitTimer.stop();
459 createDeskTimer.stop();
460 releaseDeskTimer.stop();
461 holdTimer.stop();
464 setChangeTimer.stop();
465 keyPressTimer.stop();
466 delayTimer.stop();
467
469 slotSetChangeTimer.stop();
470
471 if (slotiter != nullptr)
472 {
473 delete slotiter;
474 slotiter = nullptr;
475 }
476 }
477
478 inline void clearQueues()
479 {
480 isButtonPressedQueue.clear();
481 ignoreSetQueue.clear();
482 mouseEventQueue.clear();
485 }
486
515
517 {
518 activeZoneStringLock.lockForWrite();
519 param = value;
520 activeZoneStringLock.unlock();
521 }
522
524 JoyButtonSlot *slot);
525 void resetAllProperties();
526 void resetPrivVars();
532 bool &changeRepeatState, bool activeSlotHashWindows = false); // JoyButtonSlots class
534 QList<int> &indexesToRemove); // JoyButtonSlots class
539 double weightModifier);
541 double distanceFromDeadZone);
543 void updateParamsAfterDistEvent(); // JoyButtonEvents class
546 QList<JoyButtonSlot *> &getActiveSlotsLocal(); // JoyButtonSlots class
549 double newAxisValueY = 0, double newSpringDeadY = 0);
550 // void getActiveZoneWithAppend(JoyButtonSlot::JoySlotInputAction mode, QList<JoyButtonSlot *>& tempSlotList,
551 // QListIterator<JoyButtonSlot *> *iter, JoyButtonSlot *slot);
554 bool slotsActive);
555
557 bool quitEvent; // JoyButtonEvents class
558 bool isDown;
563 bool ignoreEvents; // JoyButtonEvents class
565 bool updateLastMouseDistance; // Should lastMouseDistance be updated. Set after mouse event.
566 bool updateStartingMouseDistance; // Should startingMouseDistance be updated. Set after acceleration has finally been
567 // applied.
570 bool pendingEvent; // JoyButtonEvents class
575
582 int cycleResetInterval; // unsigned
583
585 double lastMouseDistance; // Keep track of the previous mouse distance from the previous gamepad poll.
586 double lastAccelerationDistance; // Keep track of the previous full distance from the previous gamepad poll
587 double currentAccelMulti; // Multiplier and time used for acceleration easing.
590 double accelTravel; // Track travel when accel started
592 double currentMouseDistance; // Keep track of the current mouse distance after a poll. Used to update lastMouseDistance
593 // later.
594 double currentAccelerationDistance; // Keep track of the current mouse distance after a poll. Used to update
595 // lastMouseDistance later.
596 double startingAccelerationDistance; // Take into account when mouse acceleration started
602
612 static QTimer staticMouseEventTimer; // JoyButtonEvents class
613
617
621 QQueue<JoyButtonSlot *> mouseEventQueue; // JoyButtonEvents class
627 JoyButtonSlot *currentMouseEvent; // JoyButtonEvents class
632
642
647
652
653 void addEachSlotToActives(JoyButtonSlot *slot, int &i, bool &delaySequence, bool &exit,
655};
656
657class MiniSlotRun : public QRunnable, public QObject
658{
659 public:
661 : QObject(btn)
662 , m_slot(slot)
664 , m_btn(btn)
666 {
667 }
668
670
671 void run()
672 {
673 this->thread()->wait(m_miliseconds);
674
676 }
677
678 private:
683};
684
685#endif // JOYBUTTON_H
static const double DEFAULTSTARTACCELMULTIPLIER
Definition globalvariables.h:61
static const double DEFAULTMINACCELTHRESHOLD
Definition globalvariables.h:59
static const double DEFAULTMAXACCELTHRESHOLD
Definition globalvariables.h:60
static const double DEFAULTEXTRACCELVALUE
Definition globalvariables.h:58
static const double DEFAULTACCELEASINGDURATION
Definition globalvariables.h:62
Definition joybuttonmousehelper.h:27
Represents action which can be performed after pressing button.
Definition joybuttonslot.h:38
JoySlotInputAction
Definition joybuttonslot.h:43
@ JoyKeyboard
Definition joybuttonslot.h:44
Represents a single joystick button being part of a SetJoystick Contains multiple JoyButtonSlots whic...
Definition joybutton.h:47
static void moveSpringMouse(int &movedX, int &movedY, bool &hasMoved, int springModeScreen, QList< PadderCommon::springModeInfo > *springXSpeeds, QList< PadderCommon::springModeInfo > *springYSpeeds, QList< JoyButton * > *pendingMouseButtons, int mouseRefreshRate, int idleMouseRefrRate, QTimer *staticMouseEventTimer)
Take spring mouse information provided by all buttons and send a spring mode mouse event to the displ...
Definition joybutton.cpp:3786
bool updateInitAccelValues
Definition joybutton.h:574
JoyButtonSlot * currentMouseEvent
Definition joybutton.h:627
virtual void copyLastAccelerationDistance(JoyButton *srcButton)
Definition joybutton.cpp:4434
virtual void clearSlotsEventReset(bool clearSignalEmit=true)
Definition joybutton.cpp:3069
void resetAllProperties()
Definition joybutton.cpp:4336
QTimer delayTimer
Definition joybutton.h:610
JoyMouseCurve mouseCurve
Definition joybutton.h:645
void updateMouseParams(bool updatedLastDist, bool updatedStartDist, double oldAccelMultiVal)
Definition joybutton.h:427
static void setStaticMouseThread(QThread *thread, QTimer *staticMouseEventTimer, QElapsedTimer *testOldMouseTime, int idleMouseRefrRate, JoyButtonMouseHelper *mouseHelper)
Definition joybutton.cpp:4548
void setSpringRelativeStatus(bool value)
Definition joybutton.cpp:4064
static void moveMouseCursor(int &movedX, int &movedY, int &movedElapsed, QList< double > *mouseHistoryX, QList< double > *mouseHistoryY, QElapsedTimer *testOldMouseTime, QTimer *staticMouseEventTimer, int mouseRefreshRate, int mouseHistorySize, QList< JoyButton::mouseCursorInfo > *cursorXSpeeds, QList< JoyButton::mouseCursorInfo > *cursorYSpeeds, double &cursorRemainderX, double &cursorRemainderY, double weightModifier, int idleMouseRefrRate, QList< JoyButton * > *pendingMouseButtonse)
Take cursor mouse information provided by all buttons and send a cursor mode mouse event to the displ...
Definition joybutton.cpp:3624
bool extraAccelerationEnabled
Definition joybutton.h:572
void setUseTurbo(bool useTurbo)
Definition joybutton.cpp:1559
virtual QString getCalculatedActiveZoneSummary()
Definition joybutton.cpp:1674
void establishPropertyUpdatedConnections()
Definition joybutton.cpp:4034
void holdEvent()
Definition joybutton.cpp:2680
QQueue< bool > isButtonPressedQueue
Definition joybutton.h:332
QQueue< JoyButtonSlot * > mouseEventQueue
Definition joybutton.h:621
void resetPrivVars()
Definition joybutton.cpp:393
QString customName
Definition joybutton.h:614
bool quitEvent
Definition joybutton.h:557
~JoyButton()
Definition joybutton.cpp:124
bool isExtraAccelerationEnabled()
Definition joybutton.cpp:4439
static QList< JoyButton * > pendingMouseButtons
Definition joybutton.h:299
QElapsedTimer turboHold
Definition joybutton.h:324
QElapsedTimer buttonHold
Definition joybutton.h:633
void finishedPause()
void updatePendingParams(bool isEvent, bool isPressed, bool areIgnoredSets)
Definition joybutton.h:420
virtual double getLastMouseDistanceFromDeadZone()
Definition joybutton.cpp:4425
JoyButtonSlot * currentWheelVerticalEvent
Definition joybutton.h:328
static void restartLastMouseTime(QElapsedTimer *testOldMouseTime)
Definition joybutton.cpp:4546
bool m_ignoresets
Definition joybutton.h:562
QReadWriteLock assignmentsLock
Definition joybutton.h:649
static QList< mouseCursorInfo > cursorXSpeeds
Definition joybutton.h:295
int getPreferredKeyPressTime()
Obtain the appropriate key press time for the current event. Order of preference: active key press ti...
Definition joybutton.cpp:4000
void lockForWritedString(QString &param, QString value)
Definition joybutton.h:516
void setChangeActivated(int index)
static QList< mouseCursorInfo > cursorYSpeeds
Definition joybutton.h:296
static bool hasSpringEvents(QList< PadderCommon::springModeInfo > *springXSpeedsList, QList< PadderCommon::springModeInfo > *springYSpeedsList)
Definition joybutton.cpp:4221
void propertyUpdated()
VDPad * getVDPad()
Definition joybutton.cpp:3463
QElapsedTimer buttonDelay
Definition joybutton.h:638
void startTimerOverrun(int slotCode, QElapsedTimer *currSlotTime, QTimer *currSlotTimer, bool releasedDeskTimer=false)
Definition joybutton.cpp:2731
TurboMode getTurboMode()
Get currently assigned turbo mode.
Definition joybutton.cpp:4145
bool hasActiveSlots()
Definition joybutton.cpp:4586
double lastWheelVerticalDistance
Definition joybutton.h:315
virtual void setTurboMode(TurboMode mode)
Set the turbo mode that the button should use.
Definition joybutton.cpp:4139
void updateMouseProperties(double newAxisValue, double newSpringDead, int newSpringWidth, int newSpringHeight, bool relatived, int modeScreen, QList< PadderCommon::springModeInfo > &springSpeeds, QChar axis, double newAxisValueY=0, double newSpringDeadY=0)
Definition joybutton.cpp:1424
JoyButtonSlot * currentCycle
Definition joybutton.h:624
void activateMiniSlots(JoyButtonSlot *slot, JoyButtonSlot *mix)
Definition joybutton.cpp:663
double startAccelMultiplier
Definition joybutton.h:599
int springDeadCircleMultiplier
Definition joybutton.h:309
void setMouseMode(JoyMouseMovementMode mousemode)
Definition joybutton.cpp:3523
SetJoystick * getParentSet()
Definition joybutton.cpp:3976
QElapsedTimer wheelHorizontalTime
Definition joybutton.h:323
static void setSpringModeScreen(int screen, int &springModeScreen)
Definition joybutton.cpp:4497
QTimer turboTimer
Definition joybutton.h:318
bool isCycleResetActive()
Definition joybutton.cpp:4032
void setUpdateInitAccel(bool state)
Definition joybutton.cpp:4596
double lastWheelHorizontalDistance
Definition joybutton.h:316
QString getActionName()
Definition joybutton.cpp:3586
void clicked(int index)
void setStartAccelMultiplier(double value)
Definition joybutton.cpp:4486
bool distanceEvent()
Definition joybutton.cpp:447
double accelDuration
Definition joybutton.h:588
static const JoyMouseMovementMode DEFAULTMOUSEMODE
Definition joybutton.h:262
QReadWriteLock activeZoneLock
Definition joybutton.h:648
void pauseWaitEvent()
Definition joybutton.cpp:2475
static bool hasFutureSpringEvents(QList< JoyButton * > *pendingMouseButtons)
Definition joybutton.cpp:4514
virtual double getMouseDistanceFromDeadZone()
Get the distance factor that should be used for mouse movement.
Definition joybutton.cpp:2948
SetChangeCondition
Definition joybutton.h:55
@ SetChangeOneWay
Definition joybutton.h:57
@ SetChangeTwoWay
Definition joybutton.h:58
@ SetChangeDisabled
Definition joybutton.h:56
@ SetChangeWhileHeld
Definition joybutton.h:59
JoyButtonSlot * currentHold
Definition joybutton.h:623
QList< JoyButtonSlot * > assignments
Definition joybutton.h:618
virtual double getLastAccelerationDistance()
Definition joybutton.cpp:4427
void setToggle(bool toggle)
Definition joybutton.cpp:368
virtual double getCurrentSpringDeadCircle()
Definition joybutton.cpp:4544
JoyButtonSlot * currentDelay
Definition joybutton.h:630
virtual int getRealJoyNumber() const
Get a 1 indexed number of button.
Definition joybutton.cpp:364
double currentAccelMulti
Definition joybutton.h:587
QList< JoyButtonSlot * > & getActiveSlotsLocal()
Definition joybutton.cpp:4600
void setSpringDeadCircle(double &springDeadCircle, int mouseDirection)
Definition joybutton.cpp:3281
bool insertAssignedSlot(JoyButtonSlot *slot, bool updateActiveString=true)
Definition joybutton.cpp:2234
static QElapsedTimer * getTestOldMouseTime()
Definition joybutton.cpp:4211
QTimer slotSetChangeTimer
Definition joybutton.h:611
int setSelection
Definition joybutton.h:307
virtual void turboEvent()
Definition joybutton.cpp:413
virtual void setDefaultButtonName(QString tempname)
Definition joybutton.cpp:3616
virtual void copyLastMouseDistanceFromDeadZone(JoyButton *srcButton)
Definition joybutton.cpp:4429
void releaseMoveSlots(QList< JoyButton::mouseCursorInfo > &cursorSpeeds, JoyButtonSlot *slot, QList< int > &indexesToRemove)
Definition joybutton.cpp:3307
static JoyButtonSlot * lastActiveKey
Definition joybutton.h:300
QPointer< SetJoystick > m_parentSet
Definition joybutton.h:326
double getMaxAccelThreshold()
Definition joybutton.cpp:4484
void setTurboInterval(int interval)
Definition joybutton.cpp:378
bool getToggleState()
Definition joybutton.cpp:409
static QList< PadderCommon::springModeInfo > springYSpeeds
Definition joybutton.h:298
JoyMouseMovementMode
Definition joybutton.h:63
@ MouseCursor
Definition joybutton.h:64
@ MouseSpring
Definition joybutton.h:65
static void setMouseHistorySize(int size, int maxMouseHistSize, int &mouseHistSize, QList< double > *mouseHistoryX, QList< double > *mouseHistoryY)
Set mouse history buffer size used for mouse smoothing.
Definition joybutton.cpp:4241
virtual double getDistanceFromDeadZone()
Get the distance that an element is away from its assigned dead zone.
Definition joybutton.cpp:2940
QElapsedTimer buttonHeldRelease
Definition joybutton.h:636
virtual void setChangeSetCondition(SetChangeCondition condition, bool passive=false, bool updateActiveString=true)
Definition joybutton.cpp:2431
double maxMouseDistanceAccelThreshold
Definition joybutton.h:598
void turboChanged(bool state)
virtual double getAccelerationDistance()
Definition joybutton.cpp:2942
double sensitivity
Definition joybutton.h:584
void activatePendingEvent()
Definition joybutton.cpp:141
void countActiveSlots(int tempcode, int &references, JoyButtonSlot *slot, QHash< int, int > &activeSlotsHash, bool &changeRepeatState, bool activeSlotHashWindows=false)
Definition joybutton.cpp:3265
double getEasingDuration()
Definition joybutton.cpp:4191
JoyMouseMovementMode mouseMode
Definition joybutton.h:644
void setExtraAccelerationMultiplier(double value)
Definition joybutton.cpp:4455
void keyPressEvent()
Definition joybutton.cpp:3919
void mouseChanged(int mousecode)
void resetAccelerationDistances()
Definition joybutton.cpp:4390
static QList< JoyButtonSlot * > mouseSpeedModList
Definition joybutton.h:294
QElapsedTimer keyPressHold
Definition joybutton.h:637
void delayEvent()
Definition joybutton.cpp:2748
JoyButtonSlot * previousCycle
Definition joybutton.h:625
int getSpringWidth()
Definition joybutton.cpp:3548
void releaseDeskEvent(bool skipsetchange=false)
Definition joybutton.cpp:2780
void keyChanged(int keycode)
bool toggleActiveState
Definition joybutton.h:559
void setButtonName(QString tempName)
Definition joybutton.cpp:3588
void activeZoneChanged()
JoyMouseMovementMode getMouseMode()
Definition joybutton.cpp:3529
void checkSpringDeadCircle(int tempcode, double &springDeadCircle, int mouseSlot1, int mouseSlot2)
Definition joybutton.cpp:3293
QQueue< JoyButtonSlot * > mouseWheelVerticalEventQueue
Definition joybutton.h:333
void activateSlots()
Definition joybutton.cpp:581
void setSpringWidth(int value)
Definition joybutton.cpp:3539
QTimer mouseWheelHorizontalEventTimer
Definition joybutton.h:320
void removeVDPad()
Definition joybutton.cpp:3465
QString defaultButtonName
Definition joybutton.h:337
JoyButtonSlot * currentSetChangeSlot
Definition joybutton.h:631
static QList< PadderCommon::springModeInfo > * getSpringXSpeeds()
Definition joybutton.cpp:4205
void copyAssignments(JoyButton *destButton)
Copy assignments and properties from one button to another. Used for set copying.
Definition joybutton.cpp:4083
int getSpringDeadCircleMultiplier()
Definition joybutton.cpp:4542
int getCycleResetTime()
Definition joybutton.cpp:4024
int cycleResetInterval
Definition joybutton.h:582
bool containsDistanceSlots()
Definition joybutton.cpp:2978
VDPad * m_vdpad
Definition joybutton.h:643
double m_easingDuration
Definition joybutton.h:600
bool whileHeldStatus
Definition joybutton.h:564
QQueue< JoyButtonSlot * > mouseWheelHorizontalEventQueue
Definition joybutton.h:334
static JoyButtonMouseHelper * getMouseHelper()
Definition joybutton.cpp:4193
int m_index_sdl
Definition joybutton.h:303
int springWidth
Definition joybutton.h:579
TurboMode
Definition joybutton.h:86
@ PulseTurbo
Definition joybutton.h:89
@ GradientTurbo
Definition joybutton.h:88
@ NormalTurbo
Definition joybutton.h:87
virtual void wheelEventVertical()
Definition joybutton.cpp:1455
bool cycleResetActive
Definition joybutton.h:573
double lastMouseDistance
Definition joybutton.h:585
struct JoyButton::_mouseCursorInfo mouseCursorInfo
int getSetSelection()
Definition joybutton.cpp:2429
static void adjustAxForCursor(QList< double > *mouseHistoryList, double &adjustedAx, double &cursorRemainder, double weightModifier)
Definition joybutton.cpp:3754
void clearAssignedSlots(bool signalEmit=true)
Definition joybutton.cpp:2997
QTimer holdTimer
Definition joybutton.h:604
double startingAccelerationDistance
Definition joybutton.h:596
void removeAssignedSlot(int index)
Definition joybutton.cpp:3025
virtual JoyMouseCurve getDefaultMouseCurve() const
Returns the default mouse curve for this JoyButton type. Can be overwritten by subclasses.
Definition joybutton.cpp:3517
bool isPartVDPad()
Definition joybutton.cpp:3461
bool containsSequence()
Definition joybutton.cpp:2656
static QList< JoyButton * > * getPendingMouseButtons()
Get the list of buttons that have a pending mouse movement event.
Definition joybutton.cpp:4199
void clearQueues()
Definition joybutton.h:478
static bool hasCursorEvents(QList< JoyButton::mouseCursorInfo > *cursorXSpeedsList, QList< JoyButton::mouseCursorInfo > *cursorYSpeedsList)
Definition joybutton.cpp:4213
static QList< JoyButton::mouseCursorInfo > * getCursorYSpeeds()
Definition joybutton.cpp:4203
QElapsedTimer pauseHold
Definition joybutton.h:634
QString getButtonName()
Definition joybutton.cpp:3598
void setCustomName(QString name)
Definition joybutton.cpp:2032
void setCycleResetStatus(bool enabled)
Definition joybutton.cpp:4026
JoyButtonSlot * currentPause
Definition joybutton.h:622
void waitForDeskEvent()
Definition joybutton.cpp:2598
static int allSlotTimeBetweenSlots
Definition joybutton.h:286
virtual QList< JoyButtonSlot * > getActiveZoneList()
Definition joybutton.cpp:1893
void disconnectPropertyUpdatedConnections()
Definition joybutton.cpp:4041
void slotSetChange()
Definition joybutton.cpp:972
int getMouseSpeedX()
Definition joybutton.cpp:2403
void buildActiveZoneSummarySwitchSlots(JoyButtonSlot::JoySlotInputAction mode, JoyButtonSlot *slot, bool &behindHold, QStringList *stringlist, int &i, QListIterator< JoyButtonSlot * > *iter, bool slotsActive)
Definition joybutton.cpp:1798
virtual bool isPartRealAxis()
Check if button should be considered a part of a real controller axis. Needed for some dialogs so the...
Definition joybutton.cpp:4153
static int timeBetweenMiniSlots
Definition joybutton.h:285
void waitForReleaseDeskEvent()
Definition joybutton.cpp:2631
QList< JoyButtonSlot * > const & getActiveSlots()
Definition joybutton.cpp:2392
static void invokeMouseEvents(JoyButtonMouseHelper *mouseHelper)
Definition joybutton.cpp:4584
bool isRelativeSpring()
Definition joybutton.cpp:4076
void setSensitivity(double value)
Definition joybutton.cpp:3561
bool isDown
Definition joybutton.h:558
static void setGamepadRefreshRate(int refresh, int &gamepadRefreshRate, JoyButtonMouseHelper *mouseHelper)
Set the gamepad poll rate to be used in the application.
Definition joybutton.cpp:4295
void clearPendingEvent()
Definition joybutton.cpp:152
double updateOldAccelMulti
Definition joybutton.h:591
void setWheelSpeed(int speed, QChar ax)
Definition joybutton.cpp:3600
bool ignoreEvents
Definition joybutton.h:563
void releaseActiveSlots()
Definition joybutton.cpp:3095
JoyExtraAccelerationCurve
Definition joybutton.h:79
@ EaseOutQuadAccelCurve
Definition joybutton.h:82
@ EaseOutSineCurve
Definition joybutton.h:81
@ EaseOutCubicAccelCurve
Definition joybutton.h:83
@ LinearAccelCurve
Definition joybutton.h:80
JoyMouseCurve
Definition joybutton.h:68
@ QuadraticCurve
Definition joybutton.h:71
@ QuadraticExtremeCurve
Definition joybutton.h:73
@ EasingCubicCurve
Definition joybutton.h:76
@ LinearCurve
Definition joybutton.h:70
@ EnhancedPrecisionCurve
Definition joybutton.h:69
@ PowerCurve
Definition joybutton.h:74
@ CubicCurve
Definition joybutton.h:72
@ EasingQuadraticCurve
Definition joybutton.h:75
static void establishMouseTimerConnections()
Change initial settings used for mouse event timer being used by the application.
Definition joybutton.cpp:4052
void setSpringDeadCircleMultiplier(int value)
Definition joybutton.cpp:4533
bool isButtonPressed
Definition joybutton.h:311
void setAssignmentChanged(int current_button, int associated_set, int mode)
QList< JoyButtonSlot * > activeSlots
Definition joybutton.h:619
void addEachSlotToActives(JoyButtonSlot *slot, int &i, bool &delaySequence, bool &exit, QListIterator< JoyButtonSlot * > *slotiter)
Definition joybutton.cpp:690
int getMouseSpeedY()
Definition joybutton.cpp:2414
void setMouseCurve(JoyMouseCurve selectedCurve)
Definition joybutton.cpp:3531
void setMouseSpeedY(int speed)
Definition joybutton.cpp:2405
int mouseSpeedY
Definition joybutton.h:577
void setAccelExtraDuration(double value)
Definition joybutton.cpp:4503
QTimer releaseDeskTimer
Definition joybutton.h:607
QTimer keyPressTimer
Definition joybutton.h:609
void changeStatesQueue(bool currentReleased)
Definition joybutton.cpp:2898
int getWheelSpeedX()
Definition joybutton.cpp:3612
int wheelSpeedX
Definition joybutton.h:305
JoyButtonSlot * m_currentDistance
Definition joybutton.h:626
QString buildActiveZoneSummary(QList< JoyButtonSlot * > &tempList)
Definition joybutton.cpp:1696
JoyButtonSlot * currentKeyPress
Definition joybutton.h:629
int turboInterval
Definition joybutton.h:304
void createDeskEvent()
Definition joybutton.cpp:551
void setActionName(QString tempName)
Definition joybutton.cpp:3576
bool updateLastMouseDistance
Definition joybutton.h:565
void released(int index)
void localBuildActiveZoneSummaryString()
Generate active zone string but do not notify any other object.
Definition joybutton.cpp:1694
virtual QString getSlotsString()
Generate a string representing all the currently assigned slots for a button.
Definition joybutton.cpp:1995
void vdpadPassEvent(bool pressed, bool ignoresets=false)
Definition joybutton.cpp:154
TurboMode currentTurboMode
Definition joybutton.h:290
void restartAccelParams(bool updatedOldAccel, bool restartedAccelDurTimer, bool restartedRestParams)
Definition joybutton.h:487
virtual void reset()
Definition joybutton.cpp:391
void setExtraAccelerationCurve(JoyExtraAccelerationCurve curve)
Definition joybutton.cpp:4588
int getOriginSet()
Definition joybutton.cpp:2473
void setSpringHeight(int value)
Definition joybutton.cpp:3550
bool updateStartingMouseDistance
Definition joybutton.h:566
QReadWriteLock activeZoneStringLock
Definition joybutton.h:650
int mouseSpeedX
Definition joybutton.h:576
JoyButtonSlot * currentRelease
Definition joybutton.h:628
QList< JoyButtonSlot * > & getAssignmentsLocal()
Definition joybutton.cpp:4598
QTimer setChangeTimer
Definition joybutton.h:608
bool getButtonState()
Checks if this button is currently active.
Definition joybutton.cpp:2471
JoyButtonSlot * currentWheelHorizontalEvent
Definition joybutton.h:329
virtual void initializeDistanceValues()
Definition joybutton.cpp:4415
void turboIntervalChanged(int interval)
void toggleChanged(bool state)
int getJoyNumber()
Get 0 indexed number of SDL button index.
Definition joybutton.cpp:358
int m_originset
Definition joybutton.h:578
QString buttonName
Definition joybutton.h:336
void setIgnoreEventState(bool ignore)
Definition joybutton.cpp:3519
double extraAccelerationMultiplier
Definition joybutton.h:601
bool pendingIgnoreSets
Definition joybutton.h:571
bool isDefault()
Check if button properties are at their default values.
Definition joybutton.cpp:3475
QTimer pauseWaitTimer
Definition joybutton.h:605
void setWhileHeldStatus(bool status)
Definition joybutton.cpp:3574
double accelTravel
Definition joybutton.h:590
static const SetChangeCondition DEFAULTSETCONDITION
Definition joybutton.h:261
static int calculateFinalMouseSpeed(JoyMouseCurve curve, int value, const float joyspeed)
Calculate maximum mouse speed when using a given mouse curve.
Definition joybutton.cpp:4161
double getTotalSlotDistance(JoyButtonSlot *slot)
Definition joybutton.cpp:2950
void updateParamsAfterDistEvent()
Definition joybutton.cpp:307
virtual QString getName(bool forceFullFormat=false, bool displayNames=false)
Definition joybutton.cpp:1585
QString activeZoneString
Definition joybutton.h:616
static JoyButtonMouseHelper mouseHelper
Definition joybutton.h:301
double getMinAccelThreshold()
Definition joybutton.cpp:4473
bool pendingEvent
Definition joybutton.h:570
virtual QString getXmlName()
Definition joybutton.cpp:1583
void releaseEachSlot(bool &changeRepeatState, int &references, int tempcode, JoyButtonSlot::JoySlotInputAction mode, JoyButtonSlot *slot)
Definition joybutton.cpp:3179
void checkForPressedSetChange()
Definition joybutton.cpp:3978
void joyEvent(bool pressed, bool ignoresets=false)
Activates mapped slots and generates QT events which highlight pressed controller buttons.
Definition joybutton.cpp:176
void changeTurboParams(bool _isKeyPressed, bool isButtonPressed)
Definition joybutton.cpp:415
double oldAccelMulti
Definition joybutton.h:589
bool getIgnoreEventState()
Definition joybutton.cpp:3521
bool checkForDelaySequence()
TODO: CHECK IF METHOD WOULD BE USEFUL. CURRENTLY NOT USED.
Definition joybutton.cpp:3949
static const JoyExtraAccelerationCurve DEFAULTEXTRAACCELCURVE
Definition joybutton.h:264
virtual void resetProperties()
Definition joybutton.cpp:4329
void setMinAccelThreshold(double value)
Definition joybutton.cpp:4464
int tempTurboInterval
Definition joybutton.h:308
QThreadPool * threadPool
Definition joybutton.h:651
bool containsJoyMixSlot()
Definition joybutton.cpp:3348
QListIterator< JoyButtonSlot * > * slotiter
Definition joybutton.h:620
double getSensitivity()
Definition joybutton.cpp:3570
static void indirectStaticMouseThread(QThread *thread, QTimer *staticMouseEventTimer, JoyButtonMouseHelper *mouseHelper)
Definition joybutton.cpp:4564
virtual void mouseEvent()
Calculate mouse movement coordinates for mouse movement slots currently active.
Definition joybutton.cpp:993
QElapsedTimer cycleResetHold
Definition joybutton.h:640
static bool shouldInvokeMouseEvents(QList< JoyButton * > *pendingMouseButtons, QTimer *staticMouseEventTimer, QElapsedTimer *testOldMouseTime)
Definition joybutton.cpp:4570
static QList< PadderCommon::springModeInfo > springXSpeeds
Definition joybutton.h:297
static QList< JoyButton::mouseCursorInfo > * getCursorXSpeeds()
Definition joybutton.cpp:4201
double getStartAccelMultiplier()
Definition joybutton.cpp:4495
static void setMouseRefreshRate(int refresh, int &mouseRefreshRate, int idleMouseRefrRate, JoyButtonMouseHelper *mouseHelper, QList< double > *mouseHistoryX, QList< double > *mouseHistoryY, QElapsedTimer *testOldMouseTime, QTimer *staticMouseEventTimer)
Set the mouse refresh rate when a mouse slot is active.
Definition joybutton.cpp:4256
void setExtraAccelerationStatus(bool status)
Definition joybutton.cpp:4443
static QList< PadderCommon::springModeInfo > * getSpringYSpeeds()
Definition joybutton.cpp:4207
void findJoySlotsEnd(QListIterator< JoyButtonSlot * > *slotiter)
Definition joybutton.cpp:3424
JoyExtraAccelerationCurve getExtraAccelerationCurve()
Definition joybutton.cpp:4594
virtual void wheelEventHorizontal()
Definition joybutton.cpp:1507
void restartAllForSetChange()
Definition joybutton.cpp:2583
void actionNameChanged()
virtual QString getPartialName(bool forceFullFormat=false, bool displayNames=false) const
Definition joybutton.cpp:1601
double lastAccelerationDistance
Definition joybutton.h:586
double currentAccelerationDistance
Definition joybutton.h:594
virtual QString getSlotsSummary()
Generate a string representing a summary of the slots currently assigned to a button.
Definition joybutton.cpp:1630
int currentRawValue
Definition joybutton.h:581
JoyMouseCurve getMouseCurve()
Definition joybutton.cpp:3537
bool m_useTurbo
Definition joybutton.h:560
virtual void setVDPad(VDPad *vdpad)
Definition joybutton.cpp:3454
SetChangeCondition setSelectionCondition
Definition joybutton.h:327
bool isUsingTurbo()
Definition joybutton.cpp:1581
void buildActiveZoneSummaryString()
Generate active zone string and notify other objects.
Definition joybutton.cpp:1684
double getExtraAccelerationMultiplier()
Definition joybutton.cpp:4441
bool containsReleaseSlots()
Definition joybutton.cpp:3331
virtual bool isModifierButton()
Definition joybutton.cpp:4383
static const JoyMouseCurve DEFAULTMOUSECURVE
Definition joybutton.h:260
QQueue< bool > ignoreSetQueue
Definition joybutton.h:331
QTimer pauseTimer
Definition joybutton.h:603
bool isKeyPressed
Definition joybutton.h:312
QTimer createDeskTimer
Definition joybutton.h:606
static const TurboMode DEFAULTTURBOMODE
Definition joybutton.h:263
static QTimer * getStaticMouseEventTimer()
Definition joybutton.cpp:4209
void stopTimers(bool stoppedSlotSetTimer)
Definition joybutton.h:455
double getAccelExtraDuration()
Definition joybutton.cpp:4512
static QTimer staticMouseEventTimer
Definition joybutton.h:612
bool lastUnlessInList
Definition joybutton.h:561
int getTurboInterval()
Definition joybutton.cpp:411
QList< JoyButtonSlot * > * getAssignedSlots()
Definition joybutton.cpp:2390
bool m_toggle
Definition joybutton.h:556
void setCycleResetTime(int interval)
Definition joybutton.cpp:4013
void releaseSlotEvent()
Definition joybutton.cpp:3365
int getSpringHeight()
Definition joybutton.cpp:3559
static void resetActiveButtonMouseDistances(JoyButtonMouseHelper *mouseHelper)
Definition joybutton.cpp:4385
double lastDistance
Definition joybutton.h:314
QElapsedTimer inpauseHold
Definition joybutton.h:635
QElapsedTimer accelExtraDurationTime
Definition joybutton.h:639
void setDistanceForSpring(JoyButtonMouseHelper &mouseHelper, double &mouseFirstAx, double &mouseSecondAx, double distanceFromDeadZone)
Definition joybutton.cpp:1412
bool relativeSpring
Definition joybutton.h:568
virtual QString getActiveZoneSummary()
Generate a string that represents slots that will be activated or slots that are currently active if ...
Definition joybutton.cpp:1668
static QElapsedTimer testOldMouseTime
Definition joybutton.h:641
void setJoyNumber(int index)
Definition joybutton.cpp:366
void checkTurboCondition(JoyButtonSlot *slot)
Check if turbo should be disabled for a slot.
Definition joybutton.cpp:4308
virtual void eventReset()
Definition joybutton.cpp:3082
virtual QString getDefaultButtonName()
Definition joybutton.cpp:3618
QTimer mouseWheelVerticalEventTimer
Definition joybutton.h:319
QString actionName
Definition joybutton.h:615
int wheelSpeedY
Definition joybutton.h:306
bool setAssignedSlot(int code, int alias, int index, JoyButtonSlot::JoySlotInputAction mode=JoyButtonSlot::JoyKeyboard)
Create new JoyButtonSlot with data provided and replace an existing slot in the assignment list if on...
Definition joybutton.cpp:2134
QElapsedTimer wheelVerticalTime
Definition joybutton.h:322
bool getWhileHeldStatus()
Definition joybutton.cpp:3572
void setMouseSpeedX(int speed)
Definition joybutton.cpp:2394
int springHeight
Definition joybutton.h:580
void setMaxAccelThreshold(double value)
Definition joybutton.cpp:4475
static void distanceForMovingAx(double &finalAx, mouseCursorInfo infoAx)
Combines mouse movement distances from multiple mouse mappings.
Definition joybutton.cpp:3748
void buttonNameChanged()
void slotsChanged()
void checkForSetChange()
Definition joybutton.cpp:2536
JoyExtraAccelerationCurve extraAccelCurve
Definition joybutton.h:646
void setChangeSetSelection(int index, bool updateActiveString=true)
Definition joybutton.cpp:2416
static void setWeightModifier(double modifier, double maxWeightModifier, double &weightModifier)
Set the weight modifier to use for mouse smoothing.
Definition joybutton.cpp:4231
bool pendingPress
Definition joybutton.h:569
void resetSlotsProp(bool currentChangedSlot=false)
Definition joybutton.h:434
double minMouseDistanceAccelThreshold
Definition joybutton.h:597
void startSequenceOfPressActive(bool isTurbo, QString debugText)
Definition joybutton.cpp:326
void queuePendingEvent(bool pressed, bool ignoresets=false)
Definition joybutton.cpp:131
QString getCustomName()
Definition joybutton.cpp:2034
SetChangeCondition getChangeSetCondition()
Definition joybutton.cpp:2465
void setEasingDuration(double value)
Definition joybutton.cpp:4181
double currentMouseDistance
Definition joybutton.h:592
bool hasPendingEvent()
Definition joybutton.cpp:150
int getWheelSpeedY()
Definition joybutton.cpp:3614
Definition joydpadxml.h:27
Definition joybutton.h:658
int m_miliseconds
Definition joybutton.h:682
JoyButtonSlot * m_slot
Definition joybutton.h:679
JoyButton * m_btn
Definition joybutton.h:681
MiniSlotRun(JoyButtonSlot *slot, JoyButtonSlot *slotmini, JoyButton *btn, int milisec)
Definition joybutton.h:660
void run()
Definition joybutton.h:671
JoyButtonSlot * m_slotmini
Definition joybutton.h:680
~MiniSlotRun()
Definition joybutton.h:669
A set of mapped events which can by switched by a controller event. Contains controller input objects...
Definition setjoystick.h:40
Definition vdpad.h:27
Definition joybutton.h:93
JoyButtonSlot * slot
Definition joybutton.h:94
double code
Definition joybutton.h:95