X-keys XKE-64 Jog T-bar Data Report | Main Page

General Information

VID
05f3h or 1523
XKE-64 Jog T-bar PID #1 (Factory Default)
052Dh or 1325
XKE-64 Jog T-bar PID #2
052Eh or 1326
XKE-64 Jog T-bar PID #3
052Fh or 1327
XKE-64 Jog T-bar PID #4
0530h or 1328
XKE-64 Jog T-bar PID #5
0531h or 1329
XKE-64 Jog T-bar PID #6
0532h or 1330
XKE-64 Jog T-bar PID #7
0533h or 1331
XKE-64 Jog T-bar PID #8 (KVM)
0534h or 1332
Consumer Usage Page
1
Usage Page
000Ch or 12

PID #1 Endpoints: Consumer Usage Page Input and Output (Hid Usage Page 12, Hid Usage 1), Keyboard (Hid Usage Page 1, Hid Usage 6), Multimedia (Hid Usage Page 12, Hid Usage 1 and Hid Usage Page 1, Hid Usage 128).
PID #2 Endpoints: Consumer Usage Page Input and Output (Hid Usage Page 12, Hid Usage 1), Keyboard boot (Hid Usage Page 1, Hid Usage 6), Multimedia (Hid Usage Page 12 and 1, Hid Usage 1 and 128).
PID #3 Endpoints: Consumer Usage Page Input and Output (Hid Usage Page 12, Hid Usage 1), Keyboard (Hid Usage Page 1, Hid Usage 6), Joystick (Hid Usage Page 1, Hid Usage 4).
PID #4 Endpoints: Consumer Usage Page Input and Output (Hid Usage Page 12, Hid Usage 1), Joystick (Hid Usage Page 1, Hid Usage 4), Mouse (Hid Usage Page 1, Hid Usage 2).
PID #5 Endpoints: Consumer Usage Page Input and Output (Hid Usage Page 12, Hid Usage 1), Keyboard boot (Hid Usage Page 1, Hid Usage 6), Mouse (Hid Usage Page 1, Hid Usage 2).
PID #6 Endpoints: Consumer Usage Page Input and Output (Hid Usage Page 12, Hid Usage 1).
PID #7 Endpoints: Consumer Usage Page Input and Output (Hid Usage Page 12, Hid Usage 1), Keyboard (Hid Usage Page 1, Hid Usage 6), Mouse (Hid Usage Page 1, Hid Usage 2), Multimedia (Hid Usage Page 12 and 1, Hid Usage 1 and 128), Joystick (Hid Usage Page 1, Hid Usage 4).
PID #8 Endpoints: Keyboard boot (Hid Usage Page 1, Hid Usage 6) for use with KVMs. Note T-bar will not work in this PID.

The XKE-64 Jog T-bar is an is an Android enabled device in PIDs #1, #3, #4, #6, and #7 (pids with no Keyboard boot endpoint). This means the device can be enumerated, read (if input report available), and written to on Android OS that support host USB, generally 3.1 or higher. Android OS is not able to enumerate a device with a Keyboard boot endpoint and thus if the device is in PID #2, 5, or 8 it will appear to the Android OS as only a hardware keyboard, you will not be able to get a handle to it however it will work as a keyboard assuming there are hardware macros recorded on the keys.

The XKE-64 Jog T-bar is a standard USB HID device and is supported by P.I. Engineering's Macroworks 3.1, X-keys Basic Setup, and our many SDKs.

X-keys XKE-64 Jog T-bar Input Report

Figure 1: X-keys XKE-64 Jog T-bar key reference.

Report Length: 37 bytes.

1. General Incoming Data

This data is returned when new data is detected such as button presses, unit id change. This report can be manually stimulated by sending an output report: Generate Data which is very useful for obtaining the initial state of the device immediately after enumeration.

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
Bytes 17
Bytes 18
Byte 19
Byte 20
Byte 21
Byte 22
Byte 23
Bytes 24-32
Bytes 33-36
Byte 37
Constant Unit ID Data Type Keys Keys Keys Keys Keys Keys Keys Keys Keys Keys NumLck, CapsLck, ScrLck, Shuttle At Rest, Jog Digital Shuttle Digital- CW Shuttle Digital-CCW T-bar Raw MSB T-bar Raw LSB T-bar Calibrated Jog Analog Shuttle Analog Jog Analog Raw Count Jog Analog Raw Count Reserved Time Stamp Reserved
0
<data>
DT
DI
DI
DI
DI
DI
DI
DI
DI
DI
DI
DS
SD1
SD2
TUH
TUL
TC
JA
SA
JR1
JR2
value
Time
value

DT: Data Type value of 0, 1 or 2 indicates the following data is a General Incoming Data report, 2 if generated by the output report: Generate Data. Data Type value of 214 indicates a Descriptor Data Report, see below. Data Type value of 224 indicates a Custom Data Report, see below
DI: For all bits 0 if key is up, 1 if key is down. Bits 1 to 8 correspond to the keys from top to bottom respectively of each column. For example a value of 3 in Byte 4 indicates that keys 0 and 1 are pressed
DS: Bit 1=NumLock, bit 2=CapsLock, bit 3=ScrLock, bit 4=On Boot (sets the bit when device is booted up by the usb then sets it back to 0), bit 5=Program Switch, bit 6=Shuttle At Rest (sets bit if shuttle is in the at rest position, clears it when not), bit 7=Jog clockwise digital, bit 8=Jog counterclockwise digital. Note: if endpoint does not have Keyboard then no NumLock, CapsLock, or ScrLock is reported and these bits are all 0
SD1: Shuttle digital clockwise, bit 1=position 1, bit 2=position 2, bit 3=position 3, bit 4=position 4, bit 5=postion 5, bit 6=position 6, bit 7=position 7, bit 8=0
SD2: Shuttle digital counterclockwise, bit 1=position 1, bit 2=position 2, bit 3=position 3, bit 4=position 4, bit 5=postion 5, bit 6=position 6, bit 7=position 7, bit 8=0
TUH: Uncalibrated T-bar data. 2 bytes, byte 17 is the high byte (MSB) and byte 18 is the low byte (LSB)
TUL: Uncalibrated T-bar data. 2 bytes, byte 17 is the high byte (MSB) and byte 18 is the low byte (LSB)
TC: Calibrated T-bar data. 0 for ful down, 255 for full up
JA: Jog knob analog data; 1 for clockwise, 255 for counterclockwise
SA: Shuttle analog data; 1, 2, 3, 4, 5, 6, 7 for clockwise segments and 255, 254, 253, 252, 251, 250, 249 for counterclockwise segments
JA1: Jog knob analog data raw count, MSB
JA2: Jog knob analog data raw count, LSB
Time: If enabled using Enable Time Stamp output report gives a time in ms starting from when the device was plugged into a port in 4 bytes where byte 33 is the MSB and byte 36 is the LSB

2. Descriptor Data

This data is returned after an output report: Request for Descriptor 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
Byte 15
Byte 16
Byte 17
Bytes 18 to 37
Constant Unit ID Data Type Mode Key mapstart Layer2 Offset Constant Constant Max Columns Max Rows LED State Version PID Low PID Hi Keymapstart Hi Max Macro Address Lo Max Macro Address Hi Reserved
0
<data>
214
Mode
96
128
255
255
10
8
LEDs
<data>
PIDL
PIDH
0
MMAL
MMAH
value

Mode: 0 means device is in PID #1, 1 = PID #2, 2 = PID #3, 3 = PID #4, etc.
LEDs: This byte tells the current state of the indicator LEDs. Bit 7 set means Green LED is on, bit 8 set means Red LED is on
PIDL: LSB of the Product Identification number or PID
PIDH: MSB of the Product Identification number or PID
MMAL: LSB of the maximum macro address, for internal use only
MMAH: MSB of the maximum macro address, for internal use only

3. Custom Data

This data is returned after an output report: Generate Custom Data is sent.

Byte 1*
Byte 2
Byte 3
Byte 4
Byte 5
Byte 6
Byte 7
Bytes Count+5 to 37
Constant Unit ID Data Type Count of custom bytes to follow Custom byte 1 Custom byte 2 Custom byte 3... Reserved
0
<data>
224
Count
B1
B2
B3...
value

Count: Number of custom bytes to follow
B1: 1st custom byte
B2: 2nd custom byte
B3: 3rd custom byte and so on for as many bytes as specified in Count

4. Check Dongle Key

This is received immediately following a Check Dongle Key output report is sent. The four values R0-R3 are required to continue the check. See Dongle Implementation for further details.

Byte 1*
Byte 2
Byte 3
Byte 4
Byte 5
Byte 6
Byte 7
Bytes 8 to 36
Constant Unit ID Data Type 1st byte returned from hash 2nd byte returned from hash 3rd byte returned from hash 4th byte returned from hash Reserved
0
<data>
193
R0
R1
R2
R3
value

R0: Value need for comparison to check for correct dongle key
R1: Value need for comparison to check for correct dongle key
R2: Value need for comparison to check for correct dongle key
R3: Value need for comparison to check for correct dongle key

5. Backlight On/Off State Data

This data is returned after an output report: Request Backlight On/Off State 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
Byte 15
Byte 16
Byte 17
Byte 18
Byte 20
Byte 21
Byte 22
Byte 23
Byte 24
Byte 25
Byte 26
Bytes 27 to 36
Constant Unit ID Data Type Bank 1 Intensity Bank 2 Intensity State of Bank 1 Column 1 State of Bank 1 Column 2 State of Bank 1 Column 3 State of Bank 1 Column 4 State of Bank 1 Column 5 State of Bank 1 Column 6 State of Bank 1 Column 7 State of Bank 1 Column 8 State of Bank 1 Column 9 State of Bank 1 Column 10 State of Bank 2 Column 1 State of Bank 2 Column 2 State of Bank 2 Column 3 State of Bank 2 Column 4 State of Bank 2 Column 5 State of Bank 2 Column 6 State of Bank 2 Column 7 State of Bank 2 Column 8 State of Bank 2 Column 9 State of Bank 2 Column 10 Reserved
0
<data>
174
IntB1
IntB2
B1C1
B1C2
B1C3
B1C4
B1C5
B1C6
B1C7
B1C8
B1C9
B1C10
B2C1
B2C2
B2C3
B2C4
B2C5
B2C6
B2C7
B2C8
B2C9
B2C10
value

IntB1: Intensity of the bank 1 backlights, 0-255
IntB2: Intensity of the bank 2backlights, 0-255
B1C1: State of the bank 1 backlight LEDs for keys 0-4 (see Figure 1), 0 for off, 1 for on. Bit 1=key 0, bit 2=key 1, bit 3=key 2, bit 4=key 3, bit 5=key 4, bits 6, 7 , 8 not applicable
B1C2: State of the bank 1 backlight LEDs for keys 8-12 (see Figure 1), 0 for off, 1 for on. Bit 1=key 8, bit 2=key 9, bit 3=key 10, bit 4=key 11, bit 5=key 12, bits 6, 7 , 8 not applicable
B1C3: State of the bank 1 backlight LEDs for keys 16-20 (see Figure 1), 0 for off, 1 for on. Bit 1=key 16, bit 2=key 17, bit 3=key 18, bit 4=key 19, bit 5=key 20, bits 6, 7 , 8 not applicable
B1C4: State of the bank 1 backlight LEDs for keys 24-28 (see Figure 1), 0 for off, 1 for on. Bit 1=key 24, bit 2=key 25, bit 3=key 26, bit 4=key 27, bit 5=key 28, bits 6, 7 , 8 not applicable
B1C5: State of the bank 1 backlight LEDs for keys 32-39 (see Figure 1), 0 for off, 1 for on. Bit 1=key 32, bit 2=key 33, bit 3=key 34, bit 4=key 35, bit 5=key 36, bits 6=key 37, bit 7=key 38, bit 8=key 39
B1C6: State of the bank 1 backlight LEDs for keys 40-47 (see Figure 1), 0 for off, 1 for on. Bit 1=key 40, bit 2=key 41, bit 3=key 42, bit 4=key 43, bit 5=key 44, bits 6=key 45, bit 7=key 46, bit 8=key 47
B1C7: State of the bank 1 backlight LEDs for keys 48-55 (see Figure 1), 0 for off, 1 for on. Bit 1=key 48, bit 2=key 49, bit 3=key 50, bit 4=key 51, bit 5=key 52, bits 6=key 53, bit 7=key 54, bit 8=key 55
B1C8: State of the bank 1 backlight LEDs for keys 56-63 (see Figure 1), 0 for off, 1 for on. Bit 1=key 56, bit 2=key 57, bit 3=key 58, bit 4=key 59, bit 5=key 60, bits 6=key 61, bit 7=key 62, bit 8=key 63
B1C9: State of the bank 1 backlight LEDs for keys 64-71 (see Figure 1), 0 for off, 1 for on. Bit 1=key 64, bit 2=key 65, bit 3=key 66, bit 4=key 67, bit 5=key 68, bits 6=key 69, bit 7=key 70, bit 8=key 71
B1C10: State of the bank 1 backlight LEDs for keys 76-79 (see Figure 1), 0 for off, 1 for on. Bits 1-4=not applicable, bit 5=key 76, bits 6=key 77, bit 7=key 78, bit 8=key 79
B2C1: State of the bank 2 backlight LEDs for keys 0-4 (see Figure 1), 0 for off, 1 for on. Bit 1=key 0, bit 2=key 1, bit 3=key 2, bit 4=key 3, bit 5=key 4, bits 6, 7 , 8 not applicable
B2C2: State of the bank 2 backlight LEDs for keys 8-12 (see Figure 1), 0 for off, 1 for on. Bit 1=key 8, bit 2=key 9, bit 3=key 10, bit 4=key 11, bit 5=key 12, bits 6, 7 , 8 not applicable
B2C3: State of the bank 2 backlight LEDs for keys 16-20 (see Figure 1), 0 for off, 1 for on. Bit 1=key 16, bit 2=key 17, bit 3=key 18, bit 4=key 19, bit 5=key 20, bits 6, 7 , 8 not applicable
B2C4: State of the bank 2 backlight LEDs for keys 24-28 (see Figure 1), 0 for off, 1 for on. Bit 1=key 24, bit 2=key 25, bit 3=key 26, bit 4=key 27, bit 5=key 28, bits 6, 7 , 8 not applicable
B2C5: State of the bank 2 backlight LEDs for keys 32-39 (see Figure 1), 0 for off, 1 for on. Bit 1=key 32, bit 2=key 33, bit 3=key 34, bit 4=key 35, bit 5=key 36, bits 6=key 37, bit 7=key 38, bit 8=key 39
B2C6: State of the bank 2 backlight LEDs for keys 40-47 (see Figure 1), 0 for off, 1 for on. Bit 1=key 40, bit 2=key 41, bit 3=key 42, bit 4=key 43, bit 5=key 44, bits 6=key 45, bit 7=key 46, bit 8=key 47
B2C7: State of the bank 2 backlight LEDs for keys 48-55 (see Figure 1), 0 for off, 1 for on. Bit 1=key 48, bit 2=key 49, bit 3=key 50, bit 4=key 51, bit 5=key 52, bits 6=key 53, bit 7=key 54, bit 8=key 55
B2C8: State of the bank 2 backlight LEDs for keys 56-63 (see Figure 1), 0 for off, 1 for on. Bit 1=key 56, bit 2=key 57, bit 3=key 58, bit 4=key 59, bit 5=key 60, bits 6=key 61, bit 7=key 62, bit 8=key 63
B2C9: State of the bank 2 backlight LEDs for keys 64-71 (see Figure 1), 0 for off, 1 for on. Bit 1=key 64, bit 2=key 65, bit 3=key 66, bit 4=key 67, bit 5=key 68, bits 6=key 69, bit 7=key 70, bit 8=key 71
B2C10: State of the bank 2 backlight LEDs for keys 76-79 (see Figure 1), 0 for off, 1 for on. Bits 1-4=not applicable, bit 5=key 76, bits 6=key 77, bit 7=key 78, bit 8=key 79

6. Backlight Flash State Data

This data is returned after an output report: Request Backlight Flash State 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
Byte 15
Byte 16
Byte 17
Byte 18
Byte 20
Byte 20
Byte 21
Byte 22
Byte 23
Byte 24
Byte 25
Bytes 26 to 36
Constant Unit ID Data Type Flash State of Indicator LEDs Flash Frequency Flash State of Bank 1 Column 1 Flash State of Bank 1 Column 2 Flash State of Bank 1 Column 3 Flash State of Bank 1 Column 4 Flash State of Bank 1 Column 5 Flash State of Bank 1 Column 6 Flash State of Bank 1 Column 7 Flash State of Bank 1 Column 8 Flash State of Bank 1 Column 9 Flash State of Bank 1 Column 10 Flash State of Bank 2 Column 1 Flash State of Bank 2 Column 2 Flash State of Bank 2 Column 3 Flash State of Bank 2 Column 4 Flash State of Bank 2 Column 5 Flash State of Bank 2 Column 6 Flash State of Bank 2 Column 7 Flash State of Bank 2 Column 8 Flash State of Bank 2 Column 9 Flash State of Bank 2 Column 10 Reserved
0
<data>
175
Ind
Freq
B1C1
B1C2
B1C3
B1C4
B1C5
B1C6
B1C7
B1C8
B1C9
B1C10
B2C1
B2C2
B2C3
B2C4
B2C5
B2C6
B2C7
B2C8
B2C9
B2C10
value

Ind: If bit 6=1 then Green Indicator is flashing, if bit 7=1 then Red Indicator LED is flashing. Note to get the on/off state of the Green and Red Indicator LEDs please use Get Descriptor output report, the states will be returned in Byte 11 of the Descriptor Data
Freq: Flash Frequency, 0-255
B1C1: State of the bank 1 backlight LEDs for keys 0-4 (see Figure 1), 0 for not flashing, 1 for flashing. Bit 1=key 0, bit 2=key 1, bit 3=key 2, bit 4=key 3, bit 5=key 4, bits 6, 7 , 8 not applicable
B1C2: State of the bank 1 backlight LEDs for keys 8-12 (see Figure 1), 0 for not flashing, 1 for flashing. Bit 1=key 8, bit 2=key 9, bit 3=key 10, bit 4=key 11, bit 5=key 12, bits 6, 7 , 8 not applicable
B1C3: State of the bank 1 backlight LEDs for keys 16-20 (see Figure 1), 0 for not flashing, 1 for flashing. Bit 1=key 16, bit 2=key 17, bit 3=key 18, bit 4=key 19, bit 5=key 20, bits 6, 7 , 8 not applicable
B1C4: State of the bank 1 backlight LEDs for keys 24-28 (see Figure 1), 0 for not flashing, 1 for flashing. Bit 1=key 24, bit 2=key 25, bit 3=key 26, bit 4=key 27, bit 5=key 28, bits 6, 7 , 8 not applicable
B1C5: State of the bank 1 backlight LEDs for keys 32-39 (see Figure 1), 0 for not flashing, 1 for flashing. Bit 1=key 32, bit 2=key 33, bit 3=key 34, bit 4=key 35, bit 5=key 36, bits 6=key 37, bit 7=key 38, bit 8=key 39
B1C6: State of the bank 1 backlight LEDs for keys 40-47 (see Figure 1), 0 for not flashing, 1 for flashing. Bit 1=key 40, bit 2=key 41, bit 3=key 42, bit 4=key 43, bit 5=key 44, bits 6=key 45, bit 7=key 46, bit 8=key 47
B1C7: State of the bank 1 backlight LEDs for keys 48-55 (see Figure 1), 0 for not flashing, 1 for flashing. Bit 1=key 48, bit 2=key 49, bit 3=key 50, bit 4=key 51, bit 5=key 52, bits 6=key 53, bit 7=key 54, bit 8=key 55
B1C8: State of the bank 1 backlight LEDs for keys 56-63 (see Figure 1), 0 for not flashing, 1 for flashing. Bit 1=key 56, bit 2=key 57, bit 3=key 58, bit 4=key 59, bit 5=key 60, bits 6=key 61, bit 7=key 62, bit 8=key 63
B1C9: State of the bank 1 backlight LEDs for keys 64-71 (see Figure 1), 0 for not flashing, 1 for flashing. Bit 1=key 64, bit 2=key 65, bit 3=key 66, bit 4=key 67, bit 5=key 68, bits 6=key 69, bit 7=key 70, bit 8=key 71
B1C10: State of the bank 1 backlight LEDs for keys 76-79 (see Figure 1), 0 for not flashing, 1 for flashing. Bits 1-4=not applicable, bit 5=key 76, bits 6=key 77, bit 7=key 78, bit 8=key 79
B2C1: State of the bank 2 backlight LEDs for keys 0-4 (see Figure 1), 0 for not flashing, 1 for flashing. Bit 1=key 0, bit 2=key 1, bit 3=key 2, bit 4=key 3, bit 5=key 4, bits 6, 7 , 8 not applicable
B2C2: State of the bank 2 backlight LEDs for keys 8-12 (see Figure 1), 0 for not flashing, 1 for flashing. Bit 1=key 8, bit 2=key 9, bit 3=key 10, bit 4=key 11, bit 5=key 12, bits 6, 7 , 8 not applicable
B2C3: State of the bank 2 backlight LEDs for keys 16-20 (see Figure 1), 0 for not flashing, 1 for flashing. Bit 1=key 16, bit 2=key 17, bit 3=key 18, bit 4=key 19, bit 5=key 20, bits 6, 7 , 8 not applicable
B2C4: State of the bank 2 backlight LEDs for keys 24-28 (see Figure 1), 0 for not flashing, 1 for flashing. Bit 1=key 24, bit 2=key 25, bit 3=key 26, bit 4=key 27, bit 5=key 28, bits 6, 7 , 8 not applicable
B2C5: State of the bank 2 backlight LEDs for keys 32-39 (see Figure 1), 0 for not flashing, 1 for flashing. Bit 1=key 32, bit 2=key 33, bit 3=key 34, bit 4=key 35, bit 5=key 36, bits 6=key 37, bit 7=key 38, bit 8=key 39
B2C6: State of the bank 2 backlight LEDs for keys 40-47 (see Figure 1), 0 for not flashing, 1 for flashing. Bit 1=key 40, bit 2=key 41, bit 3=key 42, bit 4=key 43, bit 5=key 44, bits 6=key 45, bit 7=key 46, bit 8=key 47
B2C7: State of the bank 2 backlight LEDs for keys 48-55 (see Figure 1), 0 for not flashing, 1 for flashing. Bit 1=key 48, bit 2=key 49, bit 3=key 50, bit 4=key 51, bit 5=key 52, bits 6=key 53, bit 7=key 54, bit 8=key 55
B2C8: State of the bank 2 backlight LEDs for keys 56-63 (see Figure 1), 0 for not flashing, 1 for flashing. Bit 1=key 56, bit 2=key 57, bit 3=key 58, bit 4=key 59, bit 5=key 60, bits 6=key 61, bit 7=key 62, bit 8=key 63
B2C9: State of the bank 2 backlight LEDs for keys 64-71 (see Figure 1), 0 for not flashing, 1 for flashing. Bit 1=key 64, bit 2=key 65, bit 3=key 66, bit 4=key 67, bit 5=key 68, bits 6=key 69, bit 7=key 70, bit 8=key 71
B2C10: State of the bank 2 backlight LEDs for keys 76-79 (see Figure 1), 0 for not flashing, 1 for flashing. Bits 1-4=not applicable, bit 5=key 76, bits 6=key 77, bit 7=key 78, bit 8=key 79

7. Unique ID Data

This data is returned after an output report: Request Unique ID is sent. It returns 8 bytes of the silicon generated unique ID of the device. This value is available also in the HID device descriptor as the string iSerialNumber.

Byte 1*
Byte 2
Byte 3
Byte 4
Byte 5
Byte 6
Byte 7
Byte 8
Byte 9
Byte 10
Byte 11
Bytes 12 to 36
Constant Unit ID Data Type Unique ID Byte 1 (MSB/Leftmost characters) Unique ID Byte 2 Unique ID Byte 3 Unique ID Byte 4 Unique ID Byte 5 Unique ID Byte 6 Unique ID Byte 7 Unique ID Byte 8 (LSB/Rightmost characters) Reserved
0
<data>
157
B1
B2
B3
B4
B5
B6
B7
B8
value

B1-B8: The 8 bytes of the silicon generated unique ID of the device where B1 is the MSB and B8 is the LSB. Typically represented as a string of the hex values returned, for example if the 8 bytes returned were B1=70, B2=21, B3=48, B4=23, B5=22, B6=6, B7=43, and B8=0, the string for this would be 4615301716062B00



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

X-keys XKE-64 Jog T-bar Output Report

The following types of output reports are shown in the summary below. Please be aware that several of these commands result in writing to the device's eeprom which has a limit to the number of writes allowed before it is "burnt out". The manufacturer's specification is 50,000 eeprom writes. Because of this we recommend the commands designated with e be executed rarely and not within timing loops. Note, the first byte listed in this documentation is 0 and represents the report ID. This is not present on some non-PC operating systems. So when sending an output report on Android for example, eliminate this byte.

Report
Format
Description
1
0, 186, LEDs, 0... Set LEDs
2
0, 179, LEDIndex, State, 0... Index Based Set LED (Flash)
3
0, 189, UnitID, 0... Set Unit IDe
4
0, 214, 0... Get Descriptor
5
0, 177, 0... Generate Data
6
0, 187, Bank 1 Intensity, Bank 2 Intensity, 0... Set Backlight Intensity
7
0, 184, 0... Toggle Backlights
8
0, 182, Bank, OnOff, 0... Turn On/Off Rows of Backlights
9
0, 181, BacklightIndex, State, 0... Index Based Set Backlights (Flash)
10
0, 180, Freq, 0... Set Frequency of Flash
11
0, 199, Save, 0... Save Backlight State to EEPROMe
12
0, 204, Mode, 0... Change PIDe
13
0, 196, Change, 0... Reboot Mode
14
0, 201, Modifier, 0, HC1, HC2, HC3, HC4, HC5, HC6, 0... Keyboard Reflector (keyboard endpoint required)
15
0, 203, Buttons, Mouse X, Mouse Y, Wheel Y, 0... Mouse Reflector (mouse endpoint required)
16
0, 202, Joystick X, Joystick Y, Joystick Z rot., Joystick Z, Joystick Slider, Game Buttons 1, Game Buttons 2, Game Buttons 3, Game Buttons 4, 0, Point of View Hat, 0... Joystick Reflector (joystick endpoint required)
17
0, 225, Usage ID LSB, Usage ID MSB, 0... Multimedia Reflector (multimedia endpoint required)
18
0, 195, Version LSB, Version MSB, 0... Set Version Numbere
19
0, 238, 0... Reboot Device
20
0, 192, K0, K1, K2, K3, 0... Set Dongle Keye
21
0, 193, N0, N1, N2, N3, 0... Check Dongle Key
22
0, 172, 1... Start Calibration*
23
0, 172, 0... Stop Calibratione*
24
0, 173, INV... Invert T-bar
25
0, 174, 0... Request Backlight On/Off State
26
0, 175, 0... Request Backlight Flash State
27
0, 224, Count, B1, B2, B3..., 0... Generate Custom Data

eCommand writes to EEPROM, do not perform this command excessively, do not exceed 50,000 writes to EEPROM.
*Calibration is done at the factory, there is no need to do this normally.

Endpoint: 4, Vendor Defined Usage Page.

Report Length: 36 bytes.

1. Set LEDs

One of two methods for controlling the LEDs.

Byte 1*
Byte 2
Byte 3
Bytes 4-36
Constant Command LED Control Constant
0
186
LEDs
0

LEDs: 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. Index Based Set LED (Flash)

One of two methods for controlling the LEDs. If flashing of LEDs is desired this method must be used.

Byte 1*
Byte 2
Byte 3
Byte 4
Bytes 5-36
Constant Command LED Index LED State Constant
0
179
LEDIndex
LEDState
0

LEDIndex: 6 = green, 7 = red.
LEDState: 0 = off, 1 = on and 2=flash. Set the frequency of the flash with output report Set Frequency of Flash.

3. Set Unit ID

Send this output report to set the Unit ID of the device. This is useful if connecting more than one of the same device to the a computer.

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

4. Get Descriptor

After sending this output report a Descriptor Data input report will be generated.

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

5. Generate Data

After sending this output report a General Incoming Data input report will be generated with bit 2 of PS set (see General Incoming Data). This is useful in determining the initial state of the device before any data has changed.

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

6. Set Backlight Intensity

Byte 1*
Byte 2
Byte 3
Byte 4
Bytes 5-36
Constant Command Bank 1 Intensity Bank 2 Intensity Constant
0
187
Intensity
Intensity
0

Intensity: 0-255 where 0 is no intensity for that color or off, and 255 is the brightest. Usabe range is actually much narrower.

7. Toggle Backlights

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

8. Turn On/Off Rows of Backlights

Send this output report to either turn on or off rows of the backlights. This command is most useful for turning on or off all of the LEDs on a given bank.

Byte 1*
Byte 2
Byte 3
Byte 4
Bytes 5-36
Constant Command Bank # State Constant
0
182
Bank
OnOff
0

Bank: 0 = bank 1, 1 = bank 2.
OnOff: For all bits 0 for no backlighting, 1 for backlighting. Bit 0 = 1st row, bit 1=2nd row, bit 2=3rd row, bit 3=4th row, bit 4=5th row, bit 5=6th row. Note the intensities are not affected by this command. Set to 0 to turn all of the LEDs on the selected bank off, and set to 255 to turn them all on.

9. Index Based Set Backlights (Flash)

Control of individual backlights.

Byte 1*
Byte 2
Byte 3
Byte 4
Bytes 5-36
Constant Command Backlight Index State Constant
0
181
BacklightIndex
State
0

BacklightIndex: For bank 1 (upper), value is shown in key in Figure 1. For bank 2 (lower), add 80 to the value shown on key in Figure 1. For example to control the top left key bank 1 index=0, the corresponding bank 2 is index=80.
State: 0 = off, 1 = on and 2 = flash. Set the frequency of the flash with output report Set Frequency of Flash.

10. Set Frequency of Flash

Use this output report to control the frequency of the flashing of both the indicator LEDs and the backlights, same frequency is used for both.

Byte 1*
Byte 2
Byte 3
Bytes 4-36
Constant Command Frequency Constant
0
180
Freq
0

Freq: 1-255 where 1 is the fastest flash and 255 is the slowest. 255 is approximately 4 seconds between flashes.

11. Save Backlight State to EEPROM

Send this output report to change the default backlighting on startup of device to the current backlight state, ie, what ever backlights are on or off at the time this report is sent will be the new default.

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

Save: Any value other than 0 will save the current backlight state to the EEPROM so when the device is replugged it will display this save backlighting. Note because there is a limited number of times the EEProm can be written to, it is not a good idea to do this often.

12. Change PID

Send this output report to change between PIDs.

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

Mode: 0 for PID #1, 1 for PID #2, 2 for PID #3 and 3 for PID #4, 4for PID #5, 5 for PID #6, 6 for PID #7, and 7 for PID #8 (KVM). Note if change to PID #8 (KVM) input and output reports will not be available and thus the T-bar will not function. To convert back to PID #1 from PID #8 hold down the programming switch while plugging the device in. Use the Reboot Mode command to either have the unit always revert to PID #8 (KVM) on reboot or not.

13. Reboot Mode

Send this output report to determine if the device will automatically return to PID #8 (KVM) on each reboot or if it will remain in the current PID between reboots.

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

Change: Enter 0 to have the device not return to PID #8 (KVM) on reboot and 7 to have it always return to PID #8 (KVM) on reboot.

To setup a device for KVM use first program the hardware keyboard macros into it using either P.I. Engineering Macroworks 3.1 or X-keys Basic Setup while it is in the factory default PID #1. Test the macros to make sure they are as desired. After programming send the Reboot Mode command with Change=7, then either reboot device or send the Change PID command with Mode=7.

To return a device previously setup for KVM use press and hold the programming switch at the top of the device while plugging in the device. The device will return to the factory default PID #1. Now it is important to send the Reboot Mode command with Change=0. The device will now be back to factory default. User may or may not wish to clear the hardware keyboard macros at this point.

To modify the hardware macros on a device setup for KVM use, press and hold the program switch at the top of the device while plugging in the device. The device will be return to the factory default PID #1. Make the desired macro modifications using either P.I. Engineering Macroworks 3.1 or X-keys Basic Setup. Replug the device and it will be in the KVM mode again.

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

Sends native mouse messages.

Byte 1*
Byte 2
Byte 3
Byte 4
Byte 5
Byte 6
Bytes 7-36
Constant Command Buttons Mouse X Mouse Y Wheel Y Constant
0
203
Buttons
X
Y
WY
0

Buttons: Bit 1=Left, bit 2=Right, bit 3=Center, bit 4=XButton1, bit 5=XButton2.
X=Mouse X motion. 0 no motion, 1-127 is right, 255-129=left, finest inc (1 and 255) to coarsest (127 and 129).
Y=Mouse Y motion. 0 no motion, 1-127 is down, 255-129=up, finest inc (1 and 255) to coarsest (127 and 129).
WY=Wheel Y. 0 no motion, 1-127 is up, 255-129=down, finest inc (1 and 255) to coarsest (127 and 129).

Example 1: Move mouse 1 mickey, the finest increment.
x+: 0, 203, 0, 1, 0, 0, 0
x-: 0, 203, 0, 255, 0, 0, 0
y+: 0, 203, 0, 0, 1, 0, 0
y-: 0, 203, 0, 0, 255, 0, 0

Example 2: Wheel Y with increment of 5.
+ motion: 0, 203, 0, 0, 0, 0, 5
- motion: 0, 203, 0, 0, 0, 0, 250 where 250=255-5

Example 3: Left button click.
left button down: 0, 203, 1, 0, 0, 0, 0
left button up: 0, 203, 0, 0, 0, 0, 0

Example 4: Left button down and drag
with mouse at starting position: 0, 203, 1, 0, 0, 0, 0
move mouse with button down: 0, 203, 1, 30, 30, 0, 0
release button: 0, 203, 0, 0, 0, 0, 0

16. Joystick Reflector

Sends native joystick messages. Must have the device set to a PID with a joystick endpoint; PID #1 or PID #3.

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 Command Joystick X Joystick Y Joystick Z rot. Joystick Z Joystick 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 rot., 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.
Slider: Joystick Slider, 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.

17. Multimedia Reflector

Sends 2 byte multimedia messages. Must have the device set to a PID with a multimedia endpoint; PID #2 or PID #3. When in this PID there is no input data report available thus users of this feature will not be able to read any data, only write output reports. If desiring this feature users are instructed to use MacroWorks 3.1 programming utility for programming of the buttons and converting to a multimedia PID. This command must be followed with an "up" command with ULo and UHi =0.

Byte 1*
Byte 2
Byte 3
Byte 4
Bytes 8-36
Constant Command Usage ID Lo Usage ID Hi Constant
0
225
ULo
UHi
0

ULo=Usage ID low byte see hut1_12.pdf, pages 75-85 Consumer Page.
UHi=Usage ID high byte see hut1_12.pdf, pages 75-85 Consumer Page.

Example: My Computer - 0, 225, 94, 01, 0... and send report using WriteData. Then 0, 225, 0, 0, 0... and send report using WriteData. In this example 0194 is the Usage ID for My Computer.

18. Set Version Number

Send this output report to set the Version of the device. This is not the firmware version given in the descriptor but a 2 byte number available on enumeration. The value is "remembered" so if it is changed, using this report, the device must be rebooted. The device can be rebooted by replugging it or by sending the output report : Reboot Device. The device is also rebooted when changing pids using output report: Change PID.

Byte 1*
Byte 2
Byte 3
Byte 4
Bytes 5-36
Constant Command Version LB (0-255) Version HB (0-255) Constant
0
195
value
value
0

19. Reboot Device

Send this output report to reboot the device without having to unplug it. After sending this report the device must be re-enumerated.

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

20. Set Dongle Key

Sets the user entered key. Remember these numbers as they are required to check for the key. This is intented to be done once by the developer prior to sale. See Dongle Implemenation for more details.

Byte 1*
Byte 2
Byte 3
Byte 4
Byte 5
Byte 6
Bytes 7-36
Constant Command 1st byte of key 2nd byte of key 3rd byte of key 4th byte of key Constant
0
192
K0
K1
K2
K3
0

K0: 1st byte of user determined dongle key, any number 1-254.
K1: 2nd byte of user determined dongle key, any number 1-254.
K2: 3rd byte of user determined dongle key, any number 1-254.
K3: 4th byte of user determined dongle key, any number 1-254.

21. Check Dongle Key

Checks the key that was entered in Set Dongle Key. This is intented to be done by the developer within their own software to determine if the connected X-keys device is the one they sold to the customer. 4 random bytes along with the actual key are entered into the DongleCheck2() hash function of the Piehid32.dll/PieHid32Net.dll which returns 4 bytes. Then after sending this output report a Check Dongle Key input report will be received containing the same 4 bytes returned from the hash if the key matches. See Dongle Implemenation for more details.

Byte 1*
Byte 2
Byte 3
Byte 4
Byte 5
Byte 6
Bytes 7-36
Constant Command Random number Random number Random number Random number Constant
0
193
N0
N1
N2
N3
0

K0: 1st byte of a random number that was used in the hash, any number 1-254.
K1: 2nd byte of a random number that was used in the hash, any number 1-254.
K2: 3rd byte of a random number that was used in the hash, any number 1-254.
K3: 4th byte of a random number that was used in the hash, any number 1-254.

22. Start Calibration

After sending this output report move the T-bar lever up and down to its full extents and then send a Stop Calibration output report.

Byte 1*
Byte 2
Bytes 3
Bytes 4-36
Constant Command Start Cal Constant
0
172
1
0

23. Stop Calibration

After sending a Start Calibration output report and moving the T-bar back and forth send this report to stop and save the calibration.

Byte 1*
Byte 2
Bytes 3
Bytes 4-36
Constant Command Stop Cal Constant
0
172
0
0

24. Invert T-bar

Factory default has the T-bar reporting 0 when fully down (away from the green and red LED indicators) and 255 when fully up. If wishing to invert this so that fully down reports 255 and fully up reports 0 then send this command with INV=1. To return it to factory default send this command with INV=0.

Byte 1*
Byte 2
Bytes 3
Bytes 4-36
Constant Command lnvert or not Constant
0
173
INV
0

INV: 0=factory default behavior (0=fully down, 255=fully up), 1=inverted behavior (255=fully down, 0=fully up).

25. Request Backlight On/Off State

After sending a Request Backlight On/Off State output report a Backlight On/Off State Data input report will be returned giving the value of the bank 1 and bank 2 intensities and the on/off state for each backlight as a bitmap.

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

26. Request Backlight Flash State

After sending a Request Backlight Flash State output report a Backlight Flash State Data input report will be returned giving the flash state of the green and red indicator LEDs, the current flash frequency, and the flash state for each backlight as a bitmap.

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

27. Generate Custom Data

After sending this output report a Custom Data input report will be generated with Byte 3 set to 224 and the count and custom bytes following. Note input reports are available in PID #1 and PID #3 only.

Byte 1*
Byte 2
Byte 3
Byte 4
Byte 5
Byte 6...
Bytes (Count+4) to 36
Constant Command Count of custom bytes to follow Custom byte 1 Custom byte 2 Custom byte 3... Constant
0
224
Count
B1
B2
B3...
0

Count: Number of custom bytes to follow.
B1: 1st custom byte.
B2: 2nd custom byte.
B3: 3rd custom byte and so on for as many bytes as specified in Count.

 

*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