void JoyAxis::createDeskEvent(bool ignoresets) { JoyAxisButton *eventbutton = 0; if (currentThrottledValue > deadZone) { eventbutton = paxisbutton; } else if (currentThrottledValue < -deadZone) { eventbutton = naxisbutton; } if (eventbutton && !activeButton) { // There is no active button. Call joyEvent and set current // button as active button eventbutton->joyEvent(eventActive, ignoresets); activeButton = eventbutton; } else if (!eventbutton && activeButton) { // Currently in deadzone. Disable currently active button. activeButton->joyEvent(eventActive, ignoresets); activeButton = 0; } else if (eventbutton && activeButton && eventbutton == activeButton) { //Button is currently active. Just pass current value eventbutton->joyEvent(eventActive, ignoresets); } else if (eventbutton && activeButton && eventbutton != activeButton) { // Deadzone skipped. Button for new event is not the currently // active button. Disable the active button before enabling // the new button activeButton->joyEvent(!eventActive, ignoresets); eventbutton->joyEvent(eventActive, ignoresets); activeButton = eventbutton; } }