MagTek

Mini Swipe - Uncategorized MagTek - Free user manual and instructions

Find the device manual for free Mini Swipe MagTek in PDF.

📄 62 pages English EN Download 💬 AI Question
Notice MagTek Mini Swipe - page 2
Pick your language and provide your email: we'll send you a specifically translated version.

User questions about Mini Swipe MagTek

0 question about this device. Answer the ones you know or ask your own.

Ask a new question about this device

The email remains private: it is only used to notify you if someone responds to your question.

No questions yet. Be the first to ask one.

Download the instructions for your Uncategorized in PDF format for free! Find your manual Mini Swipe - MagTek and take your electronic device back in hand. On this page are published all the documents necessary for the use of your device. Mini Swipe by MagTek.

USER MANUAL Mini Swipe MagTek

Technical Support: (651) 415-6800

www.magtek.com

MagTek ^® , Inc.

Printed in the United States of America

Information in this document is subject to change without notice. No part of this document may be reproduced or transmitted in any form or by any means, electronic or mechanical, for any purpose, without the express written permission of MagTek, Inc.

MagTek is a registered trademark of MagTek, Inc.

USB (Universal Serial Bus) Specification is Copyright © 1998 by Compaq Computer Corporation, Intel Corporation, Microsoft Corporation, NEC Corporation.

Appendix A is taken from Universal Serial Bus HID Usage Tables, Version 1.12, Section 10, Keyboard/Keypad Page (0x07) ©1996-2005 USB Implementers' Forum

Appendix B is taken from Section 8.3 Report Format for Array Items, Device Class Definition for Human Interface Devices (HID) Version 1.11, ©1996-2001 USB Implementers' Forum, hidcomments@usb.org

REVISIONS

Rev NumberDateNotes
128 Aug 01Initial Release
211 Sep 01Sec 1: Removed Hardware Configurations P/Ns 210-40108, 40110, 40111, 40112.
305 Oct 01Removed HID from Title Page
412 Dec 02Section 4, Command Number: Corrected GET and SET PROPERTY descriptions
528 Jan 03Changed copyright symbol so pdf copies would print on all printers
603 Jun 03Front Matter: added ISO line to logo, changed Tech Support phone number, added new warranty statement.
79 Oct 03Sec 5: replaced third paragraph with “Demo programs, version 1.2.0 and newer...”
822 Jan 04Sec 1: Replaced third paragraph, p. 1, with current entry
917 May 05Included references to new commands added after June 2005. Replaced all of Section 4
1008 Aug 05Sec 4, To, ASCII to Keypress Conversion Type Property, added Active Keymap Property statement. To Get KeyMap Item Command and Set KeyMap Item Command, added the paragraph, “Starting with the firmware release...”
1112 Sep 05Added Appendices A and B, USB and HID Usage Table and Device Class Definitions Table
1230 Aug 06Added dual head models 21040145 and 21040147
1319 Mar 07Add SureSwipe title and content
1414 Sep 07Corrected default setting for polling interval to 1ms
1514 Jan 09Added ES_TK1, ES_TK2 and ES_TK3 properties; Added JIS type 2 decoding option.
1617 Jun 09Updated Limited Warranty and Agency approvals. Added Pan_Name_Date_Enable and Post_Tk_Char_Enable Property.

LIMITED WARRANTY

MagTek warrants that the products sold pursuant to this Agreement will perform in accordance with MagTek's published specifications. This warranty shall be provided only for a period of one year from the date of the shipment of the product from MagTek (the “Warranty Period”). This warranty shall apply only to the “Buyer” (the original purchaser, unless that entity resells the product as authorized by MagTek, in which event this warranty shall apply only to the first repurchaser).

During the Warranty Period, should this product fail to conform to MagTek's specifications, MagTek will, at its option, repair or replace this product at no additional charge except as set forth below. Repair parts and replacement products will be furnished on an exchange basis and will be either reconditioned or new. All replaced parts and products become the property of MagTek. This limited warranty does not include service to repair damage to the product resulting from accident, disaster, unreasonable use, misuse, abuse, negligence, or modification of the product not authorized by MagTek. MagTek reserves the right to examine the alleged defective goods to determine whether the warranty is applicable.

Without limiting the generality of the foregoing, MagTek specifically disclaims any liability or warranty for goods resold in other than MagTek's original packages, and for goods modified, altered, or treated without authorization by MagTek.

Service may be obtained by delivering the product during the warranty period to MagTek (1710 Apollo Court, Seal Beach, CA 90740). If this product is delivered by mail or by an equivalent shipping carrier, the customer agrees to insure the product or assume the risk of loss or damage in transit, to prepay shipping charges to the warranty service location, and to use the original shipping container or equivalent. MagTek will return the product, prepaid, via a three (3) day shipping service. A Return Material Authorization (“RMA”) number must accompany all returns. Buyers may obtain an RMA number by contacting Technical Support at (888) 624-8350.

EACH BUYER UNDERSTANDS THAT THIS MAGTEK PRODUCT IS OFFERED AS IS. MAGTEK MAKES NO OTHER WARRANTY, EXPRESS OR IMPLIED, AND MAGTEK DISCLAIMS ANY WARRANTY OF ANY OTHER KIND, INCLUDING ANY WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.

IF THIS PRODUCT DOES NOT CONFORM TO MAGTEK'S SPECIFICATIONS, THE SOLE REMEDY SHALL BE REPAIR OR REPLACEMENT AS PROVIDED ABOVE. MAGTEK'S LIABILITY, IF ANY, SHALL IN NO EVENT EXCEED THE TOTAL AMOUNT PAID TO MAGTEK UNDER THIS AGREEMENT. IN NO EVENT WILL MAGTEK BE LIABLE TO THE BUYER FOR ANY DAMAGES, INCLUDING ANY LOST PROFITS, LOST SAVINGS, OR OTHER INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OF, OR INABILITY TO USE, SUCH PRODUCT, EVEN IF MAGTEK HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES, OR FOR ANY CLAIM BY ANY OTHER PARTY.

LIMITATION ON LIABILITY

EXCEPT AS PROVIDED IN THE SECTIONS RELATING TO MAGTEK'S LIMITED WARRANTY, MAGTEK'S LIABILITY UNDER THIS AGREEMENT IS LIMITED TO THE CONTRACT PRICE OF THIS PRODUCT.

MAGTEK MAKES NO OTHER WARRANTIES WITH RESPECT TO THE PRODUCT, EXPRESSED OR IMPLIED, EXCEPT AS MAY BE STATED IN THIS AGREEMENT, AND MAGTEK DISCLAIMS ANY IMPLIED WARRANTY, INCLUDING WITHOUT LIMITATION ANY IMPLIED WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.

MAGTEK SHALL NOT BE LIABLE FOR CONTINGENT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES TO PERSONS OR PROPERTY. MAGTEK FURTHER LIMITS ITS LIABILITY OF ANY KIND WITH RESPECT TO THE PRODUCT, INCLUDING ANY NEGLIGENCE ON ITS PART, TO THE CONTRACT PRICE FOR THE GOODS.

MAGTEK'S SOLE LIABILITY AND BUYER'S EXCLUSIVE REMEDIES ARE STATED IN THIS SECTION AND IN THE SECTION RELATING TO MAGTEK'S LIMITED WARRANTY.

FCC WARNING STATEMENT

This equipment has been tested and was found to comply with the limits for a Class B digital device pursuant to Part 15 of FCC Rules. These limits are designed to provide reasonable protection against harmful interference when the equipment is operated in a residential environment. This equipment generates, uses, and can radiate radio frequency energy and, if not installed and used in accordance with the instruction manual, may cause harmful interference with radio communications. However, there is no guarantee that interference will not occur in a particular installation.

FCC COMPLIANCE STATEMENT

This device complies with Part 15 of the FCC Rules. Operation of this device is subject to the following two conditions: (1) this device may not cause harmful interference, and (2) this device must accept any interference received, including interference that may cause undesired operation.

CANADIAN DOC STATEMENT

This digital apparatus does not exceed the Class B limits for radio noise from digital apparatus set out in the Radio Interference Regulations of the Canadian Department of Communications.

This Class B digital apparatus complies with Canadian ICES-003.

Testing for compliance with CE requirements was performed by an independent laboratory. The unit under test was found compliant with standards established for Class B devices.

UL/CSA

This product is recognized per Underwriter Laboratories and Canadian Underwriter Laboratories 1950.

RoHS STATEMENT

When ordered as RoHS compliant, this product meets the Electrical and Electronic Equipment (EEE) Reduction of Hazardous Substances (RoHS) European Directive 2002/95/EC. The marking is clearly recognizable, either as written words like “Pb-free”, “lead-free”, or as another clear symbol ( 6 ).

TABLE OF CONTENTS

SECTION 1. FEATURES AND SPECIFICATIONS....1

USB KB SWIPE READER 1

USB KB SURESWIPE 1

FEATURES 2

HARDWARE CONFIGURATIONS .... 3

ACCESSORIES 3

REFERENCE DOCUMENTS 3

SPECIFICATIONS......4

SECTION 2. INSTALLATION....7

USB CONNECTION 7

WINDOWS PLUG AND PLAY SETUP 8

MOUNTING 8

SECTION 3. OPERATION....11

LED INDICATOR 11

CARD READ 11

SECTION 4. USB COMMUNICATIONS....13

HOST APPLICATIONS....13

CARD DATA 13

PROGRAMMABLE CONFIGURATION OPTIONS 15

LOW LEVEL COMMUNICATIONS....15

HID USAGES....16

REPORT DESCRIPTOR 16

COMMANDS....17

COMMAND NUMBER 18

DATA LENGTH....18

DATA....18

RESULT CODE 18

GET AND SET PROPERTY COMMANDS....19

SOFTWARE ID PROPERTY 20

SERIAL NUM PROPERTY 21

POLLING INTERVAL PROPERTY 22

TRACK ID ENBLE PROPERTY 23

TRACK DATA SEND FLAGS PROPERTY 24

TERMINATION CHAR PROPERTY 25

SS_TK2_7BITS PROPERTY 25

SS TK3 ISO ABA PROPERTY 26

SS_TK3_AAMVA PROPERTY 26

SS_TK3_7BITS PROPERTY 26

PRE_CARD_CHAR_PROPERTY 27

POST CARD CHAR PROPERTY 27

PRE TK CHAR PROPERTY 27

POST TK CHAR PROPERTY 28

ASCII TO KEYPRESS_CONVERSION_TYPE PROPERTY 28

INTERFACE TYPE PROPERTY 29

ACTIVE KEYMAP PROPERTY 30

PRE CARD STRING PROPERTY 31

POST CARD STRING PROPERTY 32

SS TK1 ISO ABA PROPERTY 32

SS TK2 ISO ABA PROPERTY 33

ES PROPERTY 33

ES_TK1 PROPERTY 33

ES TK2 PROPERTY 34

ES TK3 PROPERTY 34

DECODE ENABLE PROPERTY 35

SS JIS TYPE 2 PROPERTY....36

ES JIS TYPE 2 PROPERTY....36

PAN NAME DATE ENABLE PROPERTY 36

POST_TK_CHAR_ENABLE PROPERTY 38

RESET_DEVICE COMMAND....38

GET_KEYMAP_ITEM COMMAND 39

SET_KEYMAP_ITEM COMMAND 40

SAVE_CUSTOM_KEYMAP COMMAND....42

SECTION 5. DEMO PROGRAM....43

INSTALLATION 43

OPERATION 43

SOURCE CODE 44

APPENDIX A. USAGE ID DEFINITIONS....45

KEYBOARD/KEYPAD PAGE (0X07) 45

APPENDIX B. MODIFIER BYTE DEFINITIONS ....53

FIGURES AND TABLES

Figure 1-1. USB Swipe Reader ---- viii

Table 1-1. Specifications ---- 4

Figure 1-2. Dimensions----5

Figure 2-1. Reader Cable and Connector----7

Table 2-1. 4-Pin Connector 7

Figure 2-2. Mounting Hole Dimensions for Surface 9

Table A-1. Keyboard/Keypad 45

Table B-1. Modifier Byte 53

MagTek Mini Swipe - FIGURES AND TABLES - 1

text_image 10mm 7.3M 5J8 1.8M 3J8 415 M6 2024 361 486 G010 1924

Figure 1-1. USB Swipe Reader

SECTION 1. FEATURES AND SPECIFICATIONS

USB KB SWIPE READER

The USB (Universal Serial Bus) Keyboard Emulation Swipe Reader is a compact magnetic stripe card reader with a single read head that conforms to ISO standards. The Reader is compatible with any device with a USB interface. A card is read by sliding it, stripe down and facing the LED side, through the slot either forward or backward.

A LED (Light Emitting Diode) indicator on the Reader panel provides the operator with continuous status of the Reader operations.

The Reader emulates a USB Human Interface Device (HID) United States keyboard or optionally all international keyboards using ALT ASCII code keypad key combinations or customizable key maps. This allows host applications designed to acquire card data from keyboard input to seamlessly acquire the card data from the USB swipe reader.

Caution

If another keyboard is connected to the same host as this device and a key is pressed on the other keyboard while this device is transmitting, then the data transmitted by this device may get corrupted.

Because of potential “data interleave” issues associated with the USB Keyboard interface, MagTek recommends that the USB Keyboard Emulation MSR product should only be used if the application requires magnetic stripe data to be provided via the keyboard input. If previous applications were based upon RS-232 serial interface magnetic stripe readers, or if this is a brand new development effort, it is recommended that you use the MagTek’s “standard version” of the USB HID MSR. (Refer to Technical Manual 99875191 for further information regarding the USB HID MSR.)

USB KB SURESWIPE

The USB KB SureSwipe is a card reader with two magnetic heads. The SureSwipe reader was designed specifically to read any magnetic stripe card regardless of which way the magnetic stripe is facing when swiped. The SureSwipe's dual heads provide convenience for the user by eliminating the confusion when swiping a card.

In all other regards, the SureSwipe reader is technically equivalent to the single-head USB KB Swipe reader described above. All technical specifications described in this manual are applicable to both types of readers.

The SureSwipe readers have specific part numbers and they are described in a table in the “Hardware Configurations” section below.

FEATURES

Major features of the Swipe Reader are as follows:

  • Powered through the USB – no external power supply required
  • Hardware Compatible with PC or any computer or terminal with a USB interface
  • Bidirectional card reading
  • Reads encoded data that meets ANSI/ISO/AAMVA/JIS Type 2 standards and others such as ISO track 1 format on track 2 or 3
  • Reads up to three tracks of card data
  • LED for status
  • Compatible with USB specification Revision 1.1
  • Compatible with HID specification Version 1.1
  • Can use standard Windows drivers for communications. No third part device driver is required.
  • Many programmable configuration options
    • Non-volatile memory for configuration storage
    • Built-in 6 foot USB cable
  • Ability to convert to HID mode of operation (new in June 2005)

Note

New features have been added to the Keyboard Emulation Swipe Reader. The following commands were added to most readers that are shipped after June 1, 2005:

ASCII_TO_KEYPRESS_CONVERSION_TYPE PROPERTY

INTERFACE_TYPE PROPERTY

ACTIVE KEYMAP PROPERTY

PRE CARD STRING PROPERTY

POST CARD STRING PROPERTY

SS TK1 ISO ABA PROPERTY

SS TK2 ISO ABA PROPERTY

ES PROPERTY

RESET_DEVICE COMMAND

GET KEYMAP ITEM COMMAND

SET KEYMAP ITEM COMMAND

SAVE_CUSTOM_KEYMAP COMMAND

In order to determine if these features are available, request the SOFTWARE_ID property. If the software ID string shows “21042804xxx”, the new features are NOT available. If the software string shows “21042812xxx” or “21042818xxx”, then these new features are supported.

HARDWARE CONFIGURATIONS

The hardware configurations for the USB KB Swipe Reader are as follows:

Part NumberTracksColorCableHeads
21040107TK 1,2,3Pearl White6' USB-ASingle
21040108TK 1,2,3Black6' USB-ASingle
21040109TK 1,2Pearl White6' USB-ASingle
21040110TK 1,2Black6' USB-ASingle
21040122TK 1,2Black5.5" USB-ASingle
21040123TK 1 (no SS/ES)Black6' USB-ASingle

The hardware configurations for the USB KB SureSwipe are as follows:

Part NumberTracksColorCableHeads
21040145TK 1,2,3Black6' USB-ADual
21040147TK 1,2,3Pearl White6' USB-ADual

ACCESSORIES

The accessories are as follows:

Part NumberDescription
21042806USB MSR Demo Program with Source Code (Diskette)
99510026USB MSR Demo Program with Source Code (WEB)

REFERENCE DOCUMENTS

MagTek USB HID Swipe Reader, Technical Reference Manual (99875191)

Axelson, Jan. USB Complete, Everything You Need to Develop Custom USB Peripherals, 1999. Lakeview Research, 2209 Winnebago St., Madison WI 53704, 396pp., http://www.lvr.com.

USB Human Interface Device (HID) Class Specification Version 1.1.

Universal Serial Bus (USB): HID Usage Tables Version 1.12 (1/21/2005)

USB (Universal Serial Bus) Specification, Version 1.1, Copyright© 1998 by Compaq Computer Corporation, Intel Corporation, Microsoft Corporation, NEC Corporation.

USB Implementers Forum, Inc., www.usb.org.

SPECIFICATIONS

Table 1-1 lists the specifications for the USB Swipe Reader. Figure 1-2 shows the dimensions for the standard product.

Table 1-1. Specifications

Reference StandardsISO 7810, ISO 7811, AAMVA and JIS X 6302*
Power Input5V From USB bus
Recording MethodTwo-frequency coherent phase (F2F)
Message FormatASCII
Card Speed3 to 60 ips (7.62 – 152.4 cm/s)

ELECTRICAL

CurrentNormal ModeSuspend Mode15 mA200 uA

MECHANICAL

Size
Length3.94" (100.0mm)
Width1.28" (32.5mm)
Height1.23" (31.3mm)
Weight4.5 oz. (127.57 g)
Cable length6 ft. (1.8m)
ConnectorUSB Type A plug

ENVIRONMENTAL

Temperature
Operating-40 °C to 70 °C (-40 °F to 158 °F)
Storage-40 °C to 70 °C (-40 °F to 158 °F)
Humidity
Operating10% to 90% noncondensing
Storage10% to 90% noncondensing
Altitude
Operating0-10,000 ft. (0-3048 m.)
Storage0-50,000 ft. (0-15240 m.)

* ISO (International Standards Organization) and AAMVA (American Association of Motor Vehicle Administrators) and JIS (Japanese Industrial Standard).

MagTek Mini Swipe - SPECIFICATIONS - 1

text_image 1.28" (30.5mm) 3.94" (100.0mm)

Figure 1-2. Dimensions

SECTION 2. INSTALLATION

This section describes the cable connection, the Windows Plug and Play Setup, and the physical mounting of the unit.

USB CONNECTION

Connect the USB cable to a USB port on the host. The Reader, LED Indicator, and pin numbers for the 4-pin connector are shown in Figure 2-1.

MagTek Mini Swipe - USB CONNECTION - 1

text_image LED Indicator

Figure 2-1. Reader Cable and Connector

Pin numbers and signal descriptions for the cable shown in the illustration are listed in Table 2-1.

Table 2-1. 4-Pin Connector

Pin NumberSignalCable Color
1VBUSRed
2- DataWhite
3+DataGreen
4GroundBlack

WINDOWS PLUG AND PLAY SETUP

On hosts with the Windows operating system, the first time the device is plugged into a specific USB port, Windows will pop up a dialog box, which will guide you through the process of installing a device driver for the device. After this process is completed once, Windows will no longer request this process as long as the device is plugged into the same USB port. The device driver that Windows will install for this device is the driver used for HID keyboard devices and it is part of the Windows operating system. When the dialog box pops up, follow the instructions given in the dialog box. Sometimes Windows will find all the files it needs. Other times Windows will need to know the location of the files it needs. If Windows prompts for the file locations, insert the CD that was used to install Windows on your PC and point Windows to the root directory of the CD. Windows should find all the files it needs there.

MOUNTING

The Reader may be mounted with screws or fastening tape as described below.

Caution

The Reader should be mounted such that the bottom (mounting side) is not exposed to the user. This is because the mounting side of the reader may be susceptible to electrostatic discharge.

  1. The Reader can be mounted on a surface in various ways:

  2. By two screws through the surface attached to the bottom of the unit and running the cable on the top of the surface

  3. By two screws through the surface attached to the bottom of the unit and by drilling a hole in the surface for the cable and running the cable through the hole
  4. By attaching the unit to the surface with fastening tape and running the cable on the top of the surface.

Note

The two mounting inserts are 3mm diameter, 0.5mm pitch, 6.4mm deep. The length of the screws used depends on the mounting surface thickness and the thickness of washers (if used).

The mounting dimensions are shown in Figure 2-2. Determine the method of mounting required.

MagTek Mini Swipe - Note - 1

text_image 3.84 (100.0) .16 (4.0) Diameter .142 (3.6) 2 Pieces .14 (3.5) 1.58 (36.0) Cut Required Only II Cable Flouted Through Surfaces .63 (16.0) .17 (4.2) 1.28 (32.5) .69 (16.0) .16 (4.0) 3.62 (32.0) Not To Scale 2.84 = Inches (100.0) = Millimeters

Figure 2-2. Mounting Hole Dimensions for Surface

  1. Ensure the Reader is positioned on a flat, accessible surface with at least 4 inches clearance on either end for room to swipe a card. Orient the Reader so the side with the LED is facing the direction of intended use.

If fastening tape is to be used, clean the area that the Reader will be mounted on with isopropyl alcohol. Remove the adhesive protective cover on the fastening tape, and position the Reader and push down firmly.

  1. Mount the Reader.

This section describes the LED Indicator and Card Read.

LED INDICATOR

The LED indicator will be either off, red, or green. When the device is not powered, the LED will be off. When the device is first plugged in, the LED will be red. As soon as the device is plugged in, the host will try to enumerate the device. Once the device is enumerated the LED will turn green indicating that the device is ready for use. When a card is being swiped, the LED will turn off temporarily until the swipe is completed. If there are no errors after decoding the card data then the LED will turn green. If there are any errors after decoding the card data, the LED will turn red for approximately two seconds to indicate that an error occurred and then turn green. Anytime the host puts the device into suspend mode, the LED will turn off. Once the host takes the device out of suspend mode, the LED will return to the state it was in prior to entering suspend mode.

CARD READ

A card may be swiped through the Reader slot when the LED is green.

When using a USB KB Swipe Reader (with a single head), the magnetic stripe must face toward the front (the side with the LED) and may be swiped in either direction.

When using a USB KB SureSwipe reader (with dual heads), the magnetic stripe can face toward the front or the back, and may be swiped in either direction.

If there is data encoded on the card, the reader will attempt to decode the data and then send the results to the host as if the data was being typed on a keyboard. After the results are sent to the host, the device will be ready to read the next card.

SECTION 4. USB COMMUNICATIONS

This device conforms to the USB specification revision 1.1. This device also conforms with the Human Interface Device (HID) class specification version 1.1. The device communicates to the host as a HID keyboard device. The latest versions of the Windows operating systems come with a standard Windows USB HID keyboard driver.

This is a full speed USB device. This device has a number of programmable configuration properties. These properties are stored in non-volatile memory. These properties can be configured at the factory or by the end user. The device has an adjustable endpoint descriptor polling interval value that can be set to any value in the range of 1ms to 255ms. This property can be used to speed up or slow down the card data transfer rate. The device also has an adjustable serial number descriptor. More details about these properties can be found later in this document in the command section.

The device will go into suspend mode when directed to do so by the host. The device will wake up from suspend mode when directed to do so by the host. The device does not support remote wakeup.

This device is powered from the USB bus. The vendor ID is 0x0801 and the product ID is 0x0001.

HOST APPLICATIONS

This device can be used with existing applications that acquire card data via keyboard input. Also, applications that communicate to this device can be easily developed. These applications can be developed using compilers such as Microsoft's Visual Basic or Visual C++. To demonstrate this device's card reading capabilities any application that accepts keyboard input such as Window's Notepad can be used.

CARD DATA

The card data is converted to ASCII and transmitted to the host as if it had been typed on a keyboard. Any data with ASCII values 0 – 31 or 127 will be transmitted as their equivalent control code combination. For example a carriage return value 13 (0x0D) will be sent as (^M) where ^ represents the Ctrl key on the keyboard.

Caution

If another keyboard is connected to the same host as this device and a key is pressed on the other keyboard while this device is transmitting, then the data transmitted by this device may get corrupted.

Because of potential “data interleave” issues associated with the USB Keyboard interface, MagTek recommends that the USB Keyboard Emulation MSR product should only be used by customers who have previously used MagTek’s Keyboard Wedge MSR, or who are interfacing with an existing PC software application which gathers card data from the keyboard port. If previous applications were based upon RS-232 serial interface MSRs, or if this is a brand new development effort, it is recommended that you use the MagTek’s USB MSR (Non-Keyboard Emulation Version). Refer to Technical Manual 99875191 for further information regarding the USB HID reader.

The device's programmable configuration options affect the format of the card data.

The card data format for the default configuration is as follows:

[Tk1 SS] [Tk1 Data] [ES] [Tk2 SS] [Tk2 Data] [ES] [Tk3 SS] [Tk3 Data] [ES] [CR]
where: Tk1 SS = % (7-bit start sentinel) Tk2 SS = ; (ISO/ABA 5-bit start sentinel) @ (7-bit start sentinel) DEL (0x7F) (JIS type 2 start sentinel)* Tk3 SS = + (ISO/ABA start sentinel)

(AAMVA start sentinel)

& (7-bit start sentinel) ES = ? (end sentinel for all formats except JIS type 2) DEL (0x7F) (JIS type 2 end sentinel)* CR = (carriage return) (0x0D)

  • Before the JIS type 2 encode type can be decoded, decoding must be enabled with the decode enable property. The JIS type 2 decoding option was not added until firmware with software ID 21042812K01 was release in October 2008. Some applications may not work well with the JIS type 2 format because this format allows ASCII characters in the non-printable range (0x00 - 0x1F and 0x7F).

All data will be sent in upper case regardless of the state of the caps lock key on the keyboard. If no data is detected on a track then nothing will be transmitted for that track. If an error is detected on a track the ASCII character E will be sent in place of the track data to indicate an error.

The card data format for all programmable configuration options is as follows:

[P18][P11] [P13] [Tk1 SS] [Tk1 Data] [ES] [LRC] [P14] [P5] [P13] [Tk2 SS] [Tk2 Data] [ES] [LRC] [P14] [P5] [P13] [Tk3 SS] [Tk3 Data] [ES] [LRC] [P14] [P5] [P12][P19]

where:

ES = P22 (end sentinel)

LRC = Longitudinal redundancy check character

P5 = Terminating character

P11 = Pre card character

P12 = Post card character

P13 = Pre track character

P14 = Post track character

P18 = Pre card string

P19 = Post card string

Tk1 SS = P20 (ISO/ABA start sentinel)

Tk2 SS= P21 (ISO/ABA 5-bit start sentinel)

P6 (7-bit start sentinel)

Tk3 SS = P8 (ISO/ABA start sentinel)

P9 (AAMVA start sentinel)

P10 (7-bit start sentinel)

All fields with the format P# are programmable configuration property numbers. They are described in detail later in this document.

PROGRAMMABLE CONFIGURATION OPTIONS

This device has a number of programmable configuration properties. These properties are stored in non-volatile memory. These properties can be configured at the factory or by the end user using a program supplied by MagTek. Programming these parameters requires low level communications with the device. During normal device operation, the device acts like a USB HID keyboard so the host operating system takes care of all low level communications with the device so that the application developer is not burdened with these low level details. Details on how to communicate with the device to change programmable configuration properties follows in the next few sections. These details are included as a reference only. Most users will not need to know these details because the device will be configured at the factory or by a program supplied by MagTek. Most users may want to skip over the next few sections on low level communications and continue with the details of the configuration properties.

LOW LEVEL COMMUNICATIONS

It is strongly recommended that application software developers become familiar with the HID specification the USB specification before attempting to communicate directly with this device. This document assumes that the reader is familiar with these specifications. These specifications can be downloaded free from www.usb.org.

HID USAGES

HID devices send data in reports. Elements of data in a report are identified by unique identifiers called usages. The structure of the device's reports and the device's capabilities are reported to the host in a report descriptor. The host usually gets the report descriptor only once, right after the device is plugged in. The report descriptor usages identify the devices capabilities and report structures. For example, a device could be identified as a keyboard by analyzing the device's report descriptor. Usages are four byte integers. The most significant two bytes are called the usage page and the least significant two bytes are called usage IDs. Usages that are related can share a common usage page. Usages can be standardized or they can be vendor defined. Standardized usages such as usages for mice and keyboards can be found in the HID Usage Tables document and can be downloaded free at www.usb.org. Vendor defined usages must have a usage page in the range 0xFF00 – 0xFFFF. All usages for this device use the standard HID keyboard usages or vendor defined magnetic stripe reader usage page 0xFF00. The vendor defined usage IDs for this device are defined in the following table. The usage types are also listed. These usage types are defined in the HID Usage Tables document.

Magnetic Stripe Reader usage page 0xFF00:

Usage ID (Hex)Usage NameUsage TypeReport Type
20Command messageDataFeature

REPORT DESCRIPTOR

The HID report descriptor is structured as follows:

ItemValue(Hex)
Usage Page (Generic Desktop) 05 01
Usage (Keyboard) 09 06
Collection (Application) A1 01
Usage Page (Key Codes) 05 07
Usage Minimum (224) 19 E0
Usage Maximum (231) 29 E7
Logical Minimum (0) 15 00
Logical Maximum (1) 25 01
Report Size (1)75 01
Report Count (8)95 08
Input (Data, Variable, Absolute)81 02
Report Count (1)95 01
Report Size (8)75 08
Input (Constant)81 03
Report Count (5)95 05
Report Size (1)75 01
Usage Page (LEDs)05 08
Usage Minimum (1)19 01
Usage Maximum (5) 29 05
Output (Data, Variable, Absolute)91 02
Report Count (1)95 01
Report Size (3)75 03
Output (Constant)91 03
Report Count (6)95 06
Report Size (8)75 08
Logical Minimum (0)15 00
Logical Maximum (101)25 66
Usage Page (Key Codes)05 07
Usage Minimum (0)19 00
Usage Maximum (101)29 66
Input (Data, Array)81 00
Logical Maximum (255)26 FF 00
Usage Page (vendor defined (MSR))06 00 FF
Usage (command data)09 20
Report Count95 18
Feature (Data, Variable, Absolute, Buffered Bytes)B2 02 01
End CollectionC0

COMMANDS

Command requests and responses are sent to and received from the device using feature reports. Command requests are sent to the device using the HID class specific request Set_Report. The response to a command is retrieved from the device using the HID class specific request Get_Report. These requests are sent over the default control pipe. When a command request is sent, the device will Nak the Status stage of the Set_Report request until the command is completed. This insures that as soon as the Set_Report request is completed, the Get_Report request can be sent to get the command response. The usage ID for the command message was shown previously in the Usage Table.

The following table shows how the feature report is structured for command requests:

OffsetField Name
0Command Number
1Data Length
2 – 23Data

The following table shows how the feature report is structured for command responses.

OffsetField Name
0Result Code
1Data Length
2 – 23Data

COMMAND NUMBER

This one-byte field contains the value of the requested command number. The following table lists all the existing commands.

Value (Hex)Command NumberDescription
00GET_PROPERTYGets a property from the device
01SET_PROPERTYSets a property in the device
02RESET_DEVICEResets the device
03GET_KEYMAP_ITEMGets a key map item
04SET_KEYMAP_ITEMSets a key map item
05SAVE_CUSTOM_KEYMAPSaves the custom key map

DATA LENGTH

This one-byte field contains the length of the valid data contained in the Data field.

DATA

This multi-byte field contains command data if any. Note that the length of this field is fixed at 22 bytes. Valid data should be placed in the field starting at offset 2. Any remaining data after the valid data should be set to zero. This entire field must always be set even if there is no valid data. The HID specification requires that Reports be fixed in length. Command data may vary in length. Therefore, the Report should be filled with zeros after the valid data.

RESULT CODE

This one-byte field contains the value of the result code. There are two types of result codes: generic result codes and command-specific result codes. Generic result codes always have the most significant bit set to zero. Generic result codes have the same meaning for all commands and can be used by any command. Command-specific result codes always have the most significant bit set to one. Command-specific result codes are defined by the command that uses them. The same code can have different meanings for different commands. Command-specific result codes are defined in the documentation for the command that uses them. Generic result codes are defined in the following table.

Value (Hex)Result CodeDescription
00SUCCESSThe command completed successfully.
01FAILUREThe command failed.
02BAD_PARAMETERThe command failed due to a bad parameter or command syntax error.

GET AND SET PROPERTY COMMANDS

The Get Property command gets a property from the device. The Get Property command number is 0x00.

The Set Property command sets a property in the device. The Set Property command number is 0x01.

The Get and Set Property command data fields for the requests and responses are structured as follows:

Get Property Request Data:

Data OffsetValue
0Property ID

Get Property Response Data:

Data OffsetValue
0 – nProperty Value

Set Property Request Data:

Data OffsetValue
0Property ID
1 – nProperty Value

Set Property Response Data: None

The result codes for the Get and Set Property commands can be any of the codes list in the generic result code table.

Property ID is a one-byte field that contains a value that identifies the property. The following table lists all the current property ID values:

Value (Hex)Property IDDescription
00SOFTWARE_IDThe device's software identifier
01SERIAL_NUMThe device's serial number
02POLLING_INTERVALThe interrupt pipe's polling interval
03TRACK_ID_ENABLETrack enable / ID enable
04TRACK_DATA_SEND_FLAGSTrack data send flags
05TERMINATION_CHARTerminating char / per track or card flag
06SS_TK2_7BITSStart sentinel char for track 2 – 7 bit data
07Reserved for future use
08SS_TK3_ISO_ABAStart sentinel char for track 3 – ISO/ABA
09SS_TK3_AAMVAStart sentinel char for track 3 - AAMVA
0ASS_TK3_7BITSStart sentinel char for track 3 – 7 bit data
0BPRE_CARD_CHARPre card char
0CPOST_CARD_CHARPost card char
0DPRE_TK_CHARPre track char
0EPOST_TK_CHARPost track char
0FASCII_TO_KEYPRESS_CONVERSION_TYPEType of conversion performed when converting ASCII data to key strokes
10INTERFACE_TYPEType of USB interface
11ACTIVE_KEYMAPSelects which key map to uses
12PRE_CARD_STRINGPre card string
13POST_CARD_STRINGPost card string
14SS_TK1_ISO_ABAStart sentinel char for track 1 – ISO/ABA
16SS_TK2_ISO_ABAStart sentinel char for track 2 – ISO/ABA
16ESEnd sentinel char for all tracks/formats except JIS type 2
17ES_TK1End sentinel char for track 1
18ES_TK2End sentinel char for track 2 except JIS type 2
19ES_TK3End sentinel char for track 3
1ADECODE_ENABLEEnables decoding for certain formats
1BSS_JIS_TYPE_2Start sentinel char for JIS type 2
1CES_JIS_TYPE_2End sentinel char for JIS type 2
1DPAN_NAME_DATE_ENABLEEnables PAN name data format
1EPOST_TK_CHAR_ENABLEEnables the post track character per track

The Property Value is a multiple-byte field that contains the value of the property. The number of bytes in this field depends on the type of property and the length of the property. The following table lists all of the property types and describes them.

Property TypeDescription
ByteThis is a one-byte value. The valid values depend on the property.
StringThis is a multiple byte ASCII string. Its length can be zero to a maximum length that depends on the property. The value and length of the string does not include a terminating NUL character.

SOFTWARE\_ID PROPERTY

Property ID: 0x00

Property Type: String

Length: Fixed at 11 bytes

Get Property: Yes

Set Property: No

Description: This is an 11 byte read only property that identifies the software part number and version for the device. The first 8 bytes represent the part number and the last 3 bytes represent the version. For example this string might be “21042812D01”. Examples follow:

Example Get Software ID property Request (Hex):

Cmd NumData LenPrp ID
000100

Example Get Software ID property Response (Hex):

Result CodeData LenPrp Value
000132 31 30 34 32 38 31 32 44 30 31

SERIAL\_NUM PROPERTY

Property ID: 0x01

Property Type: String

Length: 0 - 15 bytes

Get Property: Yes

Set Property: Yes

Default Value: The default value is no string with a length of zero.

Description: The value is an ASCII string that represents the device's serial number. This string can be 0 - 15 bytes long. The value of this property, if any, will be sent to the host when the host requests the USB string descriptor.

This property is stored in non-volatile memory, so it will persist when the unit is power cycled. When this property is changed, the unit must be reset (see Command Number 2) or power cycled to have these changes take effect.

Example Set Serial Num property Request (Hex):

Cmd NumData LenPrp IDPrp Value
01040131 32 33

Example Set Serial Num property Response (Hex):

Result CodeData LenData
0000

Example Get Serial Num property Request (Hex):

Cmd NumData LenPrp ID
000101

Example Get Serial Num property Response (Hex):

Result CodeData LenPrp Value
000331 32 33

POLLING\_INTERVAL PROPERTY

Property ID: 0x02

Property Type: Byte

Length: 1 byte

Get Property: Yes

Set Property: Yes

Default Value: 1

Description:

The value is a byte that represents the devices polling interval for the Interrupt In Endpoint. The value can be set in the range of 1 – 255 and has units of milliseconds. The polling interval tells the host how often to poll the device for card data packets. For example, if the polling interval is set to 10, the host will poll the device for card data packets every 10ms. This property can be used to speed up or slow down the time it takes to send card data to the host. The trade-off is that speeding up the card data transfer rate increases the USB bus bandwidth used by the device, and slowing down the card data transfer rate decreases the USB bus bandwidth used by the device. The value of this property will be sent to the host when the host requests the device's USB endpoint descriptor.

This property is stored in non-volatile memory, so it will persist when the unit is power cycled. When this property is changed, the unit must be reset (see Command Number 2) or power cycled to have these changes take effect.

Example Set Polling Interval property to 10 Request (Hex):

Cmd NumData LenPrp IDPrp Value
0102020A

Example Set Polling Interval property Response (Hex):

Result CodeData LenData
0000

Example Get Polling Interval property Request (Hex):

Cmd NumData LenPrp ID
000102

Example Get Polling Interval property Response (Hex):

Result CodeData LenPrp Value
00010A

TRACK\_ID\_ENABLE PROPERTY

Property ID: 0x03

Property Type: Byte

Length: 1 byte

Get Property: Yes

Set Property: Yes

Default Value: 0x95

Description: This property is defined as follows:

id 0T3T3T2T2T1T1

Id 0 - Decodes standard ISO/ABA cards only

1 - Decodes AAMVA, CA DL/ID and 7-bit cards also

T# 00 - Track Disabled

01 - Track Enabled

10 - Track Enabled/Required (Error if blank)

This property is stored in non-volatile memory, so it will persist when the unit is power cycled. When this property is changed, the unit must be reset (see Command Number 2) or power cycled to have these changes take effect.

Example Set Track ID Enable property Request (Hex):

Cmd NumData LenPrp IDPrp Value
01020395

Example Set Track ID Enable property Response (Hex):

Result CodeData LenData
0000

Example Get Track ID Enable property Request (Hex):

Cmd NumData LenPrp ID
000103

Example Get Track ID Enable property Response (Hex):

Result CodeData LenPrp Value
000195

TRACK\_DATA\_SEND\_FLAGS PROPERTY

Property ID: 0x04

Property Type: Byte

Length: 1 byte

Get Property: Yes

Set Property: Yes

Default Value: 0x63

Description: This property is defined as follows:

ICLSSESLRC0LCErEr

ICL 0 – Changing the state of the caps lock key will not affect the case of the data 1 – Changing the state of the caps lock key will affect the case of the data

SS 0 – Don't send Start Sentinel for each track 1 – Send Start Sentinel for each track

ES 0 – Don't send End Sentinel for each track 1 – Send End Sentinel for each track

LRC 0 – Don't send LRC for each track 1 – Send LRC for each track

Note that the LRC is the unmodified LRC from the track data. To verify the LRC the track data needs to be converted back from ASCII to card data format and the start sentinels that were modified to indicate the card encode type need to be converted back to their original values.

LC 0 – Send card data as upper case 1 – Send card data as lower case

Note that the state of the Caps Lock key on the host keyboard has no affect on what case the card data is transmitted in unless the ICL bit in this property is set to 1.

Er 00 – Don’t send any card data if error 01 – Don’t send track data if error 11 – Send ‘E’ for each track error

This property is stored in non-volatile memory, so it will persist when the unit is power cycled. When this property is changed, the unit must be reset (see Command Number 2) or power cycled to have these changes take effect.

TERMINATION\_CHAR PROPERTY

Property ID: 0x05

Property Type: Byte

Length: 1 byte

Get Property: Yes

Set Property: Yes

Default Value: 0x0D (carriage return)

Description: This property is defined as follows:

modccccc

mod 0 - Send c after card data

1 - Send c after each track

c 1-127 - 7 bit ASCII char code

0 - send nothing

This property is stored in non-volatile memory, so it will persist when the unit is power cycled. When this property is changed, the unit must be reset (see Command Number 2) or power cycled to have these changes take effect.

SS\_TK2\_7BITS PROPERTY

Property ID: 0x06

Property Type: Byte

Length: 1 byte

Get Property: Yes

Set Property: Yes

Default Value: 0x40 '@'

Description: This character is sent as the track 2 start sentinel for cards that have track 2 encoded in 7 bits per character format. If the value is 0 no character is sent. If the value is in the range 1 – 127 then the equivalent ASCII character will be sent.

This property is stored in non-volatile memory, so it will persist when the unit is power cycled. When this property is changed, the unit must be reset (see Command Number 2) or power cycled to have these changes take effect.

SS\_TK3\_ISO\_ABA PROPERTY

Property ID: 0x08

Property Type: Byte

Length: 1 byte

Get Property: Yes

Set Property: Yes

Default Value: 0x2B '+'

Description:

This character is sent as the track 3 start sentinel for cards that have track 3 encoded in ISO/ABA format. If the value is 0 no character is sent. If the value is in the range 1 - 127 then the equivalent ASCII character will be sent.

This property is stored in non-volatile memory, so it will persist when the unit is power cycled. When this property is changed, the unit must be reset (see Command Number 2) or power cycled to have these changes take effect.

SS\_TK3\_AAMVA PROPERTY

Property ID: 0x09

Property Type: Byte

Length: 1 byte

Get Property: Yes

Set Property: Yes

Default Value: 0x23 '#'

Description:

This character is sent as the track 3 start sentinel for cards that have track 3 encoded in AAMVA format. If the value is 0 no character is sent. If the value is in the range 1 - 127 then the equivalent ASCII character will be sent.

This property is stored in non-volatile memory, so it will persist when the unit is power cycled. When this property is changed, the unit must be reset (see Command Number 2) or power cycled to have these changes take effect.

SS\_TK3\_7BITS PROPERTY

Property ID: 0x0A

Property Type: Byte

Length: 1 byte

Get Property: Yes

Set Property: Yes

Default Value: 0x26 '&'

Description:

This character is sent as the track 3 start sentinel for cards that have track 3 encoded in 7 bits per character format. If the value is 0 no character is sent. If the value is in the range 1 – 127 then the equivalent ASCII character will be sent.

This property is stored in non-volatile memory, so it will persist when the unit is power cycled. When this property is changed, the unit must be reset (see Command Number 2) or power cycled to have these changes take effect.

PRE\_CARD\_CHAR PROPERTY

Property ID: 0x0B

Property Type: Byte

Length: 1 byte

Get Property: Yes

Set Property: Yes

Default Value: 0

Description:

This character is sent prior to all other card data. If the value is 0 no character is sent. If the value is in the range 1 - 127 then the equivalent ASCII character will be sent.

This property is stored in non-volatile memory, so it will persist when the unit is power cycled. When this property is changed, the unit must be reset (see Command Number 2) or power cycled to have these changes take effect.

POST\_CARD\_CHAR PROPERTY

Property ID: 0x0C

Property Type: Byte

Length: 1 byte

Get Property: Yes

Set Property: Yes

Default Value: 0

Description:

This character is sent after all other card data. If the value is 0 no character is sent. If the value is in the range 1 - 127 then the equivalent ASCII character will be sent.

This property is stored in non-volatile memory, so it will persist when the unit is power cycled. When this property is changed, the unit must be reset (see Command Number 2) or power cycled to have these changes take effect.

PRE\_TK\_CHAR PROPERTY

Property ID: 0x0D

Property Type: Byte

Length: 1 byte

Get Property: Yes

Set Property: Yes

Default Value: 0

Description:

This character is sent prior to the data for each track. If the value is 0 no character is sent. If the value is in the range 1 - 127 then the equivalent ASCII character will be sent.

This property is stored in non-volatile memory, so it will persist when the unit is power cycled. When this property is changed, the unit must be reset (see Command Number 2) or power cycled to have these changes take effect.

POST\_TK\_CHAR PROPERTY

Property ID: 0x0E

Property Type: Byte

Length: 1 byte

Get Property: Yes

Set Property: Yes

Default Value: 0

Description:

This character is sent after the data for each track. If the value is 0 no character is sent. If the value is in the range 1 - 127 then the equivalent ASCII character be sent.

This property is stored in non-volatile memory, so it will persist when the unit is power cycled. When this property is changed, the unit must be reset (see Command Number 2) or power cycled to have these changes take effect.

ASCII\_TO\_KEYPRESS\_CONVERSION\_TYPE PROPERTY

Property ID: 0x0F

Property Type: Byte

Length: 1 byte

Get Property: Yes

Set Property: Yes

Default Value: 0 (keymap)

Description:

The value is a byte that represents the devices ASCII to keypress conversion type. The value can be set to 0 for keymap (the active keymap is set with the ACTIVE_KEYMAP property) or to 1 for ALT ASCII code (international keyboard emulation). When the value is set to 0 (keymap), data will be transmitted to the host according to the active keymap which defaults to the United States keyboard keymap. For example, to transmit the ASCII character '?' (063 decimal), the character is looked up in a keymap. For a United States keyboard keymap, the '/' (forward slash) key combined with the left shift key modifier are stored in the keymap to represent the key press combination that is used to represent the ASCII character '?' (063 decimal). When the value is set to 1 (ALT ASCII code), instead of using the key map, an international keyboard key press combination consisting of the decimal value of the ASCII character combined with the ALT key modifier is used. For example, to transmit the ASCII character '?' (063 decimal), keypad '0' is sent combined with left ALT key modifier, next keypad '6' is sent combined with the left ALT key modifier, last keypad '3' is sent combined with the left ALT key modifier. In general, if this device only needs to emulate United States keyboards then this property should be set to 0 (keymap).

If this device needs to be able to emulate all country's keyboards then this property should be set to 1 (ALT ASCII code). The tradeoff is that the ALT

ASCII code mode is slightly slower than keymap mode because more key presses need to be transmitted. Some applications are not compatible with ALT ASCII code mode.

This property is stored in non-volatile memory, so it will persist when the unit is power cycled. When this property is changed, the unit must be reset (see Command Number 2) or power cycled to have these changes take effect.

Example Set ASCII To Keypress Conversion Type property Request (Hex):

Cmd NumData LenPrp IDPrp Value
01020F00

Example Set ASCII To Keypress Conversion Type property Response (Hex):

Result CodeData LenData
0000

Example Get ASCII To Keypress Conversion Type property Request (Hex):

Cmd NumData LenPrp ID
00010F

Example Get ASCII To Keypress Conversion Type property Response (Hex):

Result CodeData LenPrp Value
000100

INTERFACE\_TYPE PROPERTY

Property ID: 0x10

Property Type: Byte

Length: 1 byte

Get Property: Yes

Set Property: Yes

Default Value: 1 (keyboard emulation)

Description: The value is a byte that represents the devices interface type. The value can be set to 0 for the HID interface or to 1 for the keyboard emulation interface. When the value is set to 0 (HID) the device will behave as described in the HID manual. When the value is set to 1 (keyboard emulation) the device will behave as described in the keyboard emulation manual. This property should be the first property changed because it affects which other properties are available. After this property is changed, the device should be power cycled before changing any other properties.

This property is stored in non-volatile memory, so it will persist when the unit is power cycled. When this property is changed, the unit must be reset (see Command Number 2) or power cycled to have these changes take effect.

Example Set Interface Type property to HID Request (Hex):

Cmd NumData LenPrp IDPrp Value
01021000

Example Set Interface Type property Response (Hex):

Result CodeData LenData
0000

Example Get Interface Type property Request (Hex):

Cmd NumData LenPrp ID
000110

Example Get Interface Type property Response (Hex):

Result CodeData LenPrp Value
000100

ACTIVE\_KEYMAP PROPERTY

Property ID: 0x11

Property Type: Byte

Length: 1 byte

Get Property: Yes

Set Property: Yes

Default Value: 0 (United States)

Description: The value is a byte that represents the device's active key map. The value can be set to 0 for the United States key map or to 1 for the custom key map. The active key map will be used by the device to convert ASCII data into key strokes. The United States key map should be used will all hosts that are configured to use United States keyboards. The custom key map can be used to set up the device to work with hosts that are configured to use other countries keyboards. The default custom key map is the same as the United States key map. The key map can be modified to another countries key map by using commands “Get Key Map”, “Set Key Map” and “Save Custom Key Map”. See the command section of this manual for a complete description of these commands. To set up a device to use a custom key map, select the appropriate key map to be modified using the active key map property, reset the device to make this change take affect, use the “Get Key Map” and “Set Key Map” commands to modify the active key map, use the “Save Custom Key Map” command to save the active key map as the custom key map, set the active key map property to custom to use the custom key map, reset the device to make these changes take affect.

This property is stored in non-volatile memory, so it will persist when the unit is power cycled. When this property is changed, the unit must be reset (see Command Number 2) or power cycled to have these changes take effect.

Example Set Active Keymap property Request (Hex):

Cmd NumData LenPrp IDPrp Value
01021100

Example Set Active Keymap property Response (Hex):

Result CodeData LenData
0000

Example Get Active Keymap property Request (Hex):

Cmd NumData LenPrp ID
000111

Example Get Active Keymap property Response (Hex):

Result CodeData LenPrp Value
000100

PRE\_CARD\_STRING PROPERTY

Property ID: 0x12

Property Type: String

Length: 0 - 7 bytes

Get Property: Yes

Set Property: Yes

Default Value: The default value is no string with a length of zero.

Description: The value is an ASCII string that represents the device's pre card string. This string can be 0 - 7 bytes long. This string is sent prior to all other card data.

This property is stored in non-volatile memory, so it will persist when the unit is power cycled. When this property is changed, the unit must be reset (see Command Number 2) or power cycled to have these changes take effect.

Example Set Pre Card String property Request (Hex):

Cmd NumData LenPrp IDPrp Value
01041231 32 33

Example Set Pre Card String property Response (Hex):

Result CodeData LenData
0000

Example Get Pre Card String property Request (Hex):

Cmd NumData LenPrp ID
000112

Example Get Pre Card String property Response (Hex):

Result CodeData LenPrp Value
000331 32 33

POST\_CARD\_STRING PROPERTY

Property ID: 0x13

Property Type: String

Length: 0 - 7 bytes

Get Property: Yes

Set Property: Yes

Default Value: The default value is no string with a length of zero.

Description: The value is an ASCII string that represents the device's post card string. This string can be 0 - 7 bytes long. This string is sent after all other card data.

This property is stored in non-volatile memory, so it will persist when the unit is power cycled. When this property is changed, the unit must be reset (see Command Number 2) or power cycled to have these changes take effect.

Example Set Post Card String property Request (Hex):

Cmd NumData LenPrp IDPrp Value
01041331 32 33

Example Set Post Card String property Response (Hex):

Result CodeData LenData
0000

Example Get Post Card String property Request (Hex):

Cmd NumData LenPrp ID
000113

Example Get Post Card String property Response (Hex):

Result CodeData LenPrp Value
000331 32 33

SS\_TK1\_ISO\_ABA PROPERTY

Property ID: 0x14

Property Type: Byte

Length: 1 byte

Get Property: Yes

Set Property: Yes

Default Value: 0x25 ‘%’

Description: This character is sent as the track 1 start sentinel for cards that have track 1 encoded in ISO/ABA format. If the value is 0 no character is sent. If the value is in the range 1 - 127 then the equivalent ASCII character will be sent.

This property is stored in non-volatile memory, so it will persist when the unit is power cycled. When this property is changed, the unit must be reset (see Command Number 2) or power cycled to have these changes take effect.

SS\_TK2\_ISO\_ABA PROPERTY

Property ID: 0x15

Property Type: Byte

Length: 1 byte

Get Property: Yes

Set Property: Yes

Description: This character is sent as the track 2 start sentinel for cards that have track 2 encoded in ISO/ABA format. If the value is 0 no character is sent. If the value is in the range 1 – 127 then the equivalent ASCII character will be sent.

This property is stored in non-volatile memory, so it will persist when the unit is power cycled. When this property is changed, the unit must be reset (see Command Number 2) or power cycled to have these changes take effect.

ES PROPERTY

Property ID: 0x16

Property Type: Byte

Length: 1 byte

Get Property: Yes

Set Property: Yes

Default Value: 0x3F '?'

Description: This character is sent as the end sentinel for all tracks with any format except JIS type 2. If the value is 0 no character is sent. If the value is in the range 1 – 127 then the equivalent ASCII character will be sent.

This property is stored in non-volatile memory, so it will persist when the unit is power cycled. When this property is changed, the unit must be reset (see Command Number 2) or power cycled to have these changes take effect.

ES\_TK1 PROPERTY

Property ID: 0x17

Property Type: Byte

Length: 1 byte

Get Property: Yes

Set Property: Yes

Default Value: 0xFF (use ES property)

Description: This character is sent as the end sentinel for track 1 with any format. If the value is 0 no character is sent. If the value is in the range 1 – 127 then the equivalent ASCII character will be sent. If the value is 0xFF then the value of the ES property will be used instead of this property. This property was not present until firmware revision with software ID 21042812H01.

This property is stored in non-volatile memory, so it will persist when the unit is power cycled. When this property is changed, the unit must be reset (see Command Number 2) or power cycled to have these changes take effect.

Note

This property only applies to swipe readers, not the SureSwipe readers.

ES\_TK2 PROPERTY

Property ID: 0x18

Property Type: Byte

Length: 1 byte

Get Property: Yes

Set Property: Yes

Default Value: 0xFF (use ES property)

Description: This character is sent as the end sentinel for track 2 with any format except JIS type 2. If the value is 0 no character is sent. If the value is in the range 1 – 127 then the equivalent ASCII character will be sent. If the value is 0xFF then the value of the ES property will be used instead of this property. This property was not present until firmware revision with software ID 21042812H01.

This property is stored in non-volatile memory, so it will persist when the unit is power cycled. When this property is changed, the unit must be reset (see Command Number 2) or power cycled to have these changes take effect.

Note

This property only applies to swipe readers, not the SureSwipe readers.

ES\_TK3 PROPERTY

Property ID: 0x19

Property Type: Byte

Length: 1 byte

Get Property: Yes

Set Property: Yes

Default Value: 0xFF (use ES property)

Description: This character is sent as the end sentinel for track 3 with any format. If the value is 0 no character is sent. If the value is in the range 1 – 127 then the equivalent ASCII character will be sent. If the value is 0xFF then the value of the ES property will be used instead of this property. This property was not present until firmware revision with software ID 21042812H01.

This property is stored in non-volatile memory, so it will persist when the unit is power cycled. When this property is changed, the unit must be reset (see Command Number 2) or power cycled to have these changes take effect.

Note

This property only applies to swipe readers, not the SureSwipe readers.

DECODE\_ENABLE PROPERTY

Property ID: 0x1A

Property Type: Byte

Length: 1 byte

Get Property: Yes

Set Property: Yes

Default Value: 0x00

Description: This property is defined as follows:

Bit Position7 6 54 3 2 1 0
Decode TypeReservedReservedReservedReservedReservedReservedReservedJIS Type 2

When a decode type bit is set to 1 (true), the decode type represented by that bit is enabled. When a decode type bit is set to 0 (false), the decode type represented by that bit is disabled. The reserved decode type bits should always be set to zero.

This property is stored in non-volatile memory, so it will persist when the unit is power cycled. When this property is changed, the unit must be reset (see Command Number 2) or power cycled to have these changes take effect.

Note

The JIS type 2 decoding option was not added until firmware with software ID 21042812K01 was release in October 2008. Some applications may not work well with the JIS type 2 format because this format allows ASCII characters in the non-printable range (0x00 - 0x1F and 0x7F).

This property only applies to swipe readers, not the SureSwipe readers.

Example Set property Request (Hex):

Cmd NumData LenPrp IDPrp Value
01021A01 (enable JIS Type 2 decode type)

Example Set property Response (Hex):

Result CodeData LenData
0000

Example Get property Request (Hex):

Cmd NumData LenPrp ID
00011A

Example Get property Response (Hex):

Result CodeData LenPrp Value
000101

SS\_JIS\_TYPE\_2 PROPERTY

Property ID: 0x1B

Property Type: Byte

Length: 1 byte

Get Property: Yes

Set Property: Yes

Default Value: 0x7F 'DEL'

Description:

This character is sent as the start sentinel for cards that are encoded in the JIS type 2 format. If the value is in the range 0 - 127 then the equivalent ASCII character will be sent.

This property is stored in non-volatile memory, so it will persist when the unit is power cycled. When this property is changed, the unit must be reset (see Command Number 2) or power cycled to have these changes take effect.

Note

This property only applies to swipe readers, not the SureSwipe readers.

ES\_JIS\_TYPE\_2 PROPERTY

Property ID: 0x1C

Property Type: Byte

Length: 1 byte

Get Property: Yes

Set Property: Yes

Default Value: 0x7F 'DEL'

Description:

This character is sent as the end sentinel for cards that are encoded in the JIS type 2 format. If the value is in the range 0 - 127 then the equivalent ASCII character will be sent.

This property is stored in non-volatile memory, so it will persist when the unit is power cycled. When this property is changed, the unit must be reset (see Command Number 2) or power cycled to have these changes take effect.

Note

This property only applies to swipe readers, not the SureSwipe readers.

PAN\_NAME\_DATE\_ENABLE PROPERTY

Property ID: 0x1D

Property Type: Byte

Length: 1 byte

Get Property: Yes

Set Property: Yes

Default Value: 0 (DISABLED)

Description:

When this property is set to 0, the reader data transmission will use the standard mode of sending track information as described in SECTION 4. When this value is set to non-zero, and Track 1 or Track 2 is determined to be in a financial data format, the reader will transmit the PAN (Primary Account Number), Name and Expiration date using the following format:

If Track 1 is available:

Track 2 data will not be transmitted

If only Track 2 is available:

If Track 1 and Track 2 are not in financial data format or cannot be decoded, the reader will revert back to standard mode.

This property is stored in non-volatile memory, so it will persist when the unit is power cycled. When this property is changed, the unit must be reset (see Command Number 2) or power cycled to have these changes take effect.

Rules used for determining that a card is in financial data format:

• PAN length should be between 13 and 19
- Name length should be between 0 and 26 characters for Track 1
- Only 2 field separators ('^') for Track 1
- Only 1 field separator ('=') for Track 2
- Format code shall be the character 'B' for Track 1

Example Set PAN_Name_Date_Enable property to 01 Request (Hex):

Cmd NumData LenPrp IDPrp Value
01021D01

Example Set PAN_Name_Date_Enable property Response (Hex):

Result CodeData LenData
0000

Example Get PAN_Name_Date_Enable property Request (Hex):

Cmd NumData LenPrp ID
00011D

Example Get PAN_Name_Date_Enable property Response (Hex):

Result CodeData LenPrp Value
000101

* This property was not added until firmware version 21042812L02. This property only exists in swipe readers, not sureswipe readers.

POST\_TK\_CHAR\_ENABLE PROPERTY

Property ID: 0x1E

Property Type: Byte

Length: 1 byte

Get Property: Yes

Set Property: Yes

Default Value: 0x07

Description: This property is used to enable or disable the post track character for each track individually. The post track character is set separately with the post track character property. To enable the post track character for a given track set its corresponding bit position to one. To disable it, set it to zero. The following table shows how this properties bit positions relate to each track.

Bit position76543210
TrackReservedReservedReservedReservedReserved321

The reserved track fields should always be set to zero. For example, to enable all three tracks set this property to 0x07. To enable only track 1 set this property to 0x01.

This property is stored in non-volatile memory, so it will persist when the unit is power cycled. When this property is changed, the unit must be reset (see Command Number 2) or power cycled to have these changes take effect.

* This property was not added until firmware version 21042812L02. This property only exists in swipe readers, not sureswipe readers.

RESET\_DEVICE COMMAND

Command number: 0x02

Description: This command is used to reset the device. This command can be used to make previously changed properties take affect without having to unplug and then plug in the device. When the device resets it automatically does a USB detach followed by an attach. After the host sends this command to the device it should close the USB port, wait a few seconds for the operating system to handle the device detach followed by the attach and then re-open the USB port before trying to communicate further with the device.

Data structure: No data is sent with this command

Result codes: 0x00 (success)

Example Request (Hex):

Cmd NumData LenData
0200

Example Response (Hex):

Result CodeData LenData
0000

GET\_KEYMAP\_ITEM COMMAND

Command number: 0x03

Description:

This command is used to get a key map item from the active key map. The active key map is determined by the active key map property. Data from a magnetic stripe card is a sequence of ASCII characters. These ASCII characters are mapped to key strokes and these key strokes are sent to the host to represent the ASCII character. The key map maps a single ASCII character to a single USB key usage ID and USB key modifier byte. The key usage ID and the key modifier byte are transmitted to the host via USB to represent the ASCII character. The ASCII value is the value of the ASCII character to be transmitted to the host. See an ASCII table for the values of the ASCII character set. The USB key usage ID is a unique value assigned to every keyboard key. For a list of all key usage IDs see Appendix A. The key modifier byte modifies the meaning of the key usage ID. The modifier byte indicates if any combination of the right or left Ctrl, Shift, Alt or GUI keys are pressed at the same time as the key usage ID. For a list and description of the key modifier byte see Appendix B.

Starting with the firmware release with software ID 21042812F01, when

both the key usage ID and the key modifier byte are set to 0xFF for a given ASCII value, the ALT ASCII code is sent instead of the key map values.

The ALT ASCII code is a key press combination consisting of the decimal value of the ASCII character combined with the ALT key modifier. For example, to transmit the ASCII character '?' (063 decimal), keypad '0' is sent combined with left ALT key modifier, next keypad '6' is sent combined with the left ALT key modifier, last keypad '3' is sent combined with the left ALT key modifier.

Data structure:

Request Data:

OffsetField NameDescription
0ASCII valueValue of the ASCII character to be retrieved from the key map. This can be any value between 0 and 127 (0x7F). For example, to retrieve the key map item for ASCII character ‘?’ (card data end sentinel) use the ASCII value of ‘?’ which is 63 (0x3F).

Response Data:

OffsetField NameDescription
0Key Usage IDThe value of the USB key usage ID that is mapped to the given ASCII value. For example, for the United States keyboard map, usage ID 56 (0x38) (keyboard / and ?) is mapped to ASCII character ‘?’.
1Key Modifier ByteThe value of the USB key modifier byte that is mapped to the given ASCII value. For example, for the United States keyboard map, modifier byte 0x02 (left shift key) is mapped to ASCII character ‘?’.

Result codes: 0 (success)

Example Request (Hex):

Cmd NumData LenData
03013F

Example Response (Hex):

Result CodeData LenData
000238 02

SET\_KEYMAP\_ITEM COMMAND

Command number: 0x04

Description:

This command is used to set a key map item of the active key map. The active key map is determined by the active key map property. Data from a magnetic stripe card is a sequence of ASCII characters. These ASCII characters are mapped to key strokes and these key strokes are sent to the host to represent the ASCII character. The key map maps a single ASCII character to a single USB key usage ID and USB key modifier byte. The key usage ID and the key modifier byte are transmitted to the host via USB to represent the ASCII character. The ASCII value is the value of the ASCII character to be transmitted to the host. See an ASCII table for the values of the ASCII character set. The USB key usage ID is a unique value assigned to every keyboard key. For a list of all key usage IDs see Appendix A. The key modifier byte modifies the meaning of the key usage ID. The modifier byte indicates if any combination of the right or left Ctrl, Shift, Alt or GUI keys are pressed at the same time as the key usage ID. For a list and description of the key modifier byte see Appendix B. Once a key map item is modified, the changes take affect immediately. However, the changes will be lost if the device is reset or power cycled. To make the changes permanent, the save custom key map command must be issued. To use the new custom key map after a reset or power cycle, the active key map property must be set to custom.

Starting with the firmware release with software ID 21042812F01, when

both the key usage ID and the key modifier byte are set to 0xFF for a given ASCII value, the ALT ASCII code is sent instead of the key map

values. The ALT ASCII code is a key press combination consisting of the decimal value of the ASCII character combined with the ALT key modifier. For example, to transmit the ASCII character '?' (063 decimal), keypad '0' is sent combined with left ALT key modifier, next keypad '6' is sent combined with the left ALT key modifier, last keypad '3' is sent combined with the left ALT key modifier.

Data structure:

Request Data:

OffsetField NameDescription
0ASCII valueValue of the ASCII character to be set in the key map. This can be any value between 0 and 127 (0x7F). For example, to set the key map item for ASCII character ‘?’ (card data end sentinel) use the ASCII value of ‘?’ which is 63 (0x3F).
1Key Usage IDThe value of the USB key usage ID that is to be mapped to the given ASCII value. For example, for the United States keyboard map, usage ID 56 (0x38) (keyboard / and ?) is mapped to ASCII character ‘?’. To change this to the ASCII character ‘>’ use usage ID 55 (0x37) (keyboard . and >).
2Key Modifier ByteThe value of the USB key modifier byte that is to be mapped to the given ASCII value. For example, for the United States keyboard map, modifier byte 0x02 (left shift key) is mapped to ASCII character ‘?’. To change this to the ASCII character ‘>’ use modifier byte 0x02 (left shift key).

Response Data: None

Result codes: 0 (success)

The following example maps the card ASCII data end sentinel character '?' to the '>' 'keyboard key.

Example Request (Hex):

Cmd NumData LenData
04033F 37 02

Example Response (Hex):

Result CodeData LenData
0000

SAVE\_CUSTOM\_KEYMAP COMMAND

Command number: 0x05

Description:

This command is used to save the active key map as the custom key map in non volatile memory. The active key map is determined by the active key map property. Once a key map item is modified, the changes take affect immediately. However, the changes will be lost if the device is reset or power cycled. To make the changes permanent, the save custom key map command must be issued. To use the new custom key map after a reset or power cycle, the active key map property must be set to custom.

Data structure:

Request Data: None

Response Data: None

Result codes: 0 (success)

Example Request (Hex):

Cmd NumData LenData
0500

Example Response (Hex):

Result CodeData LenData
0000

SECTION 5. DEMO PROGRAM

The purpose of this demo program is not to demonstrate card reading with this Keyboard Emulation device. Use a text editor application such as Windows Notepad to demonstrate card reading for this keyboard emulation device. Any application that allows user input from a keyboard should be sufficient to demonstrate card reading for this device.

The primary purpose of the demo program, when used with this keyboard emulation device, is to allow users to change the device's programmable configuration properties. This is accomplished by sending commands to the device with the demo program. The demo program also comes with source code that can be used as a guide for application developers who what to change the device's programmable configuration properties in an application. However, it is unlikely that application developers will want to change these properties in an application since these properties only need to be set once and can be set at the factory. This program is written in Visual Basic.

Demo programs, version 1.2.0 and newer work on Windows 98, Me, 2000 and XP. Older versions do not support the HID keyboard emulation device on Windows 2000 or XP. These older versions only work on Windows 98 and Me.

When the demo program is run, a button for reading cards is displayed along with a button for sending commands. The card reading option is not supported for this keyboard emulation device. Use a text editor application such as Windows Notepad to demonstrate card reading for this keyboard emulation device.

The part numbers for the demo program can be found in this document in Section 1 under Accessories.

INSTALLATION

To install the demo program, run the setup.exe file and follow the instructions given on the screen.

OPERATION

To operate the demo program perform the following steps:

  • Attach the device into a USB port on the host
  • If this is the first time the device has been plugged into the host, then follow the instructions on the screen for installing the Windows HID device driver. This is explained in more detail in the installation section of this document.
  • Run the demo program.
  • To read cards and view the card data do not use the demo program. Use a text editor program such as Windows Notepad.
  • To send commands to the device, click on the send commands button.

  • Enter a command in the Message edit box. All data entered should be in hexadecimal bytes with a space between each byte. Enter the command number followed by the command data if there is any. The application will automatically calculate and send the command data length for you. For example, to send the GET_PROPERTY command for property SOFTWARE_ID enter 00 00.

  • Press Enter or click on Send message to send the command and receive the result.
  • The command request and the command result will be displayed in the Communications Dialog edit box.
  • The Clear Dialog button clears the Communication Dialog edit box.

SOURCE CODE

Source code is included with the demo program. It can be used as a guide for application development. It is described in detail, with comments, to assist developers. The book USB Complete by Jan Axelson is also a good guide for application developers, especially the chapter on Human Interface Device Host Applications (see “Reference Documents” in Section 1).

APPENDIX A. USAGE ID DEFINITIONS

This appendix is from the following document found on www.usb.org: Universal Serial Bus HID Usage Tables, Version 1.12 and specifically for this manual, Section 10, Keyboard/Keypad Page (0x07).

KEYBOARD/KEYPAD PAGE (0X07)

This section is the Usage Page for key codes to be used in implementing a USB keyboard. A Boot Keyboard (84-, 101- or 104-key) should at a minimum support all associated usage codes as indicated in the “Boot” column below.

The usage type of all key codes is Selectors (Sel), except for the modifier keys Keyboard Left Control (0x224) to Keyboard Right GUI (0x231) which are Dynamic Flags (DV).

Note. A general note on Usages and languages: Due to the variation of keyboards from language to language, it is not feasible to specify exact key mappings for every language. Where this list is not specific for a key function in a language, the closest equivalent key position should be used, so that a keyboard may be modified for a different language by simply printing different keycaps. One example is the Y key on a North American keyboard. In Germany this is typically Z. Rather than changing the keyboard firmware to put the Z Usage into that place in the descriptor list, the vendor should use the Y Usage on both the North American and German keyboards. This continues to be the existing practice in the industry, in order to minimize the number of changes to the electronics to accommodate other languages.

Table A-1. Keyboard/Keypad

Usage ID (Dec)Usage ID (Hex)Usage NameRef: Typical AT-101 PositionPC-ATMacUNIXBoot
000Reserved (no event indicated) ^9 N/A 4/101/104
101Keyboard ErrorRollOver ^9 N/A 4/101/104
202Keyboard POSTFail ^9 N/A 4/101/104
303Keyboard ErrorUndefined ^9 N/A 4/101/104
404Keyboard a and A ^4 31 4/101/104
505Keyboard b and B50 4/101/104
606Keyboard c and C ^4 48 4/101/104
707Keyboard d and D33 4/101/104
808Keyboard e and E19 4/101/104
909Keyboard f and F34 4/101/104
100AKeyboard g and G35 4/101/104
110BKeyboard h and H36 4/101/104
120CKeyboard i and I24 4/101/104
130DKeyboard j and J37 4/101/104
140EKeyboard k and K38 4/101/104
150FKeyboard l and L39 4/101/104
1610Keyboard m and M52 4/101/104
1711Keyboard n and N51 4/101/104
1812Keyboard o and O ^4 25 4/101/104
1913Keyboard p and P ^4 26 4/101/104
2014Keyboard q and Q^4 27√ √4/101/104
2115Keyboard r and R20√ √4/101/104
2216Keyboard s and S^4 32√ √4/101/104
2317Keyboard t and T21√ √4/101/104
2418Keyboard u and U23√ √4/101/104
2519Keyboard v and V49√ √4/101/104
261AKeyboard w and W^4 18√ √4/101/104
271BKeyboard x and X^4 47√ √4/101/104
281CKeyboard y and Y^4 22√ √4/101/104
291DKeyboard z and Z^4 46√ √4/101/104
301EKeyboard 1 and ! ^4 2√ √4/101/104
311FKeyboard 2 and ! ^4 3√ √4/101/104
3220Keyboard 3 and # ^4 4√ √4/101/104
3321Keyboard 4 and ^45√ √4/101/104
3422Keyboard 5 and %^46√ √4/101/104
3523Keyboard 6 and^47√ √4/101/104
3624Keyboard 7 and &^48√ √4/101/104
3725Keyboard 8 and *^49√ √4/101/104
3826Keyboard 9 and (410√ √4/101/104
3927Keyboard 0 and )^411√ √4/101/104
4028Keyboard Return (ENTER)^543√ √4/101/104
4129Keyboard ESCAPE110√ √4/101/104
422AKeyboard DELETE (Backspace)15√ √4/101/104
432BKeyboard Tab16√ √4/101/104
442CKeyboard Spacebar61√ √4/101/104
452DKeyboard - and (underscore)^412√ √4/101/104
462EKeyboard = and +^413√ √4/101/104
472FKeyboard [ and 427√ √4/101/104
4830Keyboard ] and^428√ √4/101/104
4931Keyboard and |29√ √4/101/104
5032Keyboard Non-US # and ~^242√ √4/101/104
5133Keyboard ; and :^440√ √4/101/104
5234Keyboard ' and "441√ √4/101/104
5335Keyboard Grave Accent and Tilde^41√ √4/101/104
5436Keyboard, and <^453√ √4/101/104
5537Keyboard. and >^454√ √4/101/104
5638Keyboard / and ?55√ √4/101/104
5739Keyboard Caps Lock^{11}30√ √4/101/104
583AKeyboard F1112√ √4/101/104
593BKeyboard F2113√ √4/101/104
603CKeyboard F3114√ √4/101/104
613DKeyboard F4115√ √4/101/104
623EKeyboard F5116√ √4/101/104
633FKeyboard F6117√ √4/101/104
6440Keyboard F7118√ √4/101/104
6541Keyboard F8119√ √4/101/104
6642Keyboard F9120√ √4/101/104
6743Keyboard F10121√ √4/101/104
6844Keyboard F11122√ √101/104
6945Keyboard F12123√ √101/104
70 46Keyboard PrintScreen^{1}124√ √101/104
7147Keyboard Scroll Lock^{11}125√ √4/101/104
7248Keyboard Pause^{1}126√ √101/104
73 49Keyboard Insert^{1}75√ √101/104
744AKeyboard Home^{1}80√ √101/104
754BKeyboard PageUp^{1}85√ √101/104
76 4CKeyboard Delete Forward^{1;14}76√ √101/104
774DKeyboard End^{1}81√ √101/104
784EKeyboard PageDown^{1}86√ √101/104
79 4FKeyboard RightArrow^{1}89√ √101/104
8050Keyboard LeftArrow^{1}79√ √101/104
8151Keyboard DownArrow^{1}84√ √101/104
82 52Keyboard UpArrow^{1}83√ √101/104
8353Keypad Num Lock and Clear1^{1}90√ √101/104
8454Keypad /^{1}95√ √101/104
8555Keypad *100√ √4/101/104
8656Keypad -105√ √4/101/104
8757Keypad +106√ √4/101/104
8858Keypad ENTER5108√ √101/104
8959Keypad 1 and End93√ √4/101/104
905AKeypad 2 and Down Arrow98√ √4/101/104
915BKeypad 3 and PageDn103√ √4/101/104
925CKeypad 4 and Left Arrow92√ √4/101/104
935DKeypad 4 and Left Arrow97√ √4/101/104
945EKeypad 4 and Left Arrow102√ √4/101/104
955FKeypad 7 and Home91√ √4/101/104
9660Keypad 8 and Up Arrow96√ √4/101/104
9761Keypad 9 and PageUp101√ √4/101/104
9862Keypad 0 and Insert99√ √4/101/104
9963Keypad . and Delete104\checkmark\checkmark\checkmark4/101/104
10064Keyboard Non-US and|^{3;6}45\checkmark\checkmark\checkmark4/101/104
10165Keyboard Application^{10}129\checkmark\checkmark104
10266Keyboard Power^{9}=\checkmark\checkmark
10367Keypad =\checkmark
10468Keyboard F1362\checkmark
10569Keyboard F1463\checkmark
1066AKeyboard F1564\checkmark
1076BKeyboard F1665
1076CKeyboard F17
1096DKeyboard F18
1106EKeyboard F19
1116FKeyboard F20
11270Keyboard F21
11371Keyboard F22
11472Keyboard F23
11573Keyboard F24
11674Keyboard Execute\checkmark
11775Keyboard Help\checkmark
11876Keyboard Menu\checkmark
11977Keyboard Select\checkmark
12078Keyboard Stop\checkmark
12179Keyboard Again\checkmark
1227AKeyboard Undo\checkmark
1237BKeyboard Cut\checkmark
1247CKeyboard Copy\checkmark
1257DKeyboard Paste\checkmark
1267EKeyboard Find\checkmark
1277FKeyboard Mute\checkmark
12880Keyboard Volume Up\checkmark
12981Keyboard Volume Down\checkmark
13082Keyboard Locking Caps Lock^{12}\checkmark
13183Keyboard Locking Num Lock^{12}\checkmark
13284Keyboard Locking Scroll Lock^{12}\checkmark
13385Keypad Comma^{27}107
13486Keypad Equal Sign^{29}
13587Keyboard International^{15-28}56
13688Keyboard International^{216}
13789Keyboard International^{317}
1388AKeyboard International^{418}
1398BKeyboard International^{19}
140 8CKeyboard International6^{20}
1418DKeyboard International^{721}
1428EKeyboard International^{822}
143 8FKeyboard International9^{22}
14490Keyboard Lang1^{25}
14591Keyboard Lang2^{26}
146 92Keyboard Lang3^{30}
14793Keyboard Lang4^{31}
14894Keyboard Lang5^{32}
149 95Keyboard Lang6^{8}
15096Keyboard Lang7^{8}
15197Keyboard Lang8^{8}
152 98Keyboard Lang9^{8}
15399Keyboard Alternate Erase^7
1549AKeyboard Sys/Req Attention^1
155 9BKeyboard Cancel
1569CKeyboard Clear
1579DKeyboard Prior
1589EKeyboard Return
1599FKeyboard Separator
160A0Keyboard Out
161A1Keyboard Oper
162A2Keyboard Clear/Again
163A3Keyboard Cr/Sel/Props
164 A4Keyboard ExSel
165-175A5-CFReserved
176B0Keypad 00
177B1Keypad 000
178B2Thousands\ Separator^{33}
179B3Decimal\ Separator^{33}
180 B4Currency Unit^{34}
181B5Currency Sub-unit^{34}
182B6Keypad (
183B7Keypad )
184B8Keypad
185B9Keypad
186BAKeypad Tab
187BBKeypad Backspace
188BCKeypad A
189BDKeypad B
190BEKeypad C
191BFKeypad D
192C0Keypad E
193C1Keypad F
194C2Keypad XOR
195C3Keypad ^
196C4Keypad %
197C5Keypad <
198C6Keypad >
199C7Keypad &
200C8Keypad &&
201C9Keypad |
202CAKeypad ||
203CBKeypad :
204CCKeypad #
205CDKeypad Space
206CEKeypad @
207CFKeypad !
208D0Keypad Memory Store
209D1Keypad Memory Recall
210D2Keypad Memory Clear
211D3Keypad Memory Add
212D4Keypad Memory Subtract
213D5Keypad Memory Multiple
214D6Keypad Memory Divide
215D7Keypad +/-
216D8Keypad Clear
217D9Keypad Clear Entry
218DAKeypad Binary
219DBKeypad Octal
220DCKeypad Decimal
221DDKeypad Hexadecimal
222-223DE-DFReserved
224E0Keyboard LeftControl58√ √
225E1Keyboard LeftShift44√ √
226E2Keyboard LeftA;t60√ √
227E3Keyboard Left GUI^{10;23}127√ √
228E4Keyboard RightControl64√ √
229E5Keyboard RightShift57\checkmark\checkmark\checkmark
230E6Keyboard RightAlt62\checkmark\checkmark\checkmark
231E7Keyboard Right GUI^{10;24}128\checkmark\checkmark\checkmark$
232 – 65535E8-FFFFReserved

Footnotes

  1. Usage of keys is not modified by the state of the Control, Alt, Shift or Num Lock keys. That is, a key does not send extra codes to compensate for the state of any Control, Alt, Shift or Num Lock keys.
  2. Typical language mappings: US: \Belg: μ`£ FrCa: <}> Dan:* Dutch: <> Fren:*μ Ger: #’ Ital: ù§ LatAm: } ] Nor;,* Span: }Ç Swed: ,* Swiss: \$£ UK: #\~.
  3. Typical language mappings: Belg:<> FrCa:«°» Dan:<> Dutch:||[ Fren:<> Ger:<|> Ital:<|> LatAm:<|> Nor:<|> Span:<|> Swed:<|> Swiss:<|> UK:\ Brazil: |.
  4. Typically remapped for other languages in the host system.
  5. Keyboard Enter and Keypad Enter generate different Usage codes.
  6. Typically near the Left-Shift key in AT-102 implementations.
  7. Example, Erase-Eaze™ key.
  8. Reserved for language-specific functions, such as Front End Processors and Input Method Editors.
  9. Reserved for typical keyboard status or keyboard errors. Sent as a member of the keyboard array. Not a physical key.
  10. Windows key for Windows 95, and "Compose."
  11. Implemented as a non-locking key; sent as member of an array.
  12. Implemented as a locking key; sent as a toggle button. Available for legacy support; however, most systems should use the non-locking version of this key.
  13. Backs up the cursor one position, deleting a character as it goes.
  14. Deletes one character without changing position.
    15-20. See additional foot notes in Universal Serial Bus HID Usage Tables, Copyright © 1996-2005, USB Implementers Forum.
  15. Toggle Double-Byte/Single-Byte mode.
  16. Undefined, available for other Front End Language Processors.
  17. Windowing environment key, examples are Microsoft Left Win key, Mac Left Apple key, Sun Left Meta key
  18. Windowing environment key, examples are Microsoft® RIGHT WIN key, Macintosh® RIGHT APPLE key, Sun® RIGHT META key.
  19. Hangul/English toggle key. This usage is used as an input method editor control key on a Korean language keyboard.
  20. Hanja conversion key. This usage is used as an input method editor control key on a Korean language keyboard.
  21. Keypad Comma is the appropriate usage for the Brazilian keypad period (.) key. This represents the closest possible match, and system software should do the correct mapping based on the current locale setting.
  22. Keyboard International1 should be identified via footnote as the appropriate usage for the Brazilian forward-slash (/) and question-mark (?) key. This usage should also be renamed to either "Keyboard Non-US / and ?" or to "Keyboard International1" now that it's become clear that it does not only apply to Kanji keyboards anymore.
  23. Used on AS/400 keyboards.
  24. Defines the Katakana key for Japanese USB word-processing keyboards.
  25. Defines the Hiragana key for Japanese USB word-processing keyboards.
  26. Usage 0x94 (Keyboard LANG5) "Defines the Zenkaku/Hankaku key for Japanese USB word-processing keyboards.
  27. The symbol displayed will depend on the current locale settings of the operating system. For example, the US thousands separator would be a comma, and the decimal separator would be a period.
  28. The symbol displayed will depend on the current locale settings of the operating system. For example the US currency unit would be S and the sub-unit would be .

APPENDIX B. MODIFIER BYTE DEFINITIONS

This appendix is from the following document found on www.usb.org: Device Class Definition for Human Interface Devices (HID) Version 1.11, and specifically for this manual, Section 8.3 Report Format for Array Items.

The modifier byte is defined as follows:

Table B-1. Modifier Byte

Table of contents Click a title to access it
Manual assistant
Powered by Anthropic
Waiting for your message
Product information

Brand : MagTek

Model : Mini Swipe

Category : Uncategorized