For anyone that’s interested…
I managed to have another go at this and I think I got it working.
1. Plug in a controller to any USB port and type this command:
udevadm info –query=property –name=/dev/input/js0
2. Move the controller to the other USB ports and run the command above.
3. The information returned from each USB port allows you to create a file named 20-custom.rules in /etc/udev/rules.d with the following contents:
# Lower Left USB Port
KERNEL==”js*”, KERNELS==”1-1.3″, NAME=”input/js0″
# Lower Right USB Port
KERNEL==”js*”, KERNELS==”1-1.5″, NAME=”input/js1″
# Upper Left USB Port
KERNEL==”js*”, KERNELS==”1-1.2″, NAME=”input/js2″
# Upper Right USB Port
KERNEL==”js*”, KERNELS==”1-1.4″, NAME=”input/js3″
This results in a control pad being connected to, for example, the upper left USB port to be assigned js2. It doesn’t differentiate between devices but using their model/serial/name rather than which USB port they are connected to should generate this behaviour.
Hope this is of help to someone!