ShipDriver Data Report
General Information
VID
|
05f3h
|
---|---|
PID Reflector
|
041fh or 1055
|
Consumer Usage Page
|
1
|
Usage Page
|
000Ch or 12
|
ShipDriver Input Report

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.
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