Star Citizen is orders your controllers on the order which Windows determines and you don't have any good control over the Windows order. Furthermore Star Citizen supports only 4 controllers with a controller GUI. If you only have 1 stick, maybe 2 sticks, a throttle and perhaps rudder pedals, perfect, only 4 controllers, you have full control over inversion settings, curves, saturation, dead-zone.... if that isn't bugged out in SC. However, the Windows order isn't fixed. It is dependent on your configuration: If you unplug any controller while Windows is running, the order changes. If you plug a controller in a different USB port, the order changes. If you made some changes and reboot Windows, the order also might change. If you add a controller, the order also changes. If you have more then 4 controllers, you might loose control over controller settings which aren't in the range of the first 4 controllers There are some options to get your controller order under control: Use a powered USB hub with an on/off switch for each USB device. Switch off all controllers before you boot. After boot, switch on and let Windows detect every controller in the good order. When Windows has detected every controller, start SC. Source: @Archangel_666 Use HidGuardian to hide unwanted controllers for Windows and SC. I only don't know if hidden devices like button boxes will be usable if hidden Play around with USB ports, try to change the order by plugging in devices / controllers in different USB ports, reboot after every change and check the order Devreorder gets blocked by EAC. That is a pity. it worked very good devreorder: https://robertsspaceindustries.com/spectrum/community/SC/forum/50264/thread/getting-your-controllers-under-control/2921293 source: @R0y_Batty If you have your desired order: don't unplug any controller when Windows is booted don't change USB ports don't change controller configuration Re configuring bindings Any binding you made in SC, any custom setting has to be changed after each controller order change. Eventually, there will be changes in hardware configuration and you must sort everything out again to get your controllers again at your desired configuration. First, you must figure out in which order Star Citizen detects your controllers. The best way is to check the game.log of Star Citizen or use a console command. In the game.log you will find Input Initialization somewhere in the beginning, for me, row 83: <23:43:30> Input initialization <23:43:30> - Connected joystick0: Swiftpoint Z {0005214E-0000-0000-0000-504944564944} <23:43:30> - Connected joystick1: Throttle - HOTAS Warthog {0404044F-0000-0000-0000-504944564944} <23:43:30> - Connected joystick2: RIGHT VPC WarBRD + TMW {204403EB-0000-0000-0000-504944564944} <23:43:30> - Connected joystick3: Logitech G13 Joystick {C2AB046D-0000-0000-0000-504944564944} <23:43:30> - Connected joystick4: vJoy Device {BEAD1234-0000-0000-0000-504944564944} <23:43:30> - Connected joystick5: Joystick - HOTAS Warthog {0402044F-0000-0000-0000-504944564944} <23:43:30> - Connected joystick6: MFG Crosswind V2 {0A3816D0-0000-0000-0000-504944564944} <23:43:31> - Connected joystick7: Thrustmaster TMX Racing Wheel {B67F044F-0000-0000-0000-504944564944} <23:43:31> - Connected joystick8: LEFT VPC WarBRD + TMW {204203EB-0000-0000-0000-504944564944} <23:43:31> - Connected joystick9: F16 MFD 1 {B351044F-0000-0000-0000-504944564944} <23:43:31> - Connected joystick10: Joystick V2.04 {00040001-0000-0000-0000-504944564944} <23:43:31> - Connected joystick11: F16 MFD 2 {B352044F-0000-0000-0000-504944564944} You also can use a console dump to find your order: https://robertsspaceindustries.com/spectrum/community/SC/forum/3/thread/having-to-reconfigure-keybindings-for-3-0-here-are/66765 source: @harkonian Press tilde -key "~", type: "i_DumpDeviceInformation" You get a similar list as in the game.log. You can try to swap devices with "pp_resortdevices joystick x y", but that didn't work out for all my controllers. You also can edit your saved profile, fill in the correct joystick number at every binding. find the old joystick number. As an example: js1 -> js2; js2 -> js3; js3 -> js1 replace all: js1_ with jsX2_ replace all: js2_ with jsX3_ replace all: js3_ with jsX1_ replace all: jsX with js save and close the profile import the new profile with tilde-key; pp_rebindkeys <filename> Re configuring controller axis without UI Each controller has a bunch of settings. The first 4 controller-settings can be changed with SC Controller GUI: <deviceoptions name="Throttle - HOTAS Warthog {0404044F-0000-0000-0000-504944564944}"> <option input="rotz" deadzone="0.069300003"/> <option input="rotz" saturation="0.82169998"/> <option input="rotz" saturation="0.99000001"/> <option input="z" deadzone="0.049499996"/> <option input="y" deadzone="0.049499996"/> <option input="x" deadzone="0.049499996"/> <option input="slider1" deadzone="0.0594"/> <option input="x" saturation="0.90089995"/> <option input="y" saturation="0.90089995"/> <option input="z" saturation="0.85139996"/> <option input="slider1" saturation="0.85139996"/> </deviceoptions> <options type="joystick" instance="2" Product="Throttle - HOTAS Warthog {0404044F-0000-0000-0000-504944564944}"> <fps_view_pitch invert="1" exponent="1.6"/> <fps_view_yaw invert="1" exponent="1.5"/> <fps_move_lateral invert="1" exponent="1.7"/> <fps_move_longitudinal invert="1" exponent="1.6"/> <flight_move_pitch invert="1" exponent="1.7"/> <flight_move_yaw invert="1" exponent="1.6"/> <flight_move_roll invert="1" exponent="1.5"/> <flight_move_strafe_vertical invert="1" exponent="1.4"/> <flight_move_strafe_lateral invert="1" exponent="1.4"/> <flight_move_strafe_longitudinal invert="1" exponent="1.4" locked="1"/> <flight_move_strafe_forward invert="1" exponent="1.6"/> <flight_move_strafe_backward invert="1" exponent="1.7"/> <flight_move_speed_range invert="1" exponent="1.8000001"/> <flight_move_accel_range invert="1" exponent="1.7"/> <flight_aim_pitch invert="1" exponent="2"/> <flight_aim_yaw invert="1" exponent="1.7"/> <flight_view exponent="1"/> <flight_view_pitch invert="1" exponent="1.7"/> <flight_view_yaw invert="1" exponent="1.7"/> <flight_zoom invert="1"/> <turret_aim_pitch invert="1" exponent="1.7"/> <turret_aim_yaw invert="1" exponent="2"/> <mgv_view_pitch invert="1" exponent="1.6"/> <mgv_view_yaw invert="1" exponent="1.5"/> <mgv_move exponent="1.9"/> <mining_throttle exponent="1.7"/> </options> All controllers beyond the first 4 don't have a GUI, but you can make custom xml files which can be imported by pp_rebindkeys. I made a bunch of pp_rebind xml files which can be loaded during SC play. That way I'm able to change my controller curves in-game. You only need to isolate the settings you want to change. This is how a custom xml looks for changing the exponent for all strafe curves: <ActionMaps version="1" optionsVersion="2" rebindVersion="2" profileName="TEST"> <options type="joystick" instance="9" Product="LEFT VPC WarBRD + TMW {204203EB-0000-0000-0000-504944564944}"> <flight_move_strafe_vertical exponent="1.6"/> <flight_move_strafe_lateral exponent="1.6"/> </options> <options type="joystick" instance="7" Product="MFG Crosswind V2 {0A3816D0-0000-0000-0000-504944564944}"> <flight_move_strafe_longitudinal exponent="1.6"/> </options> </ActionMaps> And if you want to use custom curves instead of exponential curves: <ActionMaps version="1" optionsVersion="2" rebindVersion="2" profileName="1_0"> <options type="joystick" instance="1" Product="Joystick - HOTAS Warthog {0402044F-0000-0000-0000-504944564944}"> <flight_move_pitch> <nonlinearity_curve> <point in="0" out="0"/> <point in="0.08" out="0.0008"/> <point in="0.16" out="0.00640000032"/> <point in="0.24" out="0.0216000024"/> <point in="0.32" out="0.0512000024"/> <point in="0.4" out="0.1"/> <point in="0.48" out="0.172800016"/> <point in="0.56" out="0.274399992"/> <point in="0.64" out="0.409600016"/> <point in="0.72" out="0.583200072"/> <point in="0.8" out="0.8"/> <point in="0.82" out="0.854199982"/> <point in="0.84" out="0.897599996"/> <point in="0.86" out="0.931400002"/> <point in="0.88" out="0.956799996"/> <point in="0.9" out="0.975"/> <point in="0.92" out="0.9871999994"/> <point in="0.94" out="0.9945999994"/> <point in="0.96" out="0.99839999992"/> <point in="0.98" out="0.9998"/> <point in="1" out="1"/> </nonlinearity_curve> </flight_move_pitch> </ActionMaps> If the controller order changes, just make sure that your joystick instance is correct