Временное решение для перебора - просто переименовать / удалить файлы устройства, то есть:
rm /dev/input/js0
mv /dev/input/js1 /dev/input/js0
Обратите внимание, однако, что большинство современных игр вообще не используют /dev/input/js0
интерфейс, поэтому вам также необходимо позаботиться о /dev/input/eventX
файлах. Вы можете использовать, evtest
чтобы узнать, какое устройство ваша клавиатура и джойстик. При следующей перезагрузке устройства вернутся в прежнем порядке.
Другой чуть менее грубый метод - через переменную окружения:
SDL_JOYSTICK_DEVICE="/dev/input/js1"
export SDL_JOYSTICK_DEVICE
Это заставляет игры на основе SDL использовать js1 вместо js0. Я не думаю, что это будет работать с современными играми на основе SDL2, и это будет работать только для одного джойстика / геймпада, поэтому он имеет ограниченное использование.
SDL2 предоставляет возможность настройки джойстика и кнопок переназначения, но я не думаю, что в данный момент есть возможность переупорядочить устройства.
И, наконец, есть также «чистый» метод написания правила udev, который, по сути, делает то же самое, что и rm
/ mv
hack, но постоянно. Эти правила приводятся, /etc/udev/rules.d/
и учебники по их написанию можно найти разбросанными по сети, возможно, это поможет, но не уверен, что они актуальны:
http://www.reactivated.net/writing_udev_rules.html