I use a base project for my games to be able to easily use multiple inputs for one or multiple players.
You can find a demo here :
remig.red/unifyinput
My goal was to only have to change this text to define all inputs for one player.
Inputs are set with an action name, a gamepad index button and a keyboard keycode (and "-1" for no input).
So if you write : "Jump,0,32" in default controls for player 1
On button 0 on Gampepad0 pressed or "Space" pressed on the Keyboard
will call a Function "Jump_Pressed" with parameter (playerID)
On button 0 on Gampepad0 released or "Space" released on the Keyboard
will call a Function "Jump_Released" with parameter (playerID)
Is button 0 on Gampepad0 down or "Space" down on the Keyboard
Value in Dictionnary at "1_Jump" will be set to 1
Will gladly comment, explain and share the capx if you think you can use a thing like this.