Xbox Controller

This page describes configuring VO to use an Xbox controller as a joypad.

Note that this page was written based on my experience with a Controller-S in Windows XP using the XBCD driver. Users with 3rd party joypads in different OSes using different drivers may find that axis and button IDs differ from what is shown here.

## First steps

Get your drivers installed, your controller plugged in and recognised, and login to VO. Hit escape, go to the controller menu, the joystick tab, and check to see if VO detected your joypad.

If it didn't, the rest of this page is useless to you. If it did, you now have a nice new config.ini entry for your controller.

## Axis IDs

These are the axis IDs corresponding to the JOYXXX blocks in the first half of the config.ini entry, and to the dropdown menus in the VO joystick config menu.

"*No such axis*" means that this axis doesn't exist on the Xbox controller, so there's no point in setting any function to them.

```
RU - *No such axis*
RZ - *No such axis*
RY - right joystick, y axis
RX - right joystick, x axis
Z  - *No such axis*
Y  - left joystick, y axis
X  - left joystick, x axis

```

## Button IDs

These are the button IDs corresponding to the JOYBUTTON numbers in the second half of the config.ini entry.

Though config.ini provides space for up to 23 button configurations per entry, anything above 11 is ignored for the Xbox controller as there are "only" 12 buttons, so there's no point in setting any function to them.

```
0  - A
1  - B
2  - X
3  - Y
4  - black
5  - white
6  - start
7  - select
8  - left joystick click
9  - right joystick click
10 - left trigger
11 - right trigger

```

## Empty entry

This is an empty config.ini for the Xbox controller.

* Buttons and axes that you can add binds to are marked in bold.
* Nonexistent buttons and axes are crossed out.

It would be nicer to just remove these superfluous bits altogether, but they just get put back automatically if you do. This code block should still be okay to copy/paste, despite all the formatting.

Note that when configuring this, some axes will need to be inverted. However, I'm not sure which controls require inversion on which joysticks, so you'll have to figure that part out for yourself.

```
[XBCD XBox Gamepad]
enabled=1
JOYRU=NONE
Ruaxisinvert=0
Ruaxiscenter=0
Ruaxismindeadzone=-10
Ruaxisdeadzone=10
Ruaxisminsaturation=-95
Ruaxissaturation=95
JOYRZ=NONE
Rzaxisinvert=0
Rzaxiscenter=0
Rzaxismindeadzone=-10
Rzaxisdeadzone=10
Rzaxisminsaturation=-95
Rzaxissaturation=95
**JOYRY=**
Ryaxisinvert=0
Ryaxiscenter=0
Ryaxismindeadzone=-10
Ryaxisdeadzone=10
Ryaxisminsaturation=-95
Ryaxissaturation=95
**JOYRX=**
Rxaxisinvert=0
Rxaxiscenter=0
Rxaxismindeadzone=-10
Rxaxisdeadzone=10
Rxaxisminsaturation=-95
Rxaxissaturation=95
JOYZ=NONE
zaxisinvert=0
zaxiscenter=0
zaxismindeadzone=-10
zaxisdeadzone=10
zaxisminsaturation=-95
zaxissaturation=95
**JOYY=**
yaxisinvert=0
yaxiscenter=0
yaxismindeadzone=-10
yaxisdeadzone=10
yaxisminsaturation=-95
yaxissaturation=95
**JOYX=**
xaxisinvert=0
xaxiscenter=0
xaxismindeadzone=-10
xaxisdeadzone=10
xaxisminsaturation=-95
xaxissaturation=95
**JOYBUTTON0=**
**JOYBUTTON1=**
**JOYBUTTON2=**
**JOYBUTTON3=**
**JOYBUTTON4=**
**JOYBUTTON5=**
**JOYBUTTON6=**
**JOYBUTTON7=**
**JOYBUTTON8=**
**JOYBUTTON9=**
**JOYBUTTON10=**
**JOYBUTTON11=**
JOYBUTTON12=
JOYBUTTON13=
JOYBUTTON14=
JOYBUTTON15=
JOYBUTTON16=
JOYBUTTON17=
JOYBUTTON18=
JOYBUTTON19=
JOYBUTTON20=
JOYBUTTON21=
JOYBUTTON22=
JOYBUTTON23=
**JOYPOV0UP=**
**JOYPOV0RIGHT=**
**JOYPOV0DOWN=**
**JOYPOV0LEFT=**

```

## Sample entry

This is a sample working entry, for instant gratification. It depends on the Variable\_zoom\_bind and the Turbo\_lock\_bind. The select button is unmapped, but only because I couldn't think of anything to map to it.

The controls are as follows:

```
left joystick        - vertical and horizontal strafing
right joystick       - turn and pitch
left joystick click  - roll left
right joystick click - roll right
d up                 - accelerate
d down               - decelerate
d right              - toggle flight mode
d left               - toggle turbo
start                - brake
right trigger        - primary weapon
left trigger         - secondary weapon
Y                    - tertiary weapon
X                    - zoom in
B                    - zoom out
A                    - activate
black                - target next nearest enemy
white                - target previous nearest enemy

```

And here is the entry itself, ready to copy and paste:

```
[XBCD XBox Gamepad]
enabled=1
JOYRU=NONE
Ruaxisinvert=0
Ruaxiscenter=0
Ruaxismindeadzone=-10
Ruaxisdeadzone=10
Ruaxisminsaturation=-95
Ruaxissaturation=95
JOYRZ=NONE
Rzaxisinvert=0
Rzaxiscenter=0
Rzaxismindeadzone=-10
Rzaxisdeadzone=10
Rzaxisminsaturation=-95
Rzaxissaturation=95
JOYRY=Pitch
Ryaxisinvert=1
Ryaxiscenter=0
Ryaxismindeadzone=-10
Ryaxisdeadzone=10
Ryaxisminsaturation=-95
Ryaxissaturation=95
JOYRX=Turn
Rxaxisinvert=1
Rxaxiscenter=0
Rxaxismindeadzone=-10
Rxaxisdeadzone=10
Rxaxisminsaturation=-95
Rxaxissaturation=95
JOYZ=NONE
zaxisinvert=0
zaxiscenter=0
zaxismindeadzone=-10
zaxisdeadzone=10
zaxisminsaturation=-95
zaxissaturation=95
JOYY=StrafeUD
yaxisinvert=1
yaxiscenter=0
yaxismindeadzone=-10
yaxisdeadzone=10
yaxisminsaturation=-95
yaxissaturation=95
JOYX=StrafeLR
xaxisinvert=0
xaxiscenter=0
xaxismindeadzone=-10
xaxisdeadzone=10
xaxisminsaturation=-95
xaxissaturation=95
JOYBUTTON0=activate
JOYBUTTON1=zoomOut
JOYBUTTON2=zoomIn
JOYBUTTON3=+Shoot3
JOYBUTTON4=RadarNextNearestEnemy
JOYBUTTON5=RadarPrevNearestEnemy
JOYBUTTON6=+Brakes
JOYBUTTON7=
JOYBUTTON8=+RotateCW
JOYBUTTON9=+RotateCCW
JOYBUTTON10=+Shoot1
JOYBUTTON11=+Shoot2
JOYBUTTON12=
JOYBUTTON13=
JOYBUTTON14=
JOYBUTTON15=
JOYBUTTON16=
JOYBUTTON17=
JOYBUTTON18=
JOYBUTTON19=
JOYBUTTON20=
JOYBUTTON21=
JOYBUTTON22=
JOYBUTTON23=
JOYPOV0UP=+Accelerate
JOYPOV0RIGHT=FlyModeToggle
JOYPOV0DOWN=+Decelerate
JOYPOV0LEFT=ttog

```

## Performance

The learning curve for moving to the Xbox controller from the usual mouse+keyboard combo is quite steep. With flight-assist mode on, it's not too bad. In physics mode, there's something about having to think in full 3D *and* manage two joysticks at once that kind of overloads your brain.

Be prepared to put in some time flying around your home station, bumping into things and tweaking settings. Moving from FPS controls to flight sim controls makes it feel like a completely different game, which means learning to walk all over again. It's quite fun though, and the extra control and accuracy is well worth the effort, too.

## External Links

* http://www.redcl0ud.com/xbcd.html - XBCD - XBox Controller Driver for Windows 98/2000/XP
* http://www.fury-tech.com/en/Guides/Xbox-Controller-PC-Conversion-Mod - Tutorial on adapting an Xbox controller to standard USB
* http://www.jandaman.com/games.mvc?p=usbxbox&Category\_code=XBOX - Premade USB adapter (these are widely available in many online shops, this is just one example, so shop around)