Hi,
Just tackled a similar issue, with a wired GPIO nes pads and USB snes pads.
What made them all work with properly was:
1. deleting (or commenting) the “input_player#_whatever=” in the
/opt/retropie/configs/all/retroarch.cfg
2. making seperate configuration files for each type of joystick in the
/opt/retropie/emulators/RetroArch/configs/
for example, I made this file for my USB snes pad:
/opt/retropie/emulators/RetroArch/configs/USBGamepad.cfg
input_device = "USB Gamepad "
input_driver = "udev"
input_a_btn = "1"
input_b_btn = "2"
input_x_btn = "0"
input_y_btn = "3"
input_l_btn = "4"
input_r_btn = "5"
input_select_btn = "8"
input_start_btn = "9"
input_up_axis = "-1"
input_down_axis = "+1"
input_left_axis = "-0"
input_right_axis = "+0"
input_enable_hotkey_btn = "8"
input_exit_emulator_btn = "9"
and my GPIO nes controller has another file (it’s a Japanese Famicom, and different from US wiring)
/opt/retropie/emulators/RetroArch/configs/NESpad.cfg
input_device = "NES pad"
input_driver = "udev"
input_b_btn = "1"
input_select_btn = "2"
input_start_btn = "3"
input_up_axis = "-1"
input_down_axis = "+1"
input_left_axis = "-0"
input_right_axis = "+0"
input_a_btn = "0"
input_enable_hotkey_btn = "2"
input_exit_emulator_btn = "3"
* I got the name of the device from running:
udevadm info --query=all --n /dev/input/js0 --attribute-walk