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
276 void clearAssignedSlots(bool signalEmit = true); // JoyButtonSlots class
277 void releaseSlotEvent(); // JoyButtonEvents class
280 void vdpadPassEvent(bool pressed, bool ignoresets = false); // JoyButtonEvents class
282
286
287 virtual double getCurrentSpringDeadCircle();
288
290
292
293 static QList<JoyButtonSlot *> mouseSpeedModList; // JoyButtonSlots class
299 static JoyButtonSlot *lastActiveKey; // JoyButtonSlots class
301
302 int m_index_sdl; // Used to denote the SDL index of the actual joypad button
309
310 bool isButtonPressed; // Used to denote whether the actual joypad button is pressed
311 bool isKeyPressed; // Used to denote whether the virtual key is pressed
312
316
320
324
327 JoyButtonSlot *currentWheelVerticalEvent; // JoyButtonEvents class
329
334
335 QString buttonName; // User specified button name
336 QString defaultButtonName; // Name used by the system
337
338 signals:
339 void clicked(int index);
340 void released(int index);
341 void keyChanged(int keycode);
343 void setChangeActivated(int index);
346 void turboChanged(bool state);
349 void slotsChanged(); // JoyButtonSlots class
354
355 public slots:
356 void setTurboInterval(int interval);
357 void setToggle(bool toggle);
358 void setUseTurbo(bool useTurbo);
359 void setMouseSpeedX(int speed);
360 void setMouseSpeedY(int speed);
361 void setWheelSpeed(int speed, QChar ax);
362 void setSpringWidth(int value);
363 void setSpringHeight(int value);
364 void setSensitivity(double value);
365 void setSpringRelativeStatus(bool value);
368 void setEasingDuration(double value);
371 void removeAssignedSlot(int index);
372
373 virtual void reset();
374 virtual void reset(int index);
375 virtual void resetProperties();
376 virtual void clearSlotsEventReset(bool clearSignalEmit = true); // JoyButtonEvents class
377 virtual void eventReset(); // JoyButtonEvents class
378 virtual void mouseEvent(); // JoyButtonEvents class
379
380 static void establishMouseTimerConnections();
381
382 bool setAssignedSlot(int code, int alias, int index,
384
385 bool setAssignedSlot(int code,
387
388 bool setAssignedSlot(int code, int alias,
390
391 bool setAssignedSlot(JoyButtonSlot *otherSlot, int index); // JoyButtonSlots class
392
393 bool insertAssignedSlot(int code, int alias, int index,
395
397
398 protected slots:
399 virtual void turboEvent(); // JoyButtonEvents class
400 virtual void wheelEventVertical(); // JoyButtonEvents class
401 virtual void wheelEventHorizontal(); // JoyButtonEvents class
402
403 void createDeskEvent(); // JoyButtonEvents class
404 void releaseDeskEvent(bool skipsetchange = false); // JoyButtonEvents class
405
406 private slots:
407 void releaseActiveSlots(); // JoyButtonSlots class
408 void activateSlots(); // JoyButtonSlots class
409 void waitForDeskEvent(); // JoyButtonEvents class
410 void waitForReleaseDeskEvent(); // JoyButtonEvents class
411 void holdEvent(); // JoyButtonEvents class
412 void delayEvent(); // JoyButtonEvents class
413 void pauseWaitEvent(); // JoyButtonEvents class
414 void checkForSetChange();
415 void keyPressEvent(); // JoyButtonEvents class
416 void slotSetChange();
417
418 private:
425
432
433 inline void resetSlotsProp(bool currentChangedSlot = false) // JoyButtonSlots class
434 {
435 currentCycle = nullptr;
436 previousCycle = nullptr;
437 currentPause = nullptr;
438 currentHold = nullptr;
439 m_currentDistance = nullptr;
440 currentRawValue = 0;
441 currentMouseEvent = nullptr;
442 currentRelease = nullptr;
445 currentKeyPress = nullptr;
446 currentDelay = nullptr;
448 currentSetChangeSlot = nullptr;
449
451 quitEvent = true;
452 }
453
455 {
456 turboTimer.stop();
457 pauseWaitTimer.stop();
458 createDeskTimer.stop();
459 releaseDeskTimer.stop();
460 holdTimer.stop();
463 setChangeTimer.stop();
464 keyPressTimer.stop();
465 delayTimer.stop();
466
468 slotSetChangeTimer.stop();
469
470 if (slotiter != nullptr)
471 {
472 delete slotiter;
473 slotiter = nullptr;
474 }
475 }
476
477 inline void clearQueues()
478 {
479 isButtonPressedQueue.clear();
480 ignoreSetQueue.clear();
481 mouseEventQueue.clear();
484 }
485
514
516 {
517 activeZoneStringLock.lockForWrite();
518 param = value;
519 activeZoneStringLock.unlock();
520 }
521
523 JoyButtonSlot *slot);
524 void resetAllProperties();
525 void resetPrivVars();
531 bool &changeRepeatState, bool activeSlotHashWindows = false); // JoyButtonSlots class
533 QList<int> &indexesToRemove); // JoyButtonSlots class
538 double weightModifier);
540 double distanceFromDeadZone);
542 void updateParamsAfterDistEvent(); // JoyButtonEvents class
545 QList<JoyButtonSlot *> &getActiveSlotsLocal(); // JoyButtonSlots class
548 double newAxisValueY = 0, double newSpringDeadY = 0);
549 // void getActiveZoneWithAppend(JoyButtonSlot::JoySlotInputAction mode, QList<JoyButtonSlot *>& tempSlotList,
550 // QListIterator<JoyButtonSlot *> *iter, JoyButtonSlot *slot);
553 bool slotsActive);
554
556 bool quitEvent; // JoyButtonEvents class
557 bool isDown;
562 bool ignoreEvents; // JoyButtonEvents class
564 bool updateLastMouseDistance; // Should lastMouseDistance be updated. Set after mouse event.
565 bool updateStartingMouseDistance; // Should startingMouseDistance be updated. Set after acceleration has finally been
566 // applied.
569 bool pendingEvent; // JoyButtonEvents class
574
581 int cycleResetInterval; // unsigned
582
584 double lastMouseDistance; // Keep track of the previous mouse distance from the previous gamepad poll.
585 double lastAccelerationDistance; // Keep track of the previous full distance from the previous gamepad poll
586 double currentAccelMulti; // Multiplier and time used for acceleration easing.
589 double accelTravel; // Track travel when accel started
591 double currentMouseDistance; // Keep track of the current mouse distance after a poll. Used to update lastMouseDistance
592 // later.
593 double currentAccelerationDistance; // Keep track of the current mouse distance after a poll. Used to update
594 // lastMouseDistance later.
595 double startingAccelerationDistance; // Take into account when mouse acceleration started
601
611 static QTimer staticMouseEventTimer; // JoyButtonEvents class
612
616
620 QQueue<JoyButtonSlot *> mouseEventQueue; // JoyButtonEvents class
626 JoyButtonSlot *currentMouseEvent; // JoyButtonEvents class
631
641
646
651
652 void addEachSlotToActives(JoyButtonSlot *slot, int &i, bool &delaySequence, bool &exit,
654};
655
656class MiniSlotRun : public QRunnable, public QObject
657{
658 public:
660 : QObject(btn)
661 , m_slot(slot)
663 , m_btn(btn)
665 {
666 }
667
669
670 void run()
671 {
672 this->thread()->wait(m_miliseconds);
673
675 }
676
677 private:
682};
683
684#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:573
JoyButtonSlot * currentMouseEvent
Definition joybutton.h:626
virtual void copyLastAccelerationDistance(JoyButton *srcButton)
Definition joybutton.cpp:4403
virtual void clearSlotsEventReset(bool clearSignalEmit=true)
Definition joybutton.cpp:3069
void resetAllProperties()
Definition joybutton.cpp:4305
QTimer delayTimer
Definition joybutton.h:609
JoyMouseCurve mouseCurve
Definition joybutton.h:644
void updateMouseParams(bool updatedLastDist, bool updatedStartDist, double oldAccelMultiVal)
Definition joybutton.h:426
static void setStaticMouseThread(QThread *thread, QTimer *staticMouseEventTimer, QElapsedTimer *testOldMouseTime, int idleMouseRefrRate, JoyButtonMouseHelper *mouseHelper)
Definition joybutton.cpp:4517
void setSpringRelativeStatus(bool value)
Definition joybutton.cpp:4033
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:571
void setUseTurbo(bool useTurbo)
Definition joybutton.cpp:1559
virtual QString getCalculatedActiveZoneSummary()
Definition joybutton.cpp:1674
void establishPropertyUpdatedConnections()
Definition joybutton.cpp:4003
void holdEvent()
Definition joybutton.cpp:2680
QQueue< bool > isButtonPressedQueue
Definition joybutton.h:331
QQueue< JoyButtonSlot * > mouseEventQueue
Definition joybutton.h:620
void resetPrivVars()
Definition joybutton.cpp:393
QString customName
Definition joybutton.h:613
bool quitEvent
Definition joybutton.h:556
~JoyButton()
Definition joybutton.cpp:124
bool isExtraAccelerationEnabled()
Definition joybutton.cpp:4408
static QList< JoyButton * > pendingMouseButtons
Definition joybutton.h:298
QElapsedTimer turboHold
Definition joybutton.h:323
QElapsedTimer buttonHold
Definition joybutton.h:632
void finishedPause()
void updatePendingParams(bool isEvent, bool isPressed, bool areIgnoredSets)
Definition joybutton.h:419
virtual double getLastMouseDistanceFromDeadZone()
Definition joybutton.cpp:4394
JoyButtonSlot * currentWheelVerticalEvent
Definition joybutton.h:327
static void restartLastMouseTime(QElapsedTimer *testOldMouseTime)
Definition joybutton.cpp:4515
bool m_ignoresets
Definition joybutton.h:561
QReadWriteLock assignmentsLock
Definition joybutton.h:648
static QList< mouseCursorInfo > cursorXSpeeds
Definition joybutton.h:294
int getPreferredKeyPressTime()
Obtain the appropriate key press time for the current event. Order of preference: active key press ti...
Definition joybutton.cpp:3969
void lockForWritedString(QString &param, QString value)
Definition joybutton.h:515
void setChangeActivated(int index)
static QList< mouseCursorInfo > cursorYSpeeds
Definition joybutton.h:295
static bool hasSpringEvents(QList< PadderCommon::springModeInfo > *springXSpeedsList, QList< PadderCommon::springModeInfo > *springYSpeedsList)
Definition joybutton.cpp:4190
void propertyUpdated()
VDPad * getVDPad()
Definition joybutton.cpp:3463
QElapsedTimer buttonDelay
Definition joybutton.h:637
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:4114
bool hasActiveSlots()
Definition joybutton.cpp:4555
double lastWheelVerticalDistance
Definition joybutton.h:314
virtual void setTurboMode(TurboMode mode)
Set the turbo mode that the button should use.
Definition joybutton.cpp:4108
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:623
void activateMiniSlots(JoyButtonSlot *slot, JoyButtonSlot *mix)
Definition joybutton.cpp:663
double startAccelMultiplier
Definition joybutton.h:598
int springDeadCircleMultiplier
Definition joybutton.h:308
void setMouseMode(JoyMouseMovementMode mousemode)
Definition joybutton.cpp:3523
SetJoystick * getParentSet()
Definition joybutton.cpp:3945
QElapsedTimer wheelHorizontalTime
Definition joybutton.h:322
static void setSpringModeScreen(int screen, int &springModeScreen)
Definition joybutton.cpp:4466
QTimer turboTimer
Definition joybutton.h:317
bool isCycleResetActive()
Definition joybutton.cpp:4001
void setUpdateInitAccel(bool state)
Definition joybutton.cpp:4565
double lastWheelHorizontalDistance
Definition joybutton.h:315
QString getActionName()
Definition joybutton.cpp:3586
void clicked(int index)
void setStartAccelMultiplier(double value)
Definition joybutton.cpp:4455
bool distanceEvent()
Definition joybutton.cpp:447
double accelDuration
Definition joybutton.h:587
static const JoyMouseMovementMode DEFAULTMOUSEMODE
Definition joybutton.h:262
QReadWriteLock activeZoneLock
Definition joybutton.h:647
void pauseWaitEvent()
Definition joybutton.cpp:2475
static bool hasFutureSpringEvents(QList< JoyButton * > *pendingMouseButtons)
Definition joybutton.cpp:4483
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:622
QList< JoyButtonSlot * > assignments
Definition joybutton.h:617
virtual double getLastAccelerationDistance()
Definition joybutton.cpp:4396
void setToggle(bool toggle)
Definition joybutton.cpp:368
virtual double getCurrentSpringDeadCircle()
Definition joybutton.cpp:4513
JoyButtonSlot * currentDelay
Definition joybutton.h:629
virtual int getRealJoyNumber() const
Get a 1 indexed number of button.
Definition joybutton.cpp:364
double currentAccelMulti
Definition joybutton.h:586
QList< JoyButtonSlot * > & getActiveSlotsLocal()
Definition joybutton.cpp:4569
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:4180
QTimer slotSetChangeTimer
Definition joybutton.h:610
int setSelection
Definition joybutton.h:306
virtual void turboEvent()
Definition joybutton.cpp:413
virtual void setDefaultButtonName(QString tempname)
Definition joybutton.cpp:3616
virtual void copyLastMouseDistanceFromDeadZone(JoyButton *srcButton)
Definition joybutton.cpp:4398
void releaseMoveSlots(QList< JoyButton::mouseCursorInfo > &cursorSpeeds, JoyButtonSlot *slot, QList< int > &indexesToRemove)
Definition joybutton.cpp:3307
static JoyButtonSlot * lastActiveKey
Definition joybutton.h:299
QPointer< SetJoystick > m_parentSet
Definition joybutton.h:325
double getMaxAccelThreshold()
Definition joybutton.cpp:4453
void setTurboInterval(int interval)
Definition joybutton.cpp:378
bool getToggleState()
Definition joybutton.cpp:409
static QList< PadderCommon::springModeInfo > springYSpeeds
Definition joybutton.h:297
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:4210
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:635
virtual void setChangeSetCondition(SetChangeCondition condition, bool passive=false, bool updateActiveString=true)
Definition joybutton.cpp:2431
double maxMouseDistanceAccelThreshold
Definition joybutton.h:597
void turboChanged(bool state)
virtual double getAccelerationDistance()
Definition joybutton.cpp:2942
double sensitivity
Definition joybutton.h:583
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:4160
JoyMouseMovementMode mouseMode
Definition joybutton.h:643
void setExtraAccelerationMultiplier(double value)
Definition joybutton.cpp:4424
void keyPressEvent()
Definition joybutton.cpp:3919
void mouseChanged(int mousecode)
void resetAccelerationDistances()
Definition joybutton.cpp:4359
static QList< JoyButtonSlot * > mouseSpeedModList
Definition joybutton.h:293
QElapsedTimer keyPressHold
Definition joybutton.h:636
void delayEvent()
Definition joybutton.cpp:2748
JoyButtonSlot * previousCycle
Definition joybutton.h:624
int getSpringWidth()
Definition joybutton.cpp:3548
void releaseDeskEvent(bool skipsetchange=false)
Definition joybutton.cpp:2780
void keyChanged(int keycode)
bool toggleActiveState
Definition joybutton.h:558
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:332
void activateSlots()
Definition joybutton.cpp:581
void setSpringWidth(int value)
Definition joybutton.cpp:3539
QTimer mouseWheelHorizontalEventTimer
Definition joybutton.h:319
void removeVDPad()
Definition joybutton.cpp:3465
QString defaultButtonName
Definition joybutton.h:336
JoyButtonSlot * currentSetChangeSlot
Definition joybutton.h:630
static QList< PadderCommon::springModeInfo > * getSpringXSpeeds()
Definition joybutton.cpp:4174
void copyAssignments(JoyButton *destButton)
Copy assignments and properties from one button to another. Used for set copying.
Definition joybutton.cpp:4052
int getSpringDeadCircleMultiplier()
Definition joybutton.cpp:4511
int getCycleResetTime()
Definition joybutton.cpp:3993
int cycleResetInterval
Definition joybutton.h:581
bool containsDistanceSlots()
Definition joybutton.cpp:2978
VDPad * m_vdpad
Definition joybutton.h:642
double m_easingDuration
Definition joybutton.h:599
bool whileHeldStatus
Definition joybutton.h:563
QQueue< JoyButtonSlot * > mouseWheelHorizontalEventQueue
Definition joybutton.h:333
static JoyButtonMouseHelper * getMouseHelper()
Definition joybutton.cpp:4162
int m_index_sdl
Definition joybutton.h:302
int springWidth
Definition joybutton.h:578
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:572
double lastMouseDistance
Definition joybutton.h:584
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:603
double startingAccelerationDistance
Definition joybutton.h:595
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:4168
void clearQueues()
Definition joybutton.h:477
static bool hasCursorEvents(QList< JoyButton::mouseCursorInfo > *cursorXSpeedsList, QList< JoyButton::mouseCursorInfo > *cursorYSpeedsList)
Definition joybutton.cpp:4182
static QList< JoyButton::mouseCursorInfo > * getCursorYSpeeds()
Definition joybutton.cpp:4172
QElapsedTimer pauseHold
Definition joybutton.h:633
QString getButtonName()
Definition joybutton.cpp:3598
void setCustomName(QString name)
Definition joybutton.cpp:2032
void setCycleResetStatus(bool enabled)
Definition joybutton.cpp:3995
JoyButtonSlot * currentPause
Definition joybutton.h:621
void waitForDeskEvent()
Definition joybutton.cpp:2598
static int allSlotTimeBetweenSlots
Definition joybutton.h:285
virtual QList< JoyButtonSlot * > getActiveZoneList()
Definition joybutton.cpp:1893
void disconnectPropertyUpdatedConnections()
Definition joybutton.cpp:4010
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:4122
static int timeBetweenMiniSlots
Definition joybutton.h:284
void waitForReleaseDeskEvent()
Definition joybutton.cpp:2631
QList< JoyButtonSlot * > const & getActiveSlots()
Definition joybutton.cpp:2392
static void invokeMouseEvents(JoyButtonMouseHelper *mouseHelper)
Definition joybutton.cpp:4553
bool isRelativeSpring()
Definition joybutton.cpp:4045
void setSensitivity(double value)
Definition joybutton.cpp:3561
bool isDown
Definition joybutton.h:557
static void setGamepadRefreshRate(int refresh, int &gamepadRefreshRate, JoyButtonMouseHelper *mouseHelper)
Set the gamepad poll rate to be used in the application.
Definition joybutton.cpp:4264
void clearPendingEvent()
Definition joybutton.cpp:152
double updateOldAccelMulti
Definition joybutton.h:590
void setWheelSpeed(int speed, QChar ax)
Definition joybutton.cpp:3600
bool ignoreEvents
Definition joybutton.h:562
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:4021
void setSpringDeadCircleMultiplier(int value)
Definition joybutton.cpp:4502
bool isButtonPressed
Definition joybutton.h:310
void setAssignmentChanged(int current_button, int associated_set, int mode)
QList< JoyButtonSlot * > activeSlots
Definition joybutton.h:618
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:576
void setAccelExtraDuration(double value)
Definition joybutton.cpp:4472
QTimer releaseDeskTimer
Definition joybutton.h:606
QTimer keyPressTimer
Definition joybutton.h:608
void changeStatesQueue(bool currentReleased)
Definition joybutton.cpp:2898
int getWheelSpeedX()
Definition joybutton.cpp:3612
int wheelSpeedX
Definition joybutton.h:304
JoyButtonSlot * m_currentDistance
Definition joybutton.h:625
QString buildActiveZoneSummary(QList< JoyButtonSlot * > &tempList)
Definition joybutton.cpp:1696
JoyButtonSlot * currentKeyPress
Definition joybutton.h:628
int turboInterval
Definition joybutton.h:303
void createDeskEvent()
Definition joybutton.cpp:551
void setActionName(QString tempName)
Definition joybutton.cpp:3576
bool updateLastMouseDistance
Definition joybutton.h:564
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:289
void restartAccelParams(bool updatedOldAccel, bool restartedAccelDurTimer, bool restartedRestParams)
Definition joybutton.h:486
virtual void reset()
Definition joybutton.cpp:391
void setExtraAccelerationCurve(JoyExtraAccelerationCurve curve)
Definition joybutton.cpp:4557
int getOriginSet()
Definition joybutton.cpp:2473
void setSpringHeight(int value)
Definition joybutton.cpp:3550
bool updateStartingMouseDistance
Definition joybutton.h:565
QReadWriteLock activeZoneStringLock
Definition joybutton.h:649
int mouseSpeedX
Definition joybutton.h:575
JoyButtonSlot * currentRelease
Definition joybutton.h:627
QList< JoyButtonSlot * > & getAssignmentsLocal()
Definition joybutton.cpp:4567
QTimer setChangeTimer
Definition joybutton.h:607
bool getButtonState()
Checks if this button is currently active.
Definition joybutton.cpp:2471
JoyButtonSlot * currentWheelHorizontalEvent
Definition joybutton.h:328
virtual void initializeDistanceValues()
Definition joybutton.cpp:4384
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:577
QString buttonName
Definition joybutton.h:335
void setIgnoreEventState(bool ignore)
Definition joybutton.cpp:3519
double extraAccelerationMultiplier
Definition joybutton.h:600
bool pendingIgnoreSets
Definition joybutton.h:570
bool isDefault()
Check if button properties are at their default values.
Definition joybutton.cpp:3475
QTimer pauseWaitTimer
Definition joybutton.h:604
void setWhileHeldStatus(bool status)
Definition joybutton.cpp:3574
double accelTravel
Definition joybutton.h:589
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:4130
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:615
static JoyButtonMouseHelper mouseHelper
Definition joybutton.h:300
double getMinAccelThreshold()
Definition joybutton.cpp:4442
bool pendingEvent
Definition joybutton.h:569
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:3947
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:588
bool getIgnoreEventState()
Definition joybutton.cpp:3521
static const JoyExtraAccelerationCurve DEFAULTEXTRAACCELCURVE
Definition joybutton.h:264
virtual void resetProperties()
Definition joybutton.cpp:4298
void setMinAccelThreshold(double value)
Definition joybutton.cpp:4433
int tempTurboInterval
Definition joybutton.h:307
QThreadPool * threadPool
Definition joybutton.h:650
bool containsJoyMixSlot()
Definition joybutton.cpp:3348
QListIterator< JoyButtonSlot * > * slotiter
Definition joybutton.h:619
double getSensitivity()
Definition joybutton.cpp:3570
static void indirectStaticMouseThread(QThread *thread, QTimer *staticMouseEventTimer, JoyButtonMouseHelper *mouseHelper)
Definition joybutton.cpp:4533
virtual void mouseEvent()
Calculate mouse movement coordinates for mouse movement slots currently active.
Definition joybutton.cpp:993
QElapsedTimer cycleResetHold
Definition joybutton.h:639
static bool shouldInvokeMouseEvents(QList< JoyButton * > *pendingMouseButtons, QTimer *staticMouseEventTimer, QElapsedTimer *testOldMouseTime)
Definition joybutton.cpp:4539
static QList< PadderCommon::springModeInfo > springXSpeeds
Definition joybutton.h:296
static QList< JoyButton::mouseCursorInfo > * getCursorXSpeeds()
Definition joybutton.cpp:4170
double getStartAccelMultiplier()
Definition joybutton.cpp:4464
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:4225
void setExtraAccelerationStatus(bool status)
Definition joybutton.cpp:4412
static QList< PadderCommon::springModeInfo > * getSpringYSpeeds()
Definition joybutton.cpp:4176
void findJoySlotsEnd(QListIterator< JoyButtonSlot * > *slotiter)
Definition joybutton.cpp:3424
JoyExtraAccelerationCurve getExtraAccelerationCurve()
Definition joybutton.cpp:4563
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:585
double currentAccelerationDistance
Definition joybutton.h:593
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:580
JoyMouseCurve getMouseCurve()
Definition joybutton.cpp:3537
bool m_useTurbo
Definition joybutton.h:559
virtual void setVDPad(VDPad *vdpad)
Definition joybutton.cpp:3454
SetChangeCondition setSelectionCondition
Definition joybutton.h:326
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:4410
bool containsReleaseSlots()
Definition joybutton.cpp:3331
virtual bool isModifierButton()
Definition joybutton.cpp:4352
static const JoyMouseCurve DEFAULTMOUSECURVE
Definition joybutton.h:260
QQueue< bool > ignoreSetQueue
Definition joybutton.h:330
QTimer pauseTimer
Definition joybutton.h:602
bool isKeyPressed
Definition joybutton.h:311
QTimer createDeskTimer
Definition joybutton.h:605
static const TurboMode DEFAULTTURBOMODE
Definition joybutton.h:263
static QTimer * getStaticMouseEventTimer()
Definition joybutton.cpp:4178
void stopTimers(bool stoppedSlotSetTimer)
Definition joybutton.h:454
double getAccelExtraDuration()
Definition joybutton.cpp:4481
static QTimer staticMouseEventTimer
Definition joybutton.h:611
bool lastUnlessInList
Definition joybutton.h:560
int getTurboInterval()
Definition joybutton.cpp:411
QList< JoyButtonSlot * > * getAssignedSlots()
Definition joybutton.cpp:2390
bool m_toggle
Definition joybutton.h:555
void setCycleResetTime(int interval)
Definition joybutton.cpp:3982
void releaseSlotEvent()
Definition joybutton.cpp:3365
int getSpringHeight()
Definition joybutton.cpp:3559
static void resetActiveButtonMouseDistances(JoyButtonMouseHelper *mouseHelper)
Definition joybutton.cpp:4354
double lastDistance
Definition joybutton.h:313
QElapsedTimer inpauseHold
Definition joybutton.h:634
QElapsedTimer accelExtraDurationTime
Definition joybutton.h:638
void setDistanceForSpring(JoyButtonMouseHelper &mouseHelper, double &mouseFirstAx, double &mouseSecondAx, double distanceFromDeadZone)
Definition joybutton.cpp:1412
bool relativeSpring
Definition joybutton.h:567
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:640
void setJoyNumber(int index)
Definition joybutton.cpp:366
void checkTurboCondition(JoyButtonSlot *slot)
Check if turbo should be disabled for a slot.
Definition joybutton.cpp:4277
virtual void eventReset()
Definition joybutton.cpp:3082
virtual QString getDefaultButtonName()
Definition joybutton.cpp:3618
QTimer mouseWheelVerticalEventTimer
Definition joybutton.h:318
QString actionName
Definition joybutton.h:614
int wheelSpeedY
Definition joybutton.h:305
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:321
bool getWhileHeldStatus()
Definition joybutton.cpp:3572
void setMouseSpeedX(int speed)
Definition joybutton.cpp:2394
int springHeight
Definition joybutton.h:579
void setMaxAccelThreshold(double value)
Definition joybutton.cpp:4444
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:645
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:4200
bool pendingPress
Definition joybutton.h:568
void resetSlotsProp(bool currentChangedSlot=false)
Definition joybutton.h:433
double minMouseDistanceAccelThreshold
Definition joybutton.h:596
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:4150
double currentMouseDistance
Definition joybutton.h:591
bool hasPendingEvent()
Definition joybutton.cpp:150
int getWheelSpeedY()
Definition joybutton.cpp:3614
Definition joydpadxml.h:27
Definition joybutton.h:657
int m_miliseconds
Definition joybutton.h:681
JoyButtonSlot * m_slot
Definition joybutton.h:678
JoyButton * m_btn
Definition joybutton.h:680
MiniSlotRun(JoyButtonSlot *slot, JoyButtonSlot *slotmini, JoyButton *btn, int milisec)
Definition joybutton.h:659
void run()
Definition joybutton.h:670
JoyButtonSlot * m_slotmini
Definition joybutton.h:679
~MiniSlotRun()
Definition joybutton.h:668
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