The supposed fix doesn't seem to work. (https://github.com/libsdl-org/SDL/commit/ba8bc143c1691a837a9265d1911ea737d7bb8002) Controllers are still enumerated in the opposite order. For example, running gamepad-tool: > [LOG] SDL2 Gamepad Tool v1.1.2 by General Arcade (compiled with SDL version 2.0.4, DLL version 2.0.16) > [LOG] Website: http://generealarcade.com/gamepadtool/ > [LOG] Searching gamepads... > [LOG] Found 2 gamepad(s): > [LOG] "GameSir G3w", 03000000bc2000000055000011010000 (mapping available) > [LOG] "X360 Controller", 030000005e0400008e02000010010000 (mapping available) But "X360 Controller" is /dev/input/js0, /dev/input/event20 "GameSir G3w" is /dev/input/js1, /dev/input/event21 https://github.com/libsdl-org/SDL/issues/4430