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