ShipDriver Data Report

General Information

VID
05f3h
PID Reflector
041fh or 1055
Consumer Usage Page
1
Usage Page
000Ch or 12

ShipDriver Input Report

X-keys XK24

Figure 1: ShipDriver key reference.

Endpoint: 3, consumer usage page. There are two additional endpoints; 1 is keyboard and 2 is joystick.

Report Length: 32 bytes.

1. General Incoming Data

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
Byte 16
Byte 17
Byte 18
Byte 19
Byte 20
Byte 21
Byte 22
Bytes 23-32
Constant Unit ID Data Type Keys 0-5 Keys 6-11 Keys 12-17 Keys 18-23 Keys 24-29 Keys 30-33 Keys 34-38 Keys 39-43 Wheel MSB Wheel LSB Lever 1 Lever 2 Switch 2 Switch 1 Ship Mode Lever 1 cal'ed Lever 2 cal'ed Switch 2 cal'ed Switch 1 cal'ed Reserved
0
<data>
0
D1
D2
D3
D4
D5
D6
D7
D8
A1
A2
A3
A4
A5
A6
Ship Mode
A7
A8
A9
A10
value

D1: for all bits 0 for key up, 1 for key down.  Bit 1=Key 0, bit 2=Key 1, bit 3=Key 2, bit 4=Key 3, bit 5=Key 4, bit 6=Key 5, bits 7-8=0 always.
D2: for all bits 0 for key up, 1 for key down.  Bit 1=Key 6, bit 2=Key 7, bit 3=Key 8, bit 4=Key 9, bit 5=Key 10, bit 6=Key 11, bits 7-8=0 always.
D3: for all bits 0 for key up, 1 for key down.  Bit 1=Key 12, Bit 2=Key 13, bit 3=Key 14, bit 4=Key 15, bit 5=Key 16, bit 6=Key 17, bits 7-8=0 always.
D4: for all bits 0 for key up, 1 for key down.  Bit 1=Key 18, Bit 2=Key 19, bit 3=Key 20, bit 4=Key 21, bit 5=Key 22, bit 6=Key 23, bits 7-8=0 always.
D5: for all bits 0 for key up, 1 for key down.  Bit 1=Key 24, Bit 2=Key 25, bit 3=Key 26, bit 4=Key 27, bit 5=Key 28, bit 6=Key 29, bits 7-8=0 always.
D6: for all bits 0 for key up, 1 for key down.  Bit 1=Key 30, Bit 2=Key 31, bit 3=Key 32, bit 4=Key 33, bits 5-8=0 always.
D7: for all bits 0 for key up, 1 for key down.  Bit 1=Key 34, Bit 2=Key 35, bit 3=Key 36, bit 4=Key 37, bit 5=Key 38, bits 6-8=0 always.
D8: for all bits 0 for key up, 1 for key down.  Bit 1=Key 39, Bit 2=Key 40, bit 3=Key 41, bit 4=Key 42, bit 5=Key 43, bits 6-8=0 always.
A1: Wheel MSB, after calibration reports calibrated values.
A2: Wheel LSB, after calibration reports calibrated values.
A3: Lever 1 uncalibrated
A4: Lever 2 uncalibrated
A5: Switch 2 uncalibrated
A6: Switch 1 uncalibrated
Ship Mode: Ship Mode, 1= Analogs as Joystick (Tiller), 129= Analogs as Joystick (Wheel), 0=Data Only. See output report 9 for more details.
A7: Lever 1 calibrated, 0 is 0%, 128 is 50% and 255 is 100%.
A8: Lever 2 calibrated, 0 is 0%, 128 is 50% and 255 is 100%.
A9: Switch 2 calibrated, 0 is 0%, 128 is 50% and 255 is 100%.
A10: Switch 1 calibrated, 0 is 0%, 128 is 50% and 255 is 100%.

2. Descriptor Data

This data is returned after a Request for Descriptor output report is sent.

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
Bytes 15-33
Constant Unit ID Data Type Mode Key mapstart Layer2 Offset Out size Report size Max Columns Max Rows LED State Version PID Low PID Hi Reserved
0
<data>
214
0
32
128
35
31
8
8
NA
<data>
31
4
value

 

ShipDriver Output Report

The following types of output reports are shown in the summary below.

Report
Format
Description
1
0, 189, UnitID, 0... Set Unit ID
2
0, 214, 0... Request Descriptor
3
0, 215, OnOff, 0... Speaker Control
4
0, 195, 7, 0... Start Calibration
5
0, 195, 9, 0... Save Calibration
6
0, 195, 0, 0... Disable Auto-Writing to LED Display
7
0, 195, Control, 0... Auto-Write Calibrated Values to LED Display
8
0, 187, LED3, LED2, LED1, 0... Write to LED Display*
9
0, 216, Ship Mode, 0... Set Ship Mode
10
0, 218, Sensitivity, 0... Wheel Sensitivity+
11
0, 219, Sensitivity, 0... Tiller Sensitivity++
12
0, 190, S2 LSB, S2 MSB, S1 LSB, S1 MSB, 0... Deadzone for Switches
13
0, 217, 0... Zero Wheel+
14
0, 201, Modifier, 0, HC1, HC2, HC3, HC4, HC5, HC6, 0... Keyboard Reflector
15
0, 202, Joystick X, Joystick Y, Z rot., Joystick Z, Slider, Buttons, Buttons, Buttons, Buttons, 0, Point of View Hat, 0... Joystick Reflector

*Must first send output report 6: Disable Auto-Writing to LED Display.
+Applicable only if ShipMode=129
++Applicable only if ShipMode=1

Endpoint: 4, vendor defined usage page

Report Length: 36 bytes.

1. Set Unit ID

Byte 1*
Byte 2
Byte 3
Bytes 4-36
Constant Unit ID Command Unit ID (0-255) Constant
0
189
value
0

2. Request Descriptor

Byte 1*
Byte 2
Bytes 3-36
Constant Descriptor Command Constant
0
214
0

3. Speaker Control

Byte 1*
Byte 2
Byte 3
Bytes 4-36
Constant Speaker Command OnOff Constant
0
215
0=off, 1=on
0

4. Start Calibration

Byte 1*
Byte 2
Byte 3
Bytes 4-36
Constant Command Constant Constant
0
195
7
0

5. Save Calibration

Byte 1*
Byte 2
Byte 3
Bytes 4-36
Constant Command Constant Constant
0
195
9
0

6. Disable Auto-Writing to LED Display

Byte 1*
Byte 2
Byte 3
Bytes 4-36
Constant Command Constant Constant
0
195
0
0

7. Auto-Write Calibrated Values to LED Display

Byte 1*
Byte 2
Byte 3
Bytes 4-36
Constant Command Control Constant
0
195
Control
0

Control: 1:Wheel, 2: Lever 1, 3: Lever 2, 4: Switch 2, 5: Switch 1. For wheel 0-360 degrees, all others 0-100%.

8. Write to LED Display*

Byte 1*
Byte 2
Byte 3
Byte 4
Byte 5
Bytes 6-36
Constant LED Command Right Digit Middle Digit Left Digit Constant
0
187
LED3
LED2
LED1
0

LED1: For all bits, 0 to turn off segment, 1 to turn on segment.  Each bit corresponds to a segment as shown in figure for the right digit.
LED2: For all bits, 0 to turn off segment, 1 to turn on segment.  Each bit corresponds to a segment as shown in figure for the middle digit.
LED3: For all bits, 0 to turn off segment, 1 to turn on segment.  Each bit corresponds to a segment as shown in figure for the left digit.
* Make sure to send an output report 6: Disable Auto-Writing to LED Display first.

digit

9. Set Ship Mode

Byte 1*
Byte 2
Byte 3
Bytes 4-36
Constant Command Mode Constant
0
216
Ship Mode
0

Ship Mode: Set Ship Mode=1, Analogs as Joystick (Tiller) to enable analogs to send joystick messages. Wheel sends Slider, Lever 1 sends Joystick X, Lever 2 sends Joystick Y, Switch 1 sends Z axis, Switch 2 sends Z rot. Use this mode if you are using the tiller lever on the wheel so as to maximize the available range. Set Ship Mode=129, Analogs as Joystick (Wheel) to enable analogs to send joystick messages. Wheel sends Slider without wrapping, Lever 1 sends Joystick X, Lever 2 sends Joystick Y, Switch 1 sends Z axis, Switch 2 sends Z rot. Use this mode if you are using a wheel attachment on the wheel. The number of turns required to span the range depends on the Sensitivity chosen in output report 10, Wheel Sensitivity or output report 11, Tiller Sensitivity. The center of the range can be set by sending an output report 12, Zero Wheel. Set Ship Mode=0 (Data Only) to disable joystick messages being sent from the analog controls. Regardless of the Ship Mode all data appears in input report.

10. Wheel Sensitivity
Applicable only if Ship Mode=129, Joystick as Analogs (Wheel)

Byte 1*
Byte 2
Byte 3
Bytes 4-36
Constant Command Sensitivity Constant
0
218
Sensitivity
0

Sensitivity: 0-255, where the bigger the number the more turns of the wheel required to span range. Default 13.

11. Tiller Sensitivity
Applicable only if Ship Mode=1, Joystick as Analogs (Tiller)

Byte 1*
Byte 2
Byte 3
Bytes 4-36
Constant Command Sensitivity Constant
0
219
Sensitivity
0

Sensitivity: 0-255, where the bigger the number the less turning to fill the range. Default 50.

12. Deadzone for Switches
Sets a "dead" or silent zone for the two analog switches in the center so that motion of the switch within the zero detent does not cause change in data. Affects only the calibrated data in Bytes 21 and 22. The raw data in Bytes 16 and 17 will still show the changing data when switch is moved about the zero detent. Default for each is 5000 or 136 for the LSB and 19 for the MSB.

Byte 1*
Byte 2
Byte 3
Byte 4
Byte 5
Byte 6
Bytes 7-36
Constant Command S2 LSB S2 MSB S1 LSB S1 MSB Constant
0
190
S2L
S2H
S1L
S1H
0

S2L: The LSB of deadzone setting for switch 2 (bottom switch).
S2H: The MSB of deadzone setting for switch 2 (bottom switch).
S1L: The LSB of deadzone setting for switch 1(top switch).
S1H: The MSB of deadzone setting for switch 1(top switch).

13. Zero Wheel
Applicable only if Ship Mode=129, Joystick as Analogs (Wheel). Send this command to center the wheel in the range.

Byte 1*
Byte 2
Bytes 3-36
Constant Command Constant
0
217
0

14. Keyboard Reflector
Sends native keyboard messages.

Byte 1*
Byte 2
Byte 3
Byte 4
Byte 5
Byte 6
Byte 7
Byte 8
Byte 9
Byte 10
Bytes 11-36
Constant Keyboard Reflector Command Modifier Constant Hid Code 1 Hid Code 2 Hid Code 3 Hid Code 4 Hid Code 5 Hid Code 6 Constant
0
201
Modifier
0
HC1
HC2
HC3
HC4
HC5
HC6
0

Modifier: Bit 1=Left Ctrl, bit 2=Left Shift, bit 3=Left Alt, bit 4=Left Gui, bit 5=Right Ctrl, bit 6=Right Shift, bit 7=Right Alt, bit 8=Right Gui.
HC1=Hid Code for 1st key down, or 0 to release previous key press in this byte position.
HC2=Hid Code for 2nd key down, or 0 to release previous key press in this byte position.
HC3=Hid Code for 3rd key down, or 0 to release previous key press in this byte position.
HC4=Hid Code for 4th key down, or 0 to release previous key press in this byte position.
HC5=Hid Code for 5th key down, or 0 to release previous key press in this byte position.
HC6=Hid Code for 6th key down, or 0 to release previous key press in this byte position.

15. Joystick Reflector
Sends native joystick messages.

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
Bytes 14-36
Constant Joystick Reflector Command Joystick X Joystick Y Z rot. Joystick Z Slider Game Buttons Game Buttons Game Buttons Game Buttons Constant Point of View Hat Constant
0
202
X
Y
Z rot.
Z
Slider
GB1
GB2
GB3
GB4
0
Hat
0

X: Joystick X, 0-127 is from center to full right, 255-128 is from center to full left.
Y: Joystick Y, 0-127 is from center to bottom, 255-128 is from center to top.
Z rot: Joystick Z, 0-127 is from center to bottom, 255-128 is from center to top.
Z: Joystick Z, 0-127 is from center to bottom, 255-128 is from center to top.
GB1: Game buttons 1-8, bit 1= game button 1, bit 2=game button 2, etc.
GB2: Game buttons 9-16, bit 1= game button 9, bit 2=game button 10, etc.
GB3: Game buttons 17-24, bit 1= game button 17, bit 2=game button 18, etc.
GB4: Game buttons 25-32, bit 1= game button 25, bit 2=game button 26, etc.
Hat: 0 to 7 clockwise, 8 is no hat.

*This first byte may be omitted on some non-PC operating systems. On these systems the read and write lengths will be 1 byte smaller.
Back to top