mirror of https://github.com/nirenjan/libx52.git
111 lines
3.4 KiB
Markdown
111 lines
3.4 KiB
Markdown
Saitek X52 Controller Map
|
|
=========================
|
|
|
|
This page documents the HID Report format and how to decode the report to map
|
|
to axis/buttons for the Saitek X52.
|
|
|
|
> **Note:** I am not sure that the button indices match with real hardware. The
|
|
> indices are guessed by comparing the Test screen printed in the manuals for
|
|
> both the X52 and X52 Pro, and my own
|
|
> [documentation](x52pro_controller_map.md). I also looked at the [source code
|
|
> of this project](https://github.com/xythobuz/Saitek-X52-PPM) to figure out
|
|
> possible mappings. Given that the above project only uses PID 0x0255, it is
|
|
> entirely possible that the report format for the X52 with PID 0x075c is
|
|
> different.
|
|
|
|
Axis
|
|
====
|
|
* 0 - X axis
|
|
* 1 - Y axis
|
|
* 2 - Twist axis
|
|
* 3 - Throttle axis
|
|
* 4 - Clutch button rotary (rotary X)
|
|
* 5 - E button rotary (rotary Y)
|
|
* 6 - Slider
|
|
|
|
Buttons
|
|
=======
|
|
* 0 - Trigger primary
|
|
* 1 - FIRE/LAUNCH
|
|
* 2 - A
|
|
* 3 - B
|
|
* 4 - C
|
|
* 5 - SHIFT
|
|
* 6 - D
|
|
* 7 - E
|
|
* 8 - T1 Up
|
|
* 9 - T1 Down
|
|
* 10 - T2 Up
|
|
* 11 - T2 Down
|
|
* 12 - T3 Up
|
|
* 13 - T3 Down
|
|
* 14 - Trigger secondary
|
|
* 15 - Stick 4-way N
|
|
* 16 - Stick 4-way E
|
|
* 17 - Stick 4-way S
|
|
* 18 - Stick 4-way W
|
|
* 19 - Throttle 4-way N (pull up)
|
|
* 20 - Throttle 4-way E
|
|
* 21 - Throttle 4-way S (push down)
|
|
* 22 - Throttle 4-way W
|
|
* 23 - MODE 1
|
|
* 24 - MODE 2
|
|
* 25 - MODE 3
|
|
* 26 - FUNCTION
|
|
* 27 - START/STOP/Down
|
|
* 28 - RESET/Up
|
|
* 29 - CLUTCH (i)
|
|
* 30 - Mouse button - primary
|
|
* 31 - Mouse button - secondary
|
|
* 32 - Mouse wheel down
|
|
* 33 - Mouse wheel up
|
|
|
|
The function button toggles between the clock and stopwatch on
|
|
the MFD. If in stopwatch mode, the start/stop button starts or
|
|
stops the stopwatch. If already stopped, the start/stop button
|
|
will restart the stopwatch. The reset button will stop the
|
|
stopwatch, if running, and also reset the display to 00:00.
|
|
|
|
If the MFD is in clock mode, then the start/stop button cycles
|
|
backwards through the three on-board clock displays, while the
|
|
reset button cycles forward through the displays.
|
|
|
|
If the primary clock has not been set using the vendor API,
|
|
then the MFD will not display anything in clock mode. The
|
|
start/stop and reset buttons will also not change anything
|
|
on the display. Stopwatch mode is not affected by this.
|
|
|
|
Refer to the vendor API documentation for details on how to
|
|
configure the MFD display.
|
|
|
|
USB Report Format
|
|
=================
|
|
The X52 reports 14 bytes of data everytime a joystick event occurs.
|
|
|
|
The 15 bytes are laid out in little endian format as shown below:
|
|
|
|
* 11-bits of X axis position
|
|
* 11-bits of Y axis position
|
|
* 10-bits of twist axis position
|
|
* 8 bits of throttle position
|
|
* 8 bits of rotary X position
|
|
* 8 bits of rotary Y position
|
|
* 8 bits of slider position
|
|
* 34 bits of button information
|
|
* 1 bits of padding
|
|
* 4 bits of hat position
|
|
* 4 bits of thumbstick X position
|
|
* 4 bits of thumbstick Y position
|
|
|
|
A report would look like the following:
|
|
|
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
|
| X axis data | Y axis data | Rz axis data |
|
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
|
| Throttle | Rx axis data | Ry axis data | Slider data |
|
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
|
| Buttons 7-0 | Buttons 15-8 | Buttons 23-16 | Buttons 31-24 |
|
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
|
| Hat |///|Btn| MouseY| MouseX|
|
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|