Download:
6DOF gamepad XML config
Why even use a gamepad - isn't StarCitizen a PC game?
StarCitizen has a lot of possible actions and controls to bind, and it's still evolving as new features are added.
The controller may never fully replace the need for a keyboard, but it can certainly enhance the feel of virtual flight control.
The primary benefit of the gamepad is the 4 analog inputs - the 2 triggers, and 2 joysticks - as these are pressure sensitive.
This allows for incremental or 'gradual' application of multiple control inputs - something not possible in a basic mouse+keyboard setup.
Using the analog inputs for flight controls allows for finer degree of precision in your flight controls.
![](images/joystick.png)
Gamepads can serve as the "poor man's dual-stick" option.
They're already familiar to most gamers, (somewhat) reasonably priced, and can work on PC with a wireless adapter.
...and if you watch enough ATV, you'll often see the devs making use of them. Hrm...
A note on modifier keys in StarCitizen
The gamepad has a total of 18 controller inputs available: 14 buttons - recognized as a simple on/off state when pressed, and the 4 analog inputs: 2 triggers, and 2 joysticks.
Fortunately, the limited functionality of these 18 basic inputs can be extended by the use of modifier keys.
(There is currently no in-game method of assigning custom modifier keys, but it can be done by hand-editing the exported XML binding.)
To re-state the obvious: When a modifier key is pressed, it changes the game action assigned to the target input (button/joystick/trigger).
By extension, obviously, this also means you can not trigger 'modified' and 'unmodified' states of the
same input at the same time.
This has implications for what game functions are mapped on to the same physical inputs, as
it is possible to introduce binding overlaps that can interrupt regular flight controls.
Not all bindings cause conflicts - some functions may safely 'overlap' at the same time - but others interrupt and cancel-out eachothers input actions.
So what's wrong with the default gamepad layout?
The current gamepad flight mode layout was designed to match the "on foot" controls, where up on the left-stick = "move forward", and right-stick "looks around".
This also imitates a HOTAS setup, where the left stick manages the throttle, and the right stick handles direction.
However, when it comes to "flight mode", some of the most basic flight controls require modifier combinations that overlap with other functionalities in a negative way.
This is particularly noticeable with the joystick actions while the modifier (LB) is pressed - for example:
- Triggering the 4 main ABXY buttons (in the normal fashion) requires breaking thumb contact with the (R) joystick, effectively "letting go" of pitch/yaw flight control for a brief moment (problematic when trying to maintain an enemy in your sights).
- The right joystick (R) controls pitch & yaw: but when the (LB) modifier is held as (R) is manipulated, the ship will strafe in the corresponding direction. As a consequence of these control actions sharing the same physical input (R), it is not possible to combine pitch/yaw with strafe manuevers - an important ability for omnidirectional control. Pitch/Yaw/Roll & Strafe can only be combined when they are bound to separate inputs. (ex, (R)+(L) )
- 'Roll' requires modifier (LB)+ (L) x-axis, despite the close relation of 'roll' to 'yaw' (both handle rotational orientation), which is bound to the opposite joystick. However, The modifier (LB) with (R) activates strafe - which means it is simply not possible to combine roll with either pitch and/or yaw: another requirement for 6DoF control.
- The modifier (LB) also alters the trigger actions, halting and preventing weapons from firing until released.
These sorts of control conflicts can be deadly in a dogfight!
Towards a better gamepad binding layout
The layout should prioritize 6DoF control, taking special care to avoid any control conflicts or modifier overlaps that interrupt basic pilot operations.
Overlaps on the analog inputs should be avoided, unless the underlying actions do not interfere with each other.
6DoF flight controls
1
2
3
4
5
6
- pitch
- yaw
- roll
- strafe up/down
- strafe left/right
- forward/backward
3 categories of control type:
- thrust: forward/back
- rotational orientation: pitch, yaw, and roll
- latteral movement: strafe up/down/left/right
three movement axes and all three rotational axes
For true 6DoF control:
- Forward/back are along one axis of travel: this maps well to an analog trigger, ex, (RT) - a one-axis analog input. This also feels very natural, akin to 'driving' in most games, where 'right trigger' = 'accelerate forward'. As forward/back are mutually exclusive (you can not travel in both directions at once), it is acceptable to require a modifier to enable 'reverse mode' on the same input.
- Pitch & yaw should be bound to (L), to allow the right thumb (and control scheme) to make easy use of the ABXY buttons, while maintaining constant left thumb contact on the pitch/yaw control. This is vital in combat situations.
- Strafe up/down/left/right should be bound to the (unmodified) joystick (R), to allow combined manipulations with (L) for omnidirectional control.
- Roll - for true 6DoF, left/right would now need to be bound to the corresponding bumper buttons to allow mixture with the other flight inputs - However, as left/right is also 'either/or', and this control greatly benefits from an analog axis input, it makes little sense to tie up 2 buttons for movement along 1 axis. Modifier+(L) x-axis was used in the original gamepad layout, and this works well enough, alternating between roll & yaw input, as it still allows for combinations of roll+pitch.
- We need to add more modifiers, with bindings assinged by 'category'
- Flight:
- Pitch
![](images/32x32/LS_y.png)
- Yaw
![](images/32x32/LS_x.png)
- Roll
![](images/32x32/LT.png)
![](images/32x32/LS_x.png)
- Strafe
![](images/32x32/RS.png)
- Thrust forward
![](images/32x32/RT.png)
- Thrust reverse
![](images/32x32/LB.png)
![](images/32x32/RT.png)
- Speed Limiter increase/decrease
![](images/32x32/RT.png)
![](images/32x32/RS_y.png)
- Cruise-control
![](images/32x32/button_B.png)
- Decouple
![](images/32x32/LT.png)
(click)
- Offensive:
- Weapon 1
(click)
- Weapon 2
![](images/32x32/button_X.png)
- Missile Lock
![](images/32x32/RB.png)
![](images/32x32/button_Y.png)
- Missile Fire
![](images/32x32/RB.png)
![](images/32x32/button_Y.png)
- Defensive:
- Cycle Countermeasure
![](images/32x32/LT.png)
![](images/32x32/button_X.png)
- Launch Countermeasure
![](images/32x32/LT.png)
![](images/32x32/button_Y.png)
- Targeting:
- Nearest Hostile
![](images/32x32/dpad_left.png)
- Cycle Hostile Target
![](images/32x32/dpad_right.png)
- Pin Target
![](images/32x32/LT.png)
![](images/32x32/dpad_up.png)
- Cycle Pinned Targets
![](images/32x32/LT.png)
![](images/32x32/dpad_right.png)
- Ship Functions:
- Flight Ready
![](images/32x32/RB.png)
![](images/32x32/dpad_up.png)
- Landing Mode
![](images/32x32/RB.png)
![](images/32x32/dpad_down.png)
- Spool Quantum Drive
![](images/32x32/RB.png)
![](images/32x32/button_Y.png)
- Launch Quantum Drive
![](images/32x32/RB.png)
![](images/32x32/button_Y.png)
- Activate Scanning Mode
![](images/32x32/RB.png)
![](images/32x32/dpad_right.png)
- Scanning Ping
![](images/32x32/RB.png)
- Activate Mining Mode
![](images/32x32/RB.png)
![](images/32x32/dpad_left.png)
- Pilot Functions:
- Interact / Use
![](images/32x32/button_Y.png)
- Freelook
![](images/32x32/LB.png)
- Exit Seat
![](images/32x32/LT.png)
![](images/32x32/button_A.png)
- Eject
![](images/32x32/LB.png)
![](images/32x32/RB.png)
![](images/32x32/back.png)
- Mobiglass
![](images/32x32/back.png)
- Camera:
- Switch Camera
![](images/32x32/LB.png)
![](images/32x32/button_Y.png)
- 3rd POV Camera Freelook
![](images/32x32/LB.png)
![](images/32x32/dpad_left.png)
![](images/32x32/RS.png)
- Camera pitch/yaw
![](images/32x32/LB.png)
![](images/32x32/RS.png)
- Camera zoom in
![](images/32x32/LB.png)
![](images/32x32/dpad_up.png)
- Camera zoom out
![](images/32x32/LB.png)
![](images/32x32/dpad_down.png)
Binding Bugs in 3.7:
Upon every fresh restart of the game, the gamepad config must be applied again.