### X-keys Joystick Pro Data Report | Main Page

General Information

VID | 05f3h
PID | 0251h or 593
Consumer Usage Page | 1
Usage Page | 000Ch or 12

X-keys Joystick Pro Input Report

Figure 1: X-keys Joystick Pro key reference

Endpoint: 1, consumer usage page

Report Length: 15 bytes

Byte 1 | Byte 2 | Byte 3 | Byte 4 | Byte 5 | Byte 6 | Byte 7 | Byte 8 | Byte 9 | Byte 10 | Byte 11 | Byte 12 | Byte 13 | Byte 14 | Byte 15
Constant | Joystick X | Joystick Y | Joystick Z | Keys 0-6 | Keys 16-22 | Keys 32-38 | Keys 48-54 | Keys 64-70 | Keys 80-86 | Keys 96-102 | Keys 112-118 | Keys 128-129 | Unit ID (0-255) | Program Switch Position
0 | Xdata | Ydata | Zdata | D1 | D2 | D3 | D4 | D5 | D6 | D7 | D8 | D9 | <data> | Swpos

Xdata: A value 0 to 255 of the joystick X axis where 128 is center, 0 is full left and 255 is full right.
Ydata: A value 0 to 255 of the joystick Y axis where 128 is center, 0 is full left and 255 is full right.
Zdata: A value of the joystick Z rotation, absolute angle 0 to 255 with rollover.

D1: For all bits 0 if key is up, 1 if key is down. Bits 1 to 7 correspond to Keys 0 to 6, respectively. Bit 8=0 always. For example Byte 5 gives the state of Keys 0, 1, 2, 3, 4, 5 and 6. A value of 67 in this byte would indicate that Keys 0, 1 and 6 are pressed.
D2: For all bits 0 if key is up, 1 if key is down. Bits 1 to 7 correspond to Keys 16 to 22, respectively. Bit 8=0 always.
D3: For all bits 0 if key is up, 1 if key is down. Bits 1 and 2 correspond to Keys 32 and 33, respectively. Bits 6 and 7 correspond to Keys 37 and 38, respectively. Bits 3, 4, 5, 8=0 always.
D4: For all bits 0 if key is up, 1 if key is down. Bits 1 and 2 correspond to Keys 48 and 49, respectively. Bits 6 and 7 correspond to Keys 53 and 54, respectively. Bits 3, 4, 5, 8=0 always.
D5: For all bits 0 if key is up, 1 if key is down. Bits 1 and 2 correspond to Keys 64 and 65, respectively. Bits 6 and 7 correspond to Keys 69 and 70, respectively. Bits 3, 4, 5, 8=0 always.
D6: For all bits 0 if key is up, 1 if key is down. Bits 1 and 2 correspond to Keys 80 and 81, respectively. Bits 6 and 7 correspond to Keys 85 and 86, respectively. Bits 3, 4, 5, 8=0 always.
D7: For all bits 0 if key is up, 1 if key is down. Bits 1 to 7 correspond to Keys 96 to 102, respectively. Bit 8=0 always.
D8: For all bits 0 if key is up, 1 if key is down. Bits 1 to 7 correspond to Keys 112 to 118, respectively. Bit 8=0 always.
D9: For all bits 0 if key is up, 1 if key is down. Bits 1 and 2 correspond to Keys 128 and 129, respectively. Bits 3 to 8=0 always.
Swpos: bits 1-3=0, bit 4=0 if program switch is down or 1 if program switch is up, bit 5=1, bits 6-8=0.

X-keys Joystick Pro Output Report

The following types of output reports are available; Set LEDs and Set Unit ID. The Unit ID is a value between 0 and 255 which can be set and read. This number stays permanently in the device independent of computer. It is useful if more than one device of the same PID will be connected to the same computer in order to distinguish the devices uniquely.

Endpoint: 2, vendor defined usage page

Report Length: 9 bytes.

1. Set LEDs

Byte 1 | Byte 2 | Byte 3 | Byte 4 | Byte 5 | Byte 6 | Byte 7 | Byte 8 | Byte 9
Constant | Constant | Constant | Constant | Constant | Constant | Constant | Constant | LED Control
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | LED

LED: Bits 1-6=0, Bit 7=1 to turn on Green LED or 0 to turn off Green LED, Bit 8=1 to turn on Red LED or 0 to turn off Red LED.

2. Set Unit ID

Byte 1 | Byte 2 | Byte 3 | Byte 4 | Byte 5 | Byte 6 | Byte 7 | Byte 8 | Byte 9
Constant | Unit ID Command | Unit ID Command | Constant | Constant | Constant | Constant | Unit ID (0-255) | Unit ID Command
0 | 137 | 137 | 0 | 0 | 0 | 0 | value | 16