I use autohotkey, script function is easy. All the script does is while joystickbtn 15 is pressed down it holds Q down for 45 ms, then it releases it. You can of course tweak the script, however you want it. I use TM warthog joystick, where btn 15 is decoy btn pressed down.
Joy15:: while GetKeyState("Joy15", "P") { Send {q down} Sleep, 45 Send {q up} } return