Xbox Input Devices
Contents
XID Overview
XIDs are USB devices.
The hardware side is USB with a different plug while the software side is USB without HID-descriptors. Technicly a XID is a USB-hub for the Memory-Units and the XBL Communicator. The logical XID gamepad USB device is internally connected to that hub.
USB Adapters
The Xbox's Input devices are USB devices. As such, you can connect a keyboard to the Xbox, or a gamepad to your PC. In fact, Linux already has drivers for the gamepad. In order to preserve Xbox hardware, please do not cut OEM Xbox cables to make an adapter; decent adapters can be acquired cheaply (~$10 USD ea. on 2017.04.30).
Port (From) | Plug (To) | Link |
---|---|---|
Xbox | USB-A | Amazon Aliexpress |
USB-A | Xbox | Amazon Aliexpress |
Wiring
Untested / unverified! Take this with a grain of salt.
Pin | Typical cable color | Description |
---|---|---|
1 | Red | VCC |
2 | White | USB D+ |
3 | Green | USB D- |
4 | Yellow | VBlank signal from video output (for Lightguns) |
5 | Black | GND |
Protocol
XID are similar to HID but have custom Vendor requests
Control Transfers
GET_DESCRIPTOR
- bmRequestType: 0xC1
- bRequest: 6
- wValue: 0x4200
- wIndex: Interface number
- wLength: <length of respective report; typically 16>
Actual length is truncated to size of descriptor or wLength. Whichever is smaller.
typedef struct XIDDescriptor { uint8_t bLength; uint8_t bDescriptorType; uint16_t bcdXid; uint8_t bType; uint8_t bSubType; uint8_t bMaxInputReportSize; uint8_t bMaxOutputReportSize; uint16_t wAlternateProductIds[4]; };
bDescriptorType is probably always 0x42.
bType = 1: Xbox Gamecontroller
- bSubType:
- 0x01 = Gamepad (Duke)
- 0x02 = Gamepad (Controller-S)
- 0x10 = Steering wheel
bType = 128: Steel Battalion
- bSubType:
- 0x01
This is an example XID descriptor taken from a Controller-S (VID 0x045E / PID 0x0289).
bLength 0x10 (16 bytes) bDescriptorType 0x42 bcdXid 0x0100 (USB 1.0) bType 0x01 bSubType 0x02 bMaxInputReportSize 0x14 (20 bytes) bMaxOutputReportSize 0x06 (6 bytes) wAlternateProductIds 4 x 0xFFFF
This is an example XID descriptor taken from a Steel Battalion controller.
bLength 0x10 (16 bytes) bDescriptorType 0x42 bcdXid 0x0100 (USB 1.0) bType 0x80 bSubType 0x01 bMaxInputReportSize 0x1A (26 bytes) bMaxOutputReportSize 0x16 (22 bytes) wAlternateProductIds 4 x 0xFFFF
GET_CAPABILITIES
- bmRequestType: 0xC1
- bRequest: 1
- wValue:
- 0x0100 for input
- 0x0200 for output
- wIndex: Interface number
- wLength: <length of respective report>
- STALL if wValue not supported.
Actual length is truncated to size of report or wLength. Whichever is smaller.
typedef struct XIDGamepadCapabilities { uint8_t bReportId; uint8_t bLength; <Data> }
The data will be similar to the GET_REPORT, but instead of storing actual values, it will have bits set (1) where the bit is valid in the respective report. If the bit is auto-generated, it will be cleared (0).
SET_REPORT
- bmRequestType: 0x21
- bRequest: 9
- wValue: 0x0200
- wIndex: Interface number
- wLength: <length of report; typically 6>
- STALL if wValue not supported.
Typical report
typedef struct XIDGamepadReport { uint8_t bReportId; uint8_t bLength; <Data> }
GET_REPORT
- bmRequestType: 0xA1
- bRequest: 1
- wValue: 0x0100
- wIndex: Interface number
- wLength: <length of report; typically 20>
- STALL if wValue not supported or if wLength is greater than report size.
- ACK if supported.
Typical report
typedef struct XIDGamepadOutputReport { uint8_t report_id; //FIXME: is this correct? uint8_t length; <Data> }
Interrupt transfers
Alternatively interrupt-in and interrupt-out transfers can be used for GET_REPORT and SET_REPORT respectively.
In case of the interrupt-in, there is another status which can occur now:
- NAK if supported but no changes since last ACK.
Standard Gamepads
Microsoft Hardware Variants
There are a few hardware re-designs of the Microsoft Gamepad.
Controller Name | Part Number | Board Model | Notes | Datasheets |
---|---|---|---|---|
Xbox Game Controller (AKA "Duke") | X08-17160 | 23-0819B | Earliest known model[FIXME]. 3 IC's: Dedicated ST 92163/JFL Micro Controller, dedicated AT43USB401 USB Controller, 4 Channel Analog Mux LW052A. | ST 92163/JFL, AT43USB401[FIXME], LW052A |
Xbox Game Controller (AKA "Duke") | X08-17160 | K023B121 | Same as 23-0819B, but manufactured in China. Only Board Model that does not follow naming conventions. Hardware identical. Easily identified by a serial number that starts with "KD". | ST 92163/JFL, AT43USB401[FIXME], LW052A |
Xbox Game Controller (AKA "Duke") | X08-17160 | 23-0819C | Last known Duke model.[FIXME]. Identical to 23-0819B in hardware, new silkscreen markings show this model is UL-94 V-0 compliant. All boards after this are V-0 compliant. | ST 92163/JFL, AT43USB401[FIXME], LW052A |
Xbox Game Controller (Looks like an S, with green Xbox jewel) | X08-19383 | 23-0923A | Japan and Australia exclusive model[FIXME].Minification of "Duke" PCB Design. Has exact same IC's as the Duke, only in an S controller design. | ST 92163/JFL, AT43USB401[FIXME], LW052A |
Xbox Controller S | X08-69873 | 23-0923B | Minification of "Duke" PCB Design. Has exact same IC's as the Duke, only in an S controller design | ST 92163/JFL, AT43USB401[FIXME], LW052A |
Xbox Controller S | X08-69873 | 23-0923H | Entirely new PCB design. Single IC on the board, AT43USB355M-AC | AT43USB355M-AC |
Xbox Controller S | X08-69873 | 23-0923I | PCB Design almost exactly the same as H revision. Only difference is the IC is smaller: AT43USB353M-AC | AT43USB353M-AC |
There are also dedicated Part Numbers for color variants:
Controller Part Number | Controller Description | Board Model |
---|---|---|
X02332-001 | Crystal S Controller | 23-0923I |
X09-64240-01 | Transparent Green Controller | 23-0923I |
X800679-100 | Black S With Halo Jewel | 23-0923I |
USB Descriptors
See https://github.com/xboxdrv/xboxdrv/blob/stable/src/xpad_device.cpp for a list of devices.
23-0819B
Device Descriptor: bLength 18 bDescriptorType 1 bcdUSB 1.10 bDeviceClass 0 bDeviceSubClass 0 bDeviceProtocol 0 bMaxPacketSize0 64 idVendor 0x045e Microsoft Corp. idProduct 0x0202 Xbox Controller bcdDevice 1.00 iManufacturer 0 iProduct 0 iSerial 0 bNumConfigurations 1 Configuration Descriptor: bLength 9 bDescriptorType 2 wTotalLength 32 bNumInterfaces 1 bConfigurationValue 1 iConfiguration 0 bmAttributes 0x80 (Bus Powered) MaxPower 100mA Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 0 bAlternateSetting 0 bNumEndpoints 2 bInterfaceClass 88 Xbox bInterfaceSubClass 66 Controller bInterfaceProtocol 0 iInterface 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x82 EP 2 IN bmAttributes 3 Transfer Type Interrupt Synch Type None Usage Type Data wMaxPacketSize 0x0020 1x 32 bytes bInterval 4 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x02 EP 2 OUT bmAttributes 3 Transfer Type Interrupt Synch Type None Usage Type Data wMaxPacketSize 0x0020 1x 32 bytes bInterval 4
K023B121
Identical to 23-0819B [FIXME]
23-0819C
Identical to 23-0819B [FIXME]
23-0923A
Changes from 23-0819B
Device Descriptor: idProduct: 0x0285
23-0923B
[FIXME]
23-0923H
Changes from 23-0819B
Device Descriptor bMaxPacketSize0: 8 idProduct: 0x0289 bcdDevice: 1.20 Configuration Descriptor Interface Descriptor Endpoint Descriptor bEndpointAddress: 0x81
23-0923I
Changes from 23-0923H
Device Descriptor bcdDevice: 1.21
Controller to Xbox
20 bytes
Xbox to Controller
6 bytes
Field | Offset (Bytes) | Mask | Notes |
---|---|---|---|
Left actuator strength | 2 | 0xFFFF | |
Right actuator strength | 4 | 0xFFFF |
The Microsoft Controller S will not react to packets which don't have a value of 6 in the length
field of the header.
The Fanatec Speedster 3 ForceShock will still react to those. Further testing is necessary with other gamepads.
Steering wheels
MadCatz Wheel
[FIXME]
Fanatec Speedster 3 ForceShock
Pedals
The Pedals are not a USB device.
Note that the cable going to the pedals is also not a USB port despite using the Xbox controller breakaway plug. Likewise, plugging the pedals to a PC / Xbox won't provide a USB / XID (it is detected as garbage):
new full-speed USB device number 14 using xhci_hcd device descriptor read/64, error -71 device descriptor read/64, error -71 new full-speed USB device number 15 using xhci_hcd device descriptor read/64, error -71 device descriptor read/64, error -71 new full-speed USB device number 16 using xhci_hcd Device not responding to setup address. Device not responding to setup address. device not accepting address 16, error -71 new full-speed USB device number 17 using xhci_hcd Device not responding to setup address. Device not responding to setup address. device not accepting address 17, error -71 unable to enumerate USB device
Internal HUB
USB Descriptors
Power not connected, pedals not connected, not in Tuning mode:
Device Descriptor: bLength 18 bDescriptorType 1 bcdUSB 1.10 bDeviceClass 9 Hub bDeviceSubClass 0 bDeviceProtocol 0 Full speed (or root) hub bMaxPacketSize0 8 idVendor 0x3767 idProduct 0x0102 bcdDevice 0.01 iManufacturer 0 iProduct 1 End iSerial 0 bNumConfigurations 1 Configuration Descriptor: bLength 9 bDescriptorType 2 wTotalLength 25 bNumInterfaces 1 bConfigurationValue 1 iConfiguration 0 bmAttributes 0xa0 (Bus Powered) Remote Wakeup MaxPower 64mA Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 0 bAlternateSetting 0 bNumEndpoints 1 bInterfaceClass 9 Hub bInterfaceSubClass 0 bInterfaceProtocol 0 Full speed (or root) hub iInterface 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x81 EP 1 IN bmAttributes 3 Transfer Type Interrupt Synch Type None Usage Type Data wMaxPacketSize 0x0001 1x 1 bytes bInterval 255 Hub Descriptor: bLength 9 bDescriptorType 41 nNbrPorts 3 wHubCharacteristic 0x000d Per-port power switching Compound device Per-port overcurrent protection bPwrOn2PwrGood 50 * 2 milli seconds bHubContrCurrent 64 milli Ampere DeviceRemovable 0x02 PortPwrCtrlMask 0xff Hub Port Status: Port 1: 0000.0103 power enable connect Port 2: 0000.0100 power Port 3: 0000.0100 power can't get debug descriptor: Resource temporarily unavailable Device Status: 0x0003 Self Powered Remote Wakeup Enabled
Steering wheel (and Pedals)
Always connected to port 1 of the internal HUB
USB Descriptors
Device Descriptor: bLength 18 bDescriptorType 1 bcdUSB 1.10 bDeviceClass 0 bDeviceSubClass 0 bDeviceProtocol 0 bMaxPacketSize0 8 idVendor 0x3767 idProduct 0x0101 bcdDevice 2.80 iManufacturer 0 iProduct 0 iSerial 0 bNumConfigurations 1 Configuration Descriptor: bLength 9 bDescriptorType 2 wTotalLength 32 bNumInterfaces 1 bConfigurationValue 1 iConfiguration 0 bmAttributes 0x80 (Bus Powered) MaxPower 100mA Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 0 bAlternateSetting 0 bNumEndpoints 2 bInterfaceClass 88 Xbox bInterfaceSubClass 66 Controller bInterfaceProtocol 0 iInterface 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x82 EP 2 IN bmAttributes 3 Transfer Type Interrupt Synch Type None Usage Type Data wMaxPacketSize 0x0020 1x 32 bytes bInterval 4 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x02 EP 2 OUT bmAttributes 3 Transfer Type Interrupt Synch Type None Usage Type Data wMaxPacketSize 0x0020 1x 32 bytes bInterval 4 can't get debug descriptor: Resource temporarily unavailable Device Status: 0x0000 (Bus Powered)
Light guns
EMS TopGun II
This is an unlicensed / unofficial Xbox accessory.
The website for this product can be found at http://www.hkems.com/product/xbox/EMSTopGun2.htm
The gun presents itself as a standard Xbox gamepad. It uses a different USB descriptor for Xbox (X) and the other mode (P). There is no internal hub in this device.
EMS TopGun II | Xbox Gamepad | Notes |
---|---|---|
Stick | ||
Trigger | Digital only, either 0 or 255 | |
Grip | ||
A | ||
B | ||
START | ||
SE/BA | ||
Aim Left / Right | -Horizontal | Absolute position using the full stick range |
Aim Up / Down | -Vertical |
There is no right thumbstick, thumbstick presses, black/white button or trigger buttons (All of those read constant zeros).
Turbo Mode
- Turbo mode 0 keeps pressed while trigger is held
- Turbo mode 1 toggles rapidly while trigger is held
- Turbo mode 2 toggles rapidly and once in a while while trigger is held
Force Feedback
The upper part of the gun is moveable and should push back to simulate recoil (possibly hurting your thumb while you are using the stick). I could not get the force feedback working, but I'm sure I've had it working in the past on PC.[citation needed]
USB Descriptors
This is the descriptor in the Xbox mode (X).
Bus 003 Device 016: ID 0b9a:016b Device Descriptor: bLength 18 bDescriptorType 1 bcdUSB 1.10 bDeviceClass 0 bDeviceSubClass 0 bDeviceProtocol 0 bMaxPacketSize0 64 idVendor 0x0b9a idProduct 0x016b bcdDevice 4.57 iManufacturer 1 EMS̖E iProduct 2 EMS TopGun iSerial 0 bNumConfigurations 1 Configuration Descriptor: bLength 9 bDescriptorType 2 wTotalLength 32 bNumInterfaces 1 bConfigurationValue 1 iConfiguration 0 bmAttributes 0x80 (Bus Powered) MaxPower 100mA Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 0 bAlternateSetting 0 bNumEndpoints 2 bInterfaceClass 88 Xbox bInterfaceSubClass 66 Controller bInterfaceProtocol 0 iInterface 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x81 EP 1 IN bmAttributes 3 Transfer Type Interrupt Synch Type None Usage Type Data wMaxPacketSize 0x0040 1x 64 bytes bInterval 4 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x02 EP 2 OUT bmAttributes 3 Transfer Type Interrupt Synch Type None Usage Type Data wMaxPacketSize 0x0040 1x 64 bytes bInterval 8 can't get debug descriptor: Resource temporarily unavailable Device Status: 0x0000 (Bus Powered)
Joytech Sharp Shooter
This is an unlicensed / unofficial Xbox accessory.
The third party light gun from Joytech reports itself as 2 devices and mentions pattent US6287198 it came with a detachable viewfinder scope without any magnification. a red dot apears in the viewfinder, its a reflection of a red led, powered by the gun over usb.
model numer: JS-901D
Joytech Sharp Shooter | Xbox Gamepad | Notes |
---|---|---|
Stick | ||
Trigger | Digital only, either 0 or 255 [citation needed] | |
B (Left side) | ||
B (Right side) | ||
B (Magazine button) | ||
x | ||
y | ||
START | ||
BACK | ||
Aim Left / Right | -Horizontal | [citation needed] |
Aim Up / Down | -Vertical | [citation needed] |
There is no right thumbstick, thumbstick presses, black/white button or trigger buttons [citation needed]
Fire/Reload Mode
- Normal mode does nothing, normal operation
- Auto reload mode toggles rapidly to rappidly reload [citation needed]
- Auto fire+reload mode toggles + rapidly [citation needed]
USB Descriptors
Bus 003 Device 025: ID 1292:3006 Innomedia Device Descriptor: bLength 18 bDescriptorType 1 bcdUSB 1.10 bDeviceClass 0 bDeviceSubClass 0 bDeviceProtocol 0 bMaxPacketSize0 8 idVendor 0x1292 Innomedia idProduct 0x3006 bcdDevice 1.50 iManufacturer 0 iProduct 0 iSerial 0 bNumConfigurations 1 Configuration Descriptor: bLength 9 bDescriptorType 2 wTotalLength 32 bNumInterfaces 1 bConfigurationValue 1 iConfiguration 1 (error) bmAttributes 0x80 (Bus Powered) MaxPower 100mA Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 0 bAlternateSetting 0 bNumEndpoints 2 bInterfaceClass 88 Xbox bInterfaceSubClass 66 Controller bInterfaceProtocol 0 iInterface 2 (error) Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x81 EP 1 IN bmAttributes 3 Transfer Type Interrupt Synch Type None Usage Type Data wMaxPacketSize 0x0020 1x 32 bytes bInterval 4 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x02 EP 2 OUT bmAttributes 3 Transfer Type Interrupt Synch Type None Usage Type Data wMaxPacketSize 0x0020 1x 32 bytes bInterval 4 Bus 003 Device 024: ID 1292:3006 Innomedia Device Descriptor: bLength 18 bDescriptorType 1 bcdUSB 1.10 bDeviceClass 9 Hub bDeviceSubClass 0 bDeviceProtocol 0 Full speed (or root) hub bMaxPacketSize0 8 idVendor 0x1292 Innomedia idProduct 0x3006 bcdDevice 1.50 iManufacturer 1 (c) 2004 R0R3 Inc. iProduct 2 US Patent 6,287,198 iSerial 0 bNumConfigurations 1 Configuration Descriptor: bLength 9 bDescriptorType 2 wTotalLength 25 bNumInterfaces 1 bConfigurationValue 1 iConfiguration 4 (c) R0R3 Devices Inc. US Patent 6,287,19Ē bmAttributes 0xa0 (Bus Powered) Remote Wakeup MaxPower 64mA Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 0 bAlternateSetting 0 bNumEndpoints 1 bInterfaceClass 9 Hub bInterfaceSubClass 0 bInterfaceProtocol 0 Full speed (or root) hub iInterface 5 (error) Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x81 EP 1 IN bmAttributes 3 Transfer Type Interrupt Synch Type None Usage Type Data wMaxPacketSize 0x0001 1x 1 bytes bInterval 255 Hub Descriptor: bLength 9 bDescriptorType 41 nNbrPorts 3 wHubCharacteristic 0x000d Per-port power switching Compound device Per-port overcurrent protection bPwrOn2PwrGood 32 * 2 milli seconds bHubContrCurrent 64 milli Ampere DeviceRemovable 0x02 PortPwrCtrlMask 0x0e Hub Port Status: Port 1: 0000.0103 power enable connect Port 2: 0000.0100 power Port 3: 0100.0100 power Device Status: 0x0000 (Bus Powered)
Steel Battalion Controller
USB Descriptors
Device Descriptor: bLength 18 bDescriptorType 1 bcdUSB 1.10 bDeviceClass 0 (Defined at Interface level) bDeviceSubClass 0 bDeviceProtocol 0 bMaxPacketSize0 8 idVendor 0x0a7b idProduct 0xd000 bcdDevice 1.00 iManufacturer 0 iProduct 0 iSerial 0 bNumConfigurations 1 Configuration Descriptor: bLength 9 bDescriptorType 2 wTotalLength 32 bNumInterfaces 1 bConfigurationValue 1 iConfiguration 0 bmAttributes 0x80 (Bus Powered) MaxPower 500mA Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 0 bAlternateSetting 0 bNumEndpoints 2 bInterfaceClass 88 Xbox bInterfaceSubClass 66 Controller bInterfaceProtocol 0 iInterface 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x82 EP 2 IN bmAttributes 3 Transfer Type Interrupt Synch Type None Usage Type Data wMaxPacketSize 0x0020 1x 32 bytes bInterval 4 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x01 EP 1 OUT bmAttributes 3 Transfer Type Interrupt Synch Type None Usage Type Data wMaxPacketSize 0x0020 1x 32 bytes bInterval 4
Controller to Xbox
From http://steelbattalionnet.codeplex.com/SourceControl/latest#SBC/SteelBattalionController.cs
26 bytes
Field | Offset (Bytes) | Mask | Notes |
---|---|---|---|
RightJoyMainWeapon | 2 | 0x01 | |
RightJoyFire | 2 | 0x02 | |
RightJoyLockOn | 2 | 0x04 | |
Eject | 2 | 0x08 | |
CockpitHatch | 2 | 0x10 | |
Ignition | 2 | 0x20 | |
Start | 2 | 0x40 | |
MultiMonOpenClose | 2 | 0x80 | |
MultiMonMapZoomInOut | 3 | 0x01 | |
MultiMonModeSelect | 3 | 0x02 | |
MultiMonSubMonitor | 3 | 0x04 | |
MainMonZoomIn | 3 | 0x08 | |
MainMonZoomOut | 3 | 0x10 | |
FunctionFSS | 3 | 0x20 | |
FunctionManipulator | 3 | 0x40 | |
FunctionLineColorChange | 3 | 0x80 | |
Washing | 4 | 0x01 | |
Extinguisher | 4 | 0x02 | |
Chaff | 4 | 0x04 | |
FunctionTankDetach | 4 | 0x08 | |
FunctionOverride | 4 | 0x10 | |
FunctionNightScope | 4 | 0x20 | |
FunctionF1 | 4 | 0x40 | |
FunctionF2 | 4 | 0x80 | |
FunctionF3 | 5 | 0x01 | |
WeaponConMain | 5 | 0x02 | |
WeaponConSub | 5 | 0x04 | |
WeaponConMagazine | 5 | 0x08 | |
Comm1 | 5 | 0x10 | |
Comm2 | 5 | 0x20 | |
Comm3 | 5 | 0x40 | |
Comm4 | 5 | 0x80 | |
Comm5 | 6 | 0x01 | |
LeftJoySightChange | 6 | 0x02 | |
ToggleFilterControl | 6 | 0x04 | |
ToggleOxygenSupply | 6 | 0x08 | |
ToggleFuelFlowRate | 6 | 0x10 | |
ToggleBuffreMaterial | 6 | 0x20 | |
ToggleVTLocation | 6 | 0x40 | |
6 | 0x80 | ||
7 | 0xFF | ||
8 | 0xFF | ||
AimingX | 9 | 0xFF, maybe 0xFFFF at offset 8? | "Aiming Lever" joystick on the right. X Axis value. |
AimingY | 11 | 0xFF, maybe 0xFFFF at offset 10? | "Aiming Lever" joystick on the right. Y Axis value. |
RotationLever | 13 | 0xFF, maybe 0xFFFF at offset 12? | "Rotation Lever" joystick on the left. |
SightChangeX | 15 | 0xFF, maybe 0xFFFF at offset 14? | "Sight Change" analog stick on the "Rotation Lever" joystick. X Axis value. |
SightChangeY | 17 | 0xFF, maybe 0xFFFF at offset 16? | "Sight Change" analog stick on the "Rotation Lever" joystick. Y Axis value. |
LeftPedal | 19 | 0xFF, maybe 0xFFFF at offset 18? | |
MiddlePedal | 21 | 0xFF, maybe 0xFFFF at offset 20? | |
RightPedal | 23 | 0xFF, maybe 0xFFFF at offset 22? | |
TunerDial | 24 | 0x0F | The 9 o'clock postion is 0, and the 6 o'clock position is 12. The blank area between the 6 and 9 o'clock positions is 13, 14, and 15 clockwise. |
24 | 0xF0 | ||
GearLever | 25 | 0xFF | The gear lever on the left block. |
Xbox to Controller
From http://steelbattalionnet.codeplex.com/SourceControl/latest#SBC/SteelBattalionController.cs
22 bytes
Field | Offset (Bytes) | Mask | Notes |
---|---|---|---|
Start | 0 | 0x00 | |
bLen (22 bytes) | 1 | 0x16 | |
EmergencyEject | 2 | 0x0F | |
CockpitHatch | 2 | 0xF0 | |
Ignition | 3 | 0x0F | |
Start | 3 | 0xF0 | |
OpenClose | 4 | 0x0F | |
MapZoomInOut | 4 | 0xF0 | |
ModeSelect | 5 | 0x0F | |
SubMonitorModeSelect | 5 | 0xF0 | |
MainMonitorZoomIn | 6 | 0x0F | |
MainMonitorZoomOut | 6 | 0xF0 | |
ForecastShootingSystem | 7 | 0x0F | |
Manipulator | 7 | 0xF0 | |
LineColorChange | 8 | 0x0F | |
Washing | 8 | 0xF0 | |
Extinguisher | 9 | 0x0F | |
Chaff | 9 | 0xF0 | |
TankDetach | 10 | 0x0F | |
Override | 10 | 0xF0 | |
NightScope | 11 | 0x0F | |
F1 | 11 | 0xF0 | |
F2 | 12 | 0x0F | |
F3 | 12 | 0xF0 | |
MainWeaponControl | 13 | 0x0F | |
SubWeaponControl | 13 | 0xF0 | |
MagazineChange | 14 | 0x0F | |
Comm1 | 14 | 0xF0 | |
Comm2 | 15 | 0x0F | |
Comm3 | 15 | 0xF0 | |
Comm4 | 16 | 0x0F | |
Comm5 | 16 | 0xF0 | |
17 | 0x0F | ||
GearR | 17 | 0xF0 | |
GearN | 18 | 0x0F | |
Gear1 | 18 | 0xF0 | |
Gear2 | 19 | 0x0F | |
Gear3 | 19 | 0xF0 | |
Gear4 | 20 | 0x0F | |
Gear5 | 20 | 0xF0 | |
Unused? | 21 |