NOt that I know of. As it is gamepad have to be explicitly polled for information rather than triggered.
Personally I feel the gamepad should be
On gpad Left
-- if gpad = 0 then do player 1 stuff
as it is now
On gpad 0 Left
-- do player 1 stuff
this is really annoying as it requires duplicating all the controller events. This can be easily done by putting all controller events into a single group say "Player 1".
Then copy/paste Player 1 to new versions. then go through each event and reference controller index 0 to 1, and repeat for every controller :(
alternativly you can do what I did.
Repeat 4 Times
-- Is gpad loopindex Left then Function.Call("Pad.Left", loopindex)
-- Is gpad loopoinex A Then Function.Call("Pad.A", loopindex)
I do a little more than that to handle Press, Release and analog state. but that's the jist of handling X number of controllers with the same code base.
The disadvantage is that the controller is constantly polled every tick rather triggering on an input event :(