X-keys 128 Key Keyboard Data Report | Main Page

General Information

VID 05f3h
PID (w Magnetic Strip Reader ) 305h or 773
PID (w/o Reader )

306h or 774

PID (w Bar Code Reader ) 307h or 775
Consumer Usage Page 1
Usage Page 000Ch or 12

X-keys 128 Key Keyboard Input Report

X-keys 128 Key Keyboard

Figure 1: X-keys 128 Key Keyboard key reference.

Endpoint: 1, consumer usage page

Report Length: 32 bytes.

1.  General Incoming Data

This is received when keys are pressed, position of the 8 Position Locking Switch changes, Unit ID or input on the Footpedal (RJ11) port is detected. 

Byte 1
Byte 2
Byte 3
Byte 4
Bytes 5-20
Bytes 21-31
Byte 32
Constant
Foot pedal (RJ11) Port
8 Position Locking Switch
Data Type Designation
Columns
A to P
Reserved
Unit ID
(0-255)
0
Digital1
Digital2
Value
Digital3
0
<data>

Digital1:  For all bits 0 if pedal is up, 1 if pedal is down.  Bit 1=Left pedal, Bit 2=Middle peddle, Bit 3= Right pedal.
Digital2: Bit 1=Position 0, Bit 2=Position 2, Bit 3=Position 3, Bit 4=Position 4, Bit 5=Position 5, Bit 6=Position 6, Bit 7=Position 7, Bit 8=Position 1
Value: 122 (7Ah) for general incoming data, 121 (79h) for check dongle,
Digital3:  For all bits 0 if key is up, 1 if key is down.  Bits 1 to 8 correspond to rows 1-8 respectively of the given column.  For example Byte 5 gives the state of A1, A2, A3, A4, A5, A6, A7 and A8.  A value of 67 in this byte would indicate that A1, A2 and A7 are pressed.

2.  Barcode or Magnetic Strip Data.

This data is received when a valid card is swiped through the barcode or magnetic strip reader. 

Byte 1
Byte 2
Byte 3
Byte 4
Bytes 5-31
Byte 32
Constant
Always 0
Always 0
Message Length
Message Data
Unit ID (0-255)
0
0
0
MsgLen
MsgData
<data>

MsgLen: The number of bytes of the following message. The maximum value is 27. If this number is not 122 (7Ah) then barcode/magnetic strip data is being received. MsgData: Incoming message data from the barcode reader or magnetic strip reader. Depending on the length of the total message it may take several ReadData() calls or callback notifications to collect it all. After all barcode/magnetic strip data has been read a 122 (7Ah) will appear in Byte 4.

3. Descriptor

The descriptor contains information about the device.  The descriptor is received after a Request for Descriptor output report is sent, see Output Reports below.

Byte 1
Byte 2
Byte 3
Byte 4
Byte 5
Byte 6
Byte 7
Byte 8
Byte 9
Byte 10
Byte 11
Bytes 12-32
Constant
Vendor ID high
Vendor ID low
PID high
PID low
Rev high
Rev low
Unit ID
Read Report Length
Write Report Length
Report Rate
Reserved
0
5
243 (F3h)
3
PIDlow
RevH
RevL
<data>
32
9
RR
0 or value

PIDlow: The low byte of the PID (Product ID) which for the X-keys 128 with barcode reader is 7. To calculate PID=PID high*256+PIDlow =3*256+7=775 or 307h.
REVH
:  Bit 8=1 always.  Bits 1 to 7 are the high byte of the chip firmware revision.
REVL:  The low byte of the chip firmware revision.
RR:  The report rate is how often data is spontaneously refreshed if nothing is “forcing” a refresh such as pressing keys or sliding cards.  The X-keys 128 and 84 devices have a report rate of 32 which equates to approximately 500ms.

X-keys 128 Key Keyboard Output Report

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

Report Length: 9 bytes.

Report
Format
Description
1
0*, 150, LEDS, 0, 0, 0, 0, 0, 0 Set LEDs
2
0*, 137, 137, 0, 0, 0, 0, UnitID, 16 Set Unit ID
3
0*, 137, 137, 0, 0, 0, 0, 0, 132 Request Descriptor
4
0*, 137, 137, 0, 0, 0, 0, BeepCtrl, 18 Beep on keypress
5
0*, 151, PR2, DR2, 0, 0, 0, 0, 0  

Beep device at specified period and duration

6
0*, 205, 0, 0, K1, K2, K3, K4, 220 Set key for dongle implementation
7
0*, 137, 137, 0, A1, A2, A3, A4, 121 Check key for dongle implementation

*In most cases this number is 0.  This number is read from the input report.           

1. Set LED State

Byte 1
Byte 2
Byte 3
Byte 4
Byte 5
Byte 6
Byte 7
Byte 8
Byte 9
Constant
LED Command
LED state
Constant
Constant
Constant
Constant
Constant
Constant
0
150
LEDs
0
0
0
0
0
0

LEDs:  Bit 1=LED for Function 1, bit 2=LED for Function 2, bit 3=LED for Function 3, bit 4=LED for Function 4, bit 5=0, bit 6=0, bit 7= 0, bit 8=0.
Example:  A value of 7=1+2+4 would turn on the Function 1, 2 and 3 LEDs.

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

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

3. Request Descriptor

After sending this command the next ReadData or callback notification will be the descriptor data as described in Input Report 3., see above.

Byte 1
Byte 2
Byte 3
Byte 4
Byte 5
Byte 6
Byte 7
Byte 8
Byte 9
Constant
General Command
General Command
Constant
Constant
Constant
Constant
Constant
Request Descriptor
0
137
137
0
0
0
0
0
134

4. Beep on keypress

Byte 1
Byte 2
Byte 3
Byte 4
Byte 5
Byte 6
Byte 7
Byte 8
Byte 9
Constant
General Command
General Command
Constant
Constant
Constant
Constant
Beep Control
Constant
0
137
137
0
0
0
0
BeepCtrl
18

BeepCtrl:  0=no beep, 1=beep.  Bit 3= auto beep if key is pressed.

5. Beep at specified period and duration

Byte 1
Byte 2
Byte 3
Byte 4
Byte 5
Byte 6
Byte 7
Byte 8
Byte 9
Constant
Beep Command
Period of beep
Duration of beep
Constant
Constant
Constant
Constant
Constant
0
151
PR2
DR2
0
0
0
0
0

PR2:  PR2=period/0.000016-1, the lower the value of PR2 the higher frequency will be the beep.
DR2:  Duration=DR2*0.016 in seconds.

6. Set Key for Dongle Implementation

Use this command to write a key to the firmware of the unit for use as dongle protection.

Byte 1
Byte 2
Byte 3
Byte 4
Byte 5
Byte 6
Byte 7
Byte 8
Byte 9
Constant
Set Key Command
Constant
Constant
Key Value 1
Key Value 2
Key Value 3
Key Value 4
Set Key command
0
205
0
0
K1
K2
K3
K4
220

K1:  User chooses any number between 1 and 254, 0 and 255 not allowed.
K2:  User chooses any number between 1 and 254, 0 and 255 not allowed.
K3:  User chooses any number between 1 and 254, 0 and 255 not allowed.
K4:  User chooses any number between 1 and 254, 0 and 255 not allowed.

The values for K1, K2, K3 and K4 must be recorded and saved for later in order to check the key. Non PC users of this feature please contact P. I. Engineering for further details.

7. Check Key for Dongle Implementation

This is half of the check key sequence needed to detect if a given unit is the proper dongle. 

Byte 1
Byte 2
Byte 3
Byte 4
Byte 5
Byte 6
Byte 7
Byte 8
Byte 9
Constant
General Command
General Command
Constant
Key Value 1
Key Value 2
Key Value 3
Key Value 4
Set Key command
0
137
0
0
A1
A2
A3
A4
121

A1:  User chooses any number between 1 and 254, 0 and 255 not allowed.
A2:  User chooses any number between 1 and 254, 0 and 255 not allowed.
A3:  User chooses any number between 1 and 254, 0 and 255 not allowed.
A4:  User chooses any number between 1 and 254, 0 and 255 not allowed.

After sending this command the next ReadData returns four values in byte position 5, 6, 7, and 8 (see X-keys 128 Input Reports number 4) that will be needed to continue with the hardware check of the key.  Non PC users please contact P. I. Engineering for further details.

X-keys 84 Key Keyboard Data Report

General Information

VID 05f3h
PID (w Magnetic Strip Reader ) 0308h or 776
PID (w/o Reader )

0309h or 777

PID (w Bar Code Reader ) 030Ah or 778
Consumer Usage Page 1
Usage Page 000Ch or 12

X-keys 84 Key Keyboard Input Report

The following types of input reports are available; General Incoming Data, Bar Code or Magnetic Strip Data, Descriptor and Check Key.

X-keys 84 Key Keyboard

Figure 2: X-keys 84 Key Keyboard key reference.

Endpoint: 1, consumer usage page

Report Length: 32 bytes.

1.  General Incoming Data

This is received when keys are pressed, position of the 8 Position Locking Switch changes, Unit ID or input on the Footpedal (RJ11) port is detected. 

Byte 1
Byte 2
Byte 3
Byte 4
Bytes 5-20
Bytes 21-31
Byte 32
Constant
Foot pedal (RJ11) Port
8 Position Locking Switch
Data Type Designation
Columns
A to L
Reserved
Unit ID
(0-255)
0
Digital1
Digital2
Value
Digital3
0
<data>

Digital1:  For all bits 0 if pedal is up, 1 if pedal is down.  Bit 1=Left pedal, Bit 2=Middle peddle, Bit 3= Right pedal.
Digital2:  Bit 1=Position 0, Bit 2=Position 2, Bit 3=Position 3, Bit 4=Position 4, Bit 5=Position 5, Bit 6=Position 6, Bit 7=Position 7, Bit 8=Position 1
Value: 122 (7Ah) for general incoming data, 121 (79h) for check dongle,
Digital3:  For all bits 0 if key is up, 1 if key is down.  Bits 1 to 7 correspond to rows 1-7 respectively of the given column.  For example Byte 5 gives the state of A1, A2, A3, A4, A5, A6 and A7.  A value of 67 in this byte would indicate that A1, A2 and A7 are pressed.

2.  Barcode or Magnetic Strip Data 

This data is received when a valid card is swiped through the barcode or magnetic strip reader. 

Byte 1
Byte 2
Byte 3
Byte 4
Bytes 5-31
Byte 32
Constant
Always 0
Always 0
Message Length
Message Data
Unit ID (0-255)
0
0
0
MsgLen
MsgData
<data>
 

3. Descriptor

The descriptor contains information about the device.  The descriptor is received after a Request for Descriptor output report is sent, see Output Reports below.

Byte 1
Byte 2
Byte 3
Byte 4
Byte 5
Byte 6
Byte 7
Byte 8
Byte 9
Byte 10
Byte 11
Bytes 12-32
Constant
Vendor ID high
Vendor ID low
PID high
PID low
Rev high
Rev low
Unit ID
Read Report Length
Write Report Length
Report Rate
Reserved
0
5
243 (F3h)
3
PIDlow
RevH
RevL
<data>
32
9
RR
0 or value

PIDlow: The low byte of the PID (Product ID) which for the X-keys 128 with barcode reader is 7. To calculate PID=PID high*256+PIDlow =3*256+7=775 or 307h.
REVH
:  Bit 8=1 always.  Bits 1 to 7 are the high byte of the chip firmware revision.
REVL:  The low byte of the chip firmware revision.
RR:  The report rate is how often data is spontaneously refreshed if nothing is “forcing” a refresh such as pressing keys or sliding cards.  The X-keys 128 and 84 devices have a report rate of 32 which equates to approximately 500ms.

4. Check Key 

This message is received after the output report number 7 (see X-keys 84 Output Report number 7) is sent.  The four values in bytes 4, 5, 6 and 7 are required to continue the check.  Non PC users please contact P. I. Engineering for further details.

Byte 1
Byte 2
Byte 3
Byte 4
Byte 5
Byte 6
Byte 7
Byte 8
Bytes 9-32
Constant
Reserved
Reserved
Check Key
B1 value
B2 value
B3 value
B4 value
Reserved
0
0
0
121 (79h)
B1
B2
B3
B4
0 or value

B1:  Value need for comparison to check for correct dongle key.
B2:  Value need for comparison to check for correct dongle key.
B3:  Value need for comparison to check for correct dongle key.
B4:  Value need for comparison to check for correct dongle key.

X-keys 84 Key Keyboard Output Report

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

Report Length: 9 bytes.

Report
Format
Description
1
0*, 150, LEDS, 0, 0, 0, 0, 0, 0 Set LEDs
2
0*, 137, 137, 0, 0, 0, 0, UnitID, 16 Set Unit ID
3
0*, 137, 137, 0, 0, 0, 0, 0, 132 Request Descriptor
4
0*, 137, 137, 0, 0, 0, 0, BeepCtrl, 18 Beep on keypress
5
0*, 151, PR2, DR2, 0, 0, 0, 0, 0  

Beep device at specified period and duration

*In most cases this number is 0.  This number is read from the input report.           

1. Set LED State

Byte 1
Byte 2
Byte 3
Byte 4
Byte 5
Byte 6
Byte 7
Byte 8
Byte 9
Constant
LED Command
LED state
Constant
Constant
Constant
Constant
Constant
Constant
0
150
LEDs
0
0
0
0
0
0

LEDs:  Bit 1=LED for Function 1, bit 2=LED for Function 2, bit 3=LED for Function 3, bit 4=LED for Function 4, bit 5=0, bit 6=0, bit 7= 0, bit 8=0.
Example:  A value of 7=1+2+4 would turn on the Function 1, 2 and 3 LEDs.

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

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

3. Request Descriptor

After sending this command the next ReadData or callback notification will be the descriptor data as described in Input Report 3., see above.

Byte 1
Byte 2
Byte 3
Byte 4
Byte 5
Byte 6
Byte 7
Byte 8
Byte 9
Constant
General Command
General Command
Constant
Constant
Constant
Constant
Constant
Request Descriptor
0
137
137
0
0
0
0
0
134

4. Beep on keypress

Byte 1
Byte 2
Byte 3
Byte 4
Byte 5
Byte 6
Byte 7
Byte 8
Byte 9
Constant
General Command
General Command
Constant
Constant
Constant
Constant
Beep Control
Constant
0
137
137
0
0
0
0
BeepCtrl
18

BeepCtrl:  0=no beep, 1=beep.  Bit 3= auto beep if key is pressed.

5. Beep at specified period and duration

Byte 1
Byte 2
Byte 3
Byte 4
Byte 5
Byte 6
Byte 7
Byte 8
Byte 9
Constant
Beep Command
Period of beep
Duration of beep
Constant
Constant
Constant
Constant
Constant
0
151
PR2
DR2
0
0
0
0
0

PR2:  PR2=period/0.000016-1, the lower the value of PR2 the higher frequency will be the beep.
DR2:  Duration=DR2*0.016 in seconds.