Application Note

Adaptus Imagers in international Applications

by Dieter Fauth

Last revision of this document: 2005-05-02 Adaptus Imagers in international Applications 1 Overview Last revision of this document: 2005-05-02 1 Overview

Today’ barcode applications often use more than just digits and require some care to ensure data integrity across system borders. Using characters outside the ASCII range can be a real challenge. The Adaptus family of barcode imagers is well suited for such applications because all internal data flow is done with (16 bit) characters. Some family members: IT4010, IT4080, IT4600, IT4800, IT5600, IT5800 This document assumes that the firmware is at least: 31205122-051RC1 (release candidate 1 from Oct. 2004), ProjectRevision: 1.149.1.2 Older firmware revisions do not support all the described features.

1.1 Required knowledge

It helps a lot if you understand what character sets or codepages are. If not, please see the chapter about codepages.

1.2 Revision History

2004.08.09 First release 2004.08.09 Moved to OpenOffice after a bad crash with MS-Word. 2004.08.27 Still working on readability improvements, removed all keyboard details into separate document. 2004.10.14 Added firmware revision. Minor wording changes. Refreshed the codepage tables. 2004.10.18 OpenOffice is reliable enough to merge the keyboard interfaces back into this document. 2005.02.16 New logos 2005.05.02 Added Russian Example with authentic Aztec code.

Page 2 of 77 Adaptus Imagers in international Applications 1 Overview Last revision of this document: 2005-05-02

Contents:

1 Overview...... 2 1.1 Required knowledge...... 2 1.2 Revision History...... 2

2 Data flow...... 6 2.1 Simple post decode processing...... 7 2.2 ECI post decode processing...... 8 2.3 System codepage...... 10 2.4 Country setting...... 10 2.5 Data transfer to host...... 10

3 Serial interfaces...... 11 4 Keyboard wedge interfaces...... 13 4.1 Operation...... 13 4.2 Countries and keyboard layouts...... 14 4.2.1 Keyboard layout...... 14 4.2.2 Supported countries...... 14 4.3 Characters not available on the keyboard...... 16 4.3.1 Dead keys...... 16 4.3.2 Alt-Numpad methods...... 17 4.3.2.1 Alt-Numpad: OEM character...... 17 4.3.2.2 Alt-Numpad: Windows character...... 17 4.3.2.3 Alt-Numpad: System codepage character (Windows style)...... 17 4.3.2.4 Alt-Numpad: System codepage character (MS-DOS style)...... 17 4.3.2.5 Alt-Numpad: Unicode character...... 17 4.3.3 HTML translation...... 18 4.3.4 Hex Dump...... 19 4.4 Dealing with lock keys...... 19 4.4.1 Caps Lock...... 19 4.4.2 Shift Lock...... 19 4.4.3 Auto-Caps detection...... 20 4.4.4 Auto-Caps detection via the Num Lock key...... 20 4.5 Advanced settings...... 21 4.5.1 Mapping of characters 0..1f...... 21 4.5.1.1 Accessing function keys...... 21 4.5.1.2 Control+ASCII styles...... 21 4.5.2 Numbers via Numpad...... 21 4.5.3 Tweaking the speed: Turbo mode...... 22 4.5.4 Automatic Direct Connect Mode...... 22 4.5.5 Emulate external keyboard...... 22 4.6 Details about keyboards...... 23 4.6.1 The IBM keyboard interfaces...... 23 4.6.2 USB keyboards...... 24

Page 3 of 77 Adaptus Imagers in international Applications 1 Overview Last revision of this document: 2005-05-02 4.6.2.1 Composite device...... 24

5 Trouble shooting...... 26 5.1 Finding which translation is wrong...... 26 5.1.1 Method 1: Using the serial interface...... 26 5.1.2 Method 2: Using the USB ComPort emulation interface...... 27 5.1.3 Method 3: Using the USB HidPos interface...... 27 5.1.4 Method 4: Using the hex dump feature...... 28

6 Recommendations...... 30 7 Menu barcodes...... 31 7.1 System codepage...... 31 7.2 Symbology codepages...... 36 7.3 Country setting...... 44 7.4 Characters not on the keyboard...... 53 7.5 Lock styles...... 54 7.6 Advanced...... 54 7.7 Emulate external keyboards...... 55 7.8 Some common hosts...... 55 7.9 Programming Chart...... 57

8 Tools...... 58 8.1 Codemap.exe...... 58 8.2 YAT (Yet Another Terminal)...... 58 8.3 WatchIt and ShowIt...... 59 8.4 QuickView...... 59 8.5 ShowKeys...... 59 8.6 STASI...... 61 8.7 Prokey (keyboard remapper)...... 61

9 What are Codepages?...... 63 9.1 7-Bit...... 63 9.2 8-Bit...... 65 9.2.1 CP437 (MS-DOS, /2, PDF417)...... 65 9.2.2 CP850 (MS-DOS, OS/2 in Europe)...... 66 9.2.3 CP1252 (MS-Windows in Europe and USA)...... 67 9.2.4 CP1251 (Cyrillic as an example)...... 68

10 What is Unicode?...... 69 10.1 Unicode encoding forms...... 70 10.1.1 UTF16BE and UTF16LE...... 70 10.1.2 UTF8...... 70

11 Test labels...... 71 11.1 Linear lables...... 71 11.2 2D labels with correct character encoding...... 71 11.3 2D labels with ECI...... 72 11.4 2D labels with bad character encoding...... 72

Page 4 of 77 Adaptus Imagers in international Applications 1 Overview Last revision of this document: 2005-05-02

12 Examples...... 74 12.1 Code 128 with ASCII and German Keyboard...... 74 12.2 Arabian text in Data Matrix...... 74 12.3 Russian text in Aztec code...... 75

13 FAQ...... 77

Page 5 of 77 Adaptus Imagers in international Applications 2 Data flow Last revision of this document: 2005-05-02 2 Data flow

In a typical Auto-ID application the flow of data has many stages. Only some of them can be controlled by you or by us. Therefore it is important to use devices that can be adjusted to all kinds of environments. Even to errors made by stages outside of your control. Here is a discussion about these stages:

Data creation We can not control this area, but with some knowledge from this Application Note you can avoid errors. Barcode printing

Barcode decoding The barcode decoder delivers a stream of bytes to the next stage. It also collects any meta information that might help to interpret the contents of a barcode.

Post decode processing In many cases this is an important stage. Here we interpret the stream of bytes and translate it to Unicode (16 bit characters).

Data flow inside the barcode Each barcode is handled as an object including its meta information. reader This allows for the right decisions in later stages.

Data transfer to host There are many options and pitfalls. We do the best to ensure that the data is send correctly.

Data usage in host We can not control this area, but with some knowledge from this Application Note you can avoid errors.

The Data flow in the Adaptus Imagers is designed to guaranty the data integrity under all circumstances. Characters are encoded using the Unicode standard which allows to mix Western, Greek, Cyrillic and even Chinese characters in same string. Binary data is handled transparently.

Page 6 of 77 Adaptus Imagers in international Applications 2 Data flow Last revision of this document: 2005-05-02 The next pages will explain more details.

2.1 Simple post decode processing

The barcode decoder delivers a stream of bytes. By definition we don’ know what these bytes mean, it could be a picture, encrypted data or anything else. As soon as we say 41hex is the ‘A’, we interpret that byte into a character. But as long as we don’t know for sure, we can just guess. That leads us to the very first question if we get a new barcode: How is it encoded? Well, the specifications for the various symbologies are quite certain how to encode the characters (which codepage to use). In reality, there are many barcodes that are encoded with the wrong codepage, sometimes on purpose, but most likely by lack of knowledge or faulty tools. Some examples:  Code 128 can encode characters with ISO 646 (ASCII), but in Europe you find lots of barcodes that used other codepages (see page 63).  PDF417 clearly specifies to use codepage 437 (the US MS-DOS codepage), but in Europe you also find the codepages 850 and 852 (see page 66).  Data Matrix and Aztec clearly specify the ISO 8859-1 to encode characters. Labels with all kind of codepages can be found.

Codepage Optional: Optional: Output Interface to Unicode IQEdit Data translator driver translation script Editor

Data formats in Codepage con- to Unicode figuration translation storage Unicode

To avoid data loss or damage, you can configure the Imager to interpret the bytes in a variety of codepages, or you can turn off the translation altogether. The default setting turns on translations based on the interface type. It needs several pages to list all the supported codepages, so they can be found on page 36 to keep this text shorter.

DESCRIPTION COMMAND Codepage translation off (raw binary). Use if you have true binary data and you don't want to use any formating in the Imager.

Page 7 of 77 Adaptus Imagers in international Applications 2 Data flow Last revision of this document: 2005-05-02 DESCRIPTION COMMAND Codepage translation on (characters). Use this if you want translations even for serial interfaces.

Codepage translation auto (on for keyboard interfaces, off for the rest) (default)

2.2 ECI post decode processing

Not knowing in which codepage a barcode is encoded, finally leaded to its solution: the ECI (Extended Channel Interpretation). This is an upcoming ISO standard that gives us the tools to store these meta information into the barcode. It is mainly suited for 2D symbologies and can do much more than just store codepage information. Our devices support the codepage ECIs. The barcode decoder finds the meta information (ECI) and passes it together with the decoded payload bytes to the ECI translator. The meta information is used to select the correct codepage translator. This can even happen several times in a barcode. The ECI decoder shows up in the data flow picture at the same place where we used to do the simple codepage translation. It is the natural choice for it because it does a similar work, but extends it to do most work in an automatic manner. Now the data flow looks like this:

ECI Optional: Optional: Output Interface translator IQEdit Data translator driver script Editor

Data formats in Codepage con- to Unicode figuration translation storage Unicode

With ECI, a Barcode can even contain text in multiple codepages. So it is no problem to mix Russian, German and even Chinese text into a single PDF417 barcode.

Page 8 of 77 Adaptus Imagers in international Applications 2 Data flow Last revision of this document: 2005-05-02 DESCRIPTION COMMAND ECI off (default)

ECI on

What we've learned: ECI is a way to tell the barcode reader details about the barcode.

Page 9 of 77 Adaptus Imagers in international Applications 2 Data flow Last revision of this document: 2005-05-02

2.3 System codepage

Former HHP barcode readers used one of the Windows codepages1 to represent all characters internally. The new Adaptus Imagers use Unicode for this purpose and therefore the concept of a system code page is much less important. But there are still two spots where we use a system codepage:  The commands and parameters for the data editor2. That is pre- and post ambles as well as the data formatter.  Sending data if you select the system codepage output translator. You can use a lot of codepages as the system codepage, see page 31 for a full list with menu barcodes. The default is ID=2 which has the same behavior as the former devices.

Codepage Optional: Optional: Output Interface to Unicode IQEdit Data translator driver translation script Editor

Data formats in Codepage con- to Unicode figuration translation storage Unicode

2.4 Country setting

The country setting is used by a few automatic features and the keyboard interfaces. So please select the correct country with the barcodes on page 44. If you miss your country, send an email to [email protected].

2.5 Data transfer to host

This can be a huge and complex area. How easy it will be, depends on the interface and your expectations. Many interfaces are very limited and support only a small subset of the character sets. Some even accept only digits. Here we talk about the interfaces that are more flexible and can handle a wider range of characters. Find more details in the next chapter.

1 Depending on the country. 2 We kept the data editor with 8 bit characters to stay compatible with older products. If you need Unicode there, please use an IQEdit script instead (much more powerful).

Page 10 of 77 Adaptus Imagers in international Applications 3 Serial interfaces Last revision of this document: 2005-05-02 3 Serial interfaces

The serial interface3 and its friends (USB ComPort emulation, USB HidPos) are capable of transferring binary data. They do not need to know what a certain byte means. That makes it much easier to use. All bytes are send transparently as we find them in the barcode, only the host system interprets them.

Binary to Optional: Optional: Unicode to Interface Unicode IQEdit Data binary driver translation script Editor translation

Data formats in Binary to con- Unicode figuration translation storage Unicode

Additionally you can choose to send interpreted characters in 4 different formats. This is useful if the receiving host can not do the required translations.

ECI or simple Optional: Optional: Output Interface Codepage IQEdit Data translator driver to Unicode script Editor translation

Data formats in Codepage con- to Unicode figuration translation storage Unicode

FORMAT DESCRIPTION COMMAND Raw binary No interpretation from binary to characters. (default)

3 Also known as RS232 or V24.

Page 11 of 77 Adaptus Imagers in international Applications 3 Serial interfaces Last revision of this document: 2005-05-02

System codepage Characters are translated into the current system codepage before they are send. Warning: There could be some data loss in the translation process because some characters might not be present in a certain codepage. Please double check your situation. Unicode UTF8 Characters are sent with the Unicode UTF8 encoding. No data loss will occur.

Unicode UTF16BE Characters are sent with the Unicode UTF16BE encoding (high byte first). No data loss will occur.

Unicode UTF16LE Characters are sent with the Unicode UTF16LE encoding (low byte first). No data loss will occur.

Page 12 of 77 Adaptus Imagers in international Applications 4 Keyboard wedge interfaces Last revision of this document: 2005-05-02 4 Keyboard wedge interfaces

The keyboard wedge interfaces are traditional somewhat restricted and for most host systems this is still valid. PCs as host systems allow for a better flexibility. The restrictions are:  Slower than serial interfaces (10..50 mSec per character)  Impossible or at least very hard (and slow) to send binary data.  Not all characters are available at the keyboard, so there is a possible loss of data.  PCs do support multi keystroke methods to send such unsupported characters, but this is even slower than normal keys.  Most keyboard interfaces use proprietary specifications  There are many keyboard layouts and flavors, even customized ones. Despite these restrictions, there is one big reason why a lot of people like the keyboard wedge interfaces: You do not need any receiving software on the PC. The scanned data can be feed into any program that offers text input via the keyboard. If you still want to stick with a keyboard wedge interface, you should know that our keyboard wedge engine is very flexible and has many tools and settings to solve a lot of problems. You will learn in the following chapters all the details to run it at its best.

4.1 Operation

The data path in the Adaptus Imagers uses Unicode to store characters. This ensures that we can represent all important characters worldwide. The interface driver translates these Unicode characters into keystrokes and sends them to the host system. For some characters, a single keystroke is not available on a given keyboard, so characters are composed from dead keys and the Alt-Numpad method (if supported by the host system). While the keystrokes are sent to the host, a connected keyboard will be disconnected if possible. Nevertheless, you must not type characters on the keyboard while the whole barcode is transmitted.

Codepage Optional: Optional: Keystroke to Unicode IQEdit Data translator translation script Editor

Data formats in Codepage con- to Unicode figuration translation storage Unicode

Page 13 of 77 Adaptus Imagers in international Applications 4 Keyboard wedge interfaces Last revision of this document: 2005-05-02 4.2 Countries and keyboard layouts

4.2.1 Keyboard layout

The keyboards look different in each country. Therefore you must tell the barcode reader which keyboard layout is used. You do so by selecting the keyboard country.

4.2.2 Supported countries

The table below shows the supported countries for each terminal. If a country is marked as not supported, there is still a way to add it to your device with the tool Prokey. rd ry a t ry ) t En )

S/2 2 a AT 2

) keyboard o 2 En ) P 2) a 8 (10 yb t Data 2 02 11 T

(1 /ICL 472 (122) S2 ) AT 1 keyboard (8 (1

2 S 7 (1 96 1496 K4 Da 86 (122) nkpad B 2 4 i D 19 4 ex 8) ex (1 l BM X 3 DI B

BM 102 I BM P IBM Nokia I I 0 A (8 US EPC ke Te Thinkpad 500 PC-Ke Tele Te T l 18 ex BM BM 3 BM 3180 (122) SB p I I I BM DDC 3 3 I p U BM I Tel A BM EC I EC VT 500 L D D Terminal Name DDC 3496 / 6 4 4 4 4 5 2 1 2 3 5 6 7 8 0 1 Terminal ID 2 25 35 4 46 71 7 84 97 1 10 112 1 12 125 ID Country Name 35 Albanian - + + + ------+ - + - - + - 1 Belgian + + + + + + + + + + + + + + + + + + - - + + 33 Bosnian ------16 Brazilian - + + + ------+ + + - - + - 59 Brazilian MS - + + + ------+ - + - - + - 7 British + + + + + + + + + + + + + + + + + + - - + + Bulgarian 52 - + + + ------+ - + - - + - Cyrillic 53 Bulgarian Latin - + + + ------+ - + - - + - Canadian 18 - + + + ------+ + + - - + + French Canadian 54 - + + + ------+ - + - - + - French Legacy Canadian 55 - + + + ------+ - + - - + - Multilingual 32 Croatian - + + + ------+ - + - - + - 15 Czech DEC - + + + ------+ + + - - + + Czech 40 - + + + ------+ - + - - + - Programmers Czech 39 - + + + ------+ - + - - + - QWERTY Czech 38 - + + + ------+ - + - - + - QWERTZ 8 Danish + + + + + + + + + + + + + + + + + + - - + + 11 Dutch - + + + ------+ + + - - + + 41 Estonian - + + + ------+ - + - - + -

Page 14 of 77 Adaptus Imagers in international Applications 4 Keyboard wedge interfaces Last revision of this document: 2005-05-02 rd ry a t o ry d b ) t En r )

y S/2 2 a AT 2

) keyboard o 2 En ) P 2) a 8 (10 yb t Data 2 02 11 T

(1 /ICL 472 (122) S2 ) AT 1 keyboard (8 (1

2 S 7 (1 96 1496 K4 Da 86 (122) nkpad B 2 x 4 i D 19 4 ex 8) l ex (1 l BM X 3 DI B

BM 102 I BM P IBM Nokia Th I I 0 A (8 US EPC ke Thinkpad Te 500 PC-Ke Tele Te e l T 18 ex BM BM 3 BM 3180 (122) SB p I I I BM DDC 3 3 I p U BM I Tel A BM EC V I EC VT 500 L D D Terminal Name DDC 3496 / Finnish 2 + + + + + + + + + + + + + + + + + + - - + + (Swedish) 3 French + + + + + + + + + + + + + + + + + + - - + + 4 German + + + + + + + + + + + + + + + + + + - - + + 61 Greek 220 - + + + ------+ - + - - + - Greek 220 64 - + + + ------+ - + - - + - Latin 62 Greek 319 - + + + ------+ - + - - + - Greek 319 65 - + + + ------+ - + - - + - Latin 17 Greek DEC - + + + ------+ + + - - + - 63 Greek Latin - + + + ------+ - + - - + - 66 Greek MS - + + + ------+ - + - - + - Greek 60 - + + + ------+ - + - - + - Polytonic 12 Hebrew - + + + ------+ + + - - + + 19 Hungarian - + + + ------+ + + - - + + Hungarian 101 50 - + + + ------+ - + - - + - Key 73 Irish - + + + ------+ - + - - + - 5 Italian + + + + + + + + + + + + + + + + + + - - + + 56 Italian 142 - + + + ------+ - + - - + - Japanese 28 - + + + ------+ - + - - + - ASCII 14 Latin America - + + + + + + + - - + + + + + + + + - - + + 42 Latvian - + + + ------+ - + - - + - Latvian 43 - + + + ------+ - + - - + - QWERTY 44 Lithuania - + + + ------+ - + - - + - 45 Lithuanian IBM - + + + ------+ - + - - + - 34 Macedonian - + + + ------+ - + - - + - 9 Norwegian + + + + + + + + + + + + + + + + + + - - + + 20 Polish - + + + ------+ + + - - + + 57 Polish 214 - + + + ------+ - + - - + - Polish 58 - + + + ------+ - + - - + - Programmers 13 Portuguese - + + + ------+ + + - - + + 25 Romanian - + + + ------+ + + - - + + 26 Russian - + + + ------+ + + - - + + 67 Russian MS - + + + ------+ - + - - + - Russian 68 - + + + ------+ - + - - + - Typewriter

Page 15 of 77 Adaptus Imagers in international Applications 4 Keyboard wedge interfaces Last revision of this document: 2005-05-02 rd ry a t o ry d b ) t En r )

y S/2 2 a AT 2

) keyboard o 2 En ) P 2) a 8 (10 yb t Data 2 02 11 T

(1 /ICL 472 (122) S2 ) AT 1 keyboard (8 (1

2 S 7 (1 96 1496 K4 Da 86 (122) nkpad B 2 x 4 i D 19 4 ex 8) l ex (1 l BM X 3 DI B

BM 102 I BM P IBM Nokia Th I I 0 A (8 US EPC ke Thinkpad Te 500 PC-Ke Tele Te e l T 18 ex BM BM 3 BM 3180 (122) SB p I I I BM DDC 3 3 I p U BM I Tel A BM EC V I EC VT 500 L D D Terminal Name DDC 3496 / 21 SCS - + + + ------+ + + - - + + 37 Serbian Cyrillic - + + + ------+ - + - - + - 36 Serbian Latin - + + + ------+ - + - - + - 22 Slovakian DEC - + + + ------+ + + - - + + Slovakian 49 - + + + ------+ - + - - + - QWERTY Slovakian 48 - + + + ------+ - + - - + - QWERTZ 31 Slovenian - + + + ------+ + + - - + - 10 Spanish + + + + + + + + + + + + + + + + + + - - + + Spanish 51 - + + + ------+ - + - - + - Variation 23 Swedish - + + + ------+ + + - - + + 29 Swiss (French) - + + + ------+ + + - - + - Swiss 6 + + + + + + + + + + + + + + + + + + - - + + (German) 27 Turkish - + + + ------+ + + - - + + 24 Turkish - + + + ------+ + + - - + + 0 USA + + + + + + + + + + + + + + + + + + + + + + USA 30 - + + + ------+ - + - - + - International

4.3 Characters not available on the keyboard

Not all characters are available on a particular keyboard. For these not supported characters there are several methods to enter them anyway. Usually these methods use a sequence of keystrokes to achieve the final character. The Adaptus Imagers always try to use the method with the fewest keystrokes to save time.

4.3.1 Dead keys

Dead keys switch the keyboard driver in the PC into the compose mode to wait for a second key and finalize the character. Supported for IBM AT clones, /2 and USB. You can easily check which keys have a dead key behavior. Press the key, if nothing happens, press a key which could potentially be composed by the two keys. On German keyboards there are several dead keys (´`^~). Other countries have different dead keys dependent on the requirements of the national language. USA and UK keyboards have no dead keys at all. An example makes it easier: press the '`' release, and the 'a', release, and you' get 'à' with some luck (without the quotes).

Page 16 of 77 Adaptus Imagers in international Applications 4 Keyboard wedge interfaces Last revision of this document: 2005-05-02 By default the Adaptus Imagers use this method to enter characters like these: àèìáéíâêñ.

COMMAND COMMAND

4.3.2 Alt-Numpad methods

On PC's there is a way to enter all different characters from 000 to 255 or even Unicode characters. Ensure the NumLock LED is on! Press the left ALT key, hold it and type the ordinal number of the character with the numbers on the NumPad. Then release the ALT key. You'll get the character. Example: ALT + NP1, NP2, NP3 gives you the '{''

The Adaptus Imagers can use any of the 5 flavors described below. Default is off.

4.3.2.1 Alt-Numpad: OEM character

For MS-DOS and OS/2 PC's the keyboard driver expects ordinal numbers out of the OEM (MS-DOS) codepage (CP437 for USA, CP850 for most European countries).

4.3.2.2 Alt-Numpad: Windows character

MS-Windows does support this as well, but you can also enter a character out of the Windows codepage (CP1250 - CP1257). Just enter the number with a leading '0' An example: We want to enter the character 'ä'. ALT+0228 will bring that character to the screen.

4.3.2.3 Alt-Numpad: System codepage character (Windows style)

This is quite similar to the “Alt-Numpad: Windows character” method, but it uses the system codepage to lookup the ordinal number of a given character. It can be used in countries that use the US keyboard layout with codepages other than CP1252 (Arabian countries).

4.3.2.4 Alt-Numpad: System codepage character (MS-DOS style)

This is quite similar to the “Alt-Numpad: OEM character” method, but it uses the system codepage to lookup the ordinal number of a given character. It can be used in countries that use the US keyboard layout with codepages other than CP437 (Arabian countries).

4.3.2.5 Alt-Numpad: Unicode character

While the other four methods are supported by the Operating system itself, this one is not!

Page 17 of 77 Adaptus Imagers in international Applications 4 Keyboard wedge interfaces Last revision of this document: 2005-05-02 It works for applications that uses the Richedit control version 3. You can test whether you application supports it or not by following the example below. If you enter ALT + a 4 digit Unicode number, you’ll get the Unicode character. An example: We want to enter the character '€’ (Euro sign). ALT+8364 will bring it up to the screen. Application Supports ALT-Unicode Word 2002 (Office XP) Yes Excel 2002 No Open Office Writer 1.1.2 No Wordpad (XP) Yes Notepad (XP) No Lotus Word pro 9.5 No

COMMAND COMMAND

4.3.3 HTML translation

This method needs an application that understands it. Unsupported characters are replaced by the HTML character definition. That is a '&' followed by '#' and the ordinal number of the Unicode character, followed by a ‘;’. Examples: 'ä' = ä "äöüÄÖÜÿ€" = "äöüÄÖÜÿ€" This style works for all terminal interfaces, but needs changes in the customers system.

Page 18 of 77 Adaptus Imagers in international Applications 4 Keyboard wedge interfaces Last revision of this document: 2005-05-02 COMMAND COMMAND

4.3.4 Hex Dump

All characters are translated into a space and four hex digits representing the Unicode number of the character. This is an example: " 0041 0042 00C4" is the same as "ABÄ". This is mainly a tool for debugging and trouble shooting, but it can be used to send even binary data. The receiving software must know this method in order to work properly.

COMMAND COMMAND

4.4 Dealing with lock keys

The lock styles cover the fact that the Imager does not know the state of caps lock by itself. So these styles are there to give the Imager some hint what to do. Because there are several flavors of locks, we also need several flavors of styles.

4.4.1 Caps Lock

Used for keyboards where the caps lock changes the case for characters from a to . The Imager translates all lowercase characters into uppercase and vice versa before transmitting it to the host. If the caps lock is set by the host, you'll get all characters with the proper case to the screen. Otherwise you'll get upper and lower case mixed up. So only use this style if the caps lock is activated all the time.

4.4.2 Shift Lock

Used for keyboards where the lock changes the case for all keys (also for the numbers etc.). The Imager clears the lock before transmitting any data and sets the lock after it's done with the data. This style also covers situations where you could use the caps lock style from above, so it's more general and saver to use. But there is a small price we have to pay: clearing and setting the lock costs some time (less than 100 milliseconds). It is also more robust against a wrong state of the lock at the beginning.

Page 19 of 77 Adaptus Imagers in international Applications 4 Keyboard wedge interfaces Last revision of this document: 2005-05-02 International note: Clearing the lock is different by the countries. The Imager handles this in a smart way so it works in all supported countries. This style can only work if the host sends out the LED info to the keyboard (PC is ok).

4.4.3 Auto-Caps detection

This works similar to the shift lock, but the the state of the lock is queried first: The Imager presses the caps key twice and reads4 the state of the caps LED send by the host. Now it knows the state and can handle everything in the proper way. After all data has been sent, the original state of the lock is restored (by pressing the caps key if required). The Auto-Caps detection takes some time, so it adds to the transfer time (about 200..300 milliseconds per label) This style can only work if the host sends out the LED info to the keyboard (PC is ok).

4.4.4 Auto-Caps detection via the Num Lock key

This works similar to the Auto-Caps detection, but the the state of the lock is queried by using the Num lock key rather the caps lock key. The reason for this is the different way the caps lock is set and cleared in various countries. It works even in countries like French or Germany. It is the historically youngest style and also works in countries where you could use the Auto-Caps from above. This style can only work if the host sends out the LED info to the keyboard (PC is ok).

COMMAND COMMAND

4 The board is logically disconnected while reading the state of the LEDs.

Page 20 of 77 Adaptus Imagers in international Applications 4 Keyboard wedge interfaces Last revision of this document: 2005-05-02 4.5 Advanced settings

4.5.1 Mapping of characters 0..1f

The first 32 characters in the character set (for all codepages) have no keys on any keyboard. Therefore they are used in various ways. Often you find the term “function key” or “function character” for these characters.

4.5.1.1 Accessing function keys

Traditionally they are mapped to a set of useful function keys. These differ from terminal to terminal. For the exact mapping please consult the chapter “Interface Keys” in manual for the Imager.

4.5.1.2 Control+ASCII styles

An alternate style is to send them as the control key plus the character. If your application supports it, then you can use this style instead of the mapping to function keys. There is a difference between MS-DOS and MS-Windows operating systems in most countries. Usually there are only a few characters different, so please ensure you test carefully.

COMMAND COMMAND

4.5.2 Numbers via Numpad

Some applications do accept digits from the NumPad only. This style redirects all digits (0-9) to the Numpad. COMMAND COMMAND

Page 21 of 77 Adaptus Imagers in international Applications 4 Keyboard wedge interfaces Last revision of this document: 2005-05-02 4.5.3 Tweaking the speed: Turbo mode

The speed has always be a concern, so this mode was invented to speed things up. It reduces the delay between the bytes sent to the host or does other tricks to speed things up. With some systems you won’t see an increased speed. This is because these systems do control the speed themselves (some IBM Thinkpads, USB, and others). There is no guaranty that the turbo mode works on your host and application. If you get lost characters or doubled characters, then this is too fast for your system. If your host is a PC or very similar, then you can try to use another mode that allows for a faster speed on certain keys (shift and caps key). It is called the “auto direct connect mode”. Both the Turbo and the “auto direct connect” modes can be use together.

COMMAND COMMAND

4.5.4 Automatic Direct Connect Mode

Turns Emulate External Keyboard on before sending the data and turns it off after that data has been sent. All host to keyboard communication is therefore handled by the Imager rather than the keyboard. Hosts like the DEC VT500 terminal series require this style and it is automatically selected for these interfaces. It won't hurt for most other interfaces and in fact makes them a little faster (no additional wait after the shift keys is required). This style avoids all problems which might occur with communications between the terminal and the keyboard while sending the label. Some older manuals say you shall use this instead of Emulate External Keyboard for notebooks. This was an error in these manuals!

COMMAND COMMAND

4.5.5 Emulate external keyboard

Notebooks or Laptops are different to normal PCs. They have got a keyboard interface additional to the internal keyboard. So there is no Y-Cable and no real keyboard connected on the Imager side. In this case the Imager must emulate all commands of a real keyboard. For most Notebooks this mode is sufficient, but there are some IBM Thinkpad models (older now) that would turn off the internal keyboard if they see an external keyboard connected. For these models there

Page 22 of 77 Adaptus Imagers in international Applications 4 Keyboard wedge interfaces Last revision of this document: 2005-05-02 are two terminal IDs that take special care to hide the Imager if there is no data to send. These are Terminal ID 97 (PS/2 scancodes) and 106 (AT scancodes). This must no be mixed up with a mode that is called “auto direct connect”. We don't need to care about the look styles because the state of the caps lock is known all the time5. So it's recommended to turn these look styles off. (Current firmware does turn them off automatically if you select Emulate External Keyboard) Note: Accidentally connected keyboards would disturb the communication and are therefore disconnected by the Imager All the communication requests are answered correctly, so the terminal does not see any difference to a real keyboard.

COMMAND COMMAND

4.6 Details about keyboards

Here we discuss some background info and other interesting details.

4.6.1 The IBM keyboard interfaces

These interfaces were used by many manufacturers over the last 3 decades. Some are rare today, while others are still quite common. Over that long time it evolved a lot of flavors. It started with the terminals for the mainframe computers (many flavors), then the XT appeared and disappeared followed by the AT which had a total different hardware and protocol. The PS/2 machines mixed both, but this was never adopted by other manufacturers, so the PS/2 stayed exotic. Only its connector (Mini DIN) survived. Most modern PCs still use the keyboard interface of the original IBM AT, but with the smaller connector of the PS/2. The table below shows the variations. The reality is even worse, often there is just one single key different from one model to the next. MODEL TERMID SCANCODE SET MAKE/BREAK IBM XT 1 1 (XT) Bit7 IBM PS/2 2 1 Bit7 IBM AT (modern PCs) 3 2 Pre byte F0 DEC VT500 with PC style 5 3 Pre byte F0 keyboard DEC VT500 with DEC style 104 LK411 Pre byte F0 keyboard

5 If you hot plug the barcode reader into the keyboard port of the notebook, then the reader does not know the state. But hot plugging is not allowed for the keyboard port anyway ;-), so you do it on your own risk. With some notebooks it helps to press the caps key and it sends the LED state to all keyboards, the internal one and the external (Imager).

Page 23 of 77 Adaptus Imagers in international Applications 4 Keyboard wedge interfaces Last revision of this document: 2005-05-02 MODEL TERMID SCANCODE SET MAKE/BREAK IBM terminals with 102 key 6 3 Make Only/Pre byte F0 keyboards IBM terminals with 122 key 7 3 Make Only/Pre byte F0 keyboards IBM terminals with 122 key 8 3 Make Only/Pre byte F0 keyboards IBM terminal model 3180 with 24 3 Make Only/Pre byte F0 122 key keyboards Some IBM Thinkpad models 97 2 Bit7 Some IBM Thinkpad models 106 3 Pre byte F0 DDC terminals with 102 key 71 3 Pre byte F0 keyboards DDC terminals with 122 key 84 3 Pre byte F0 keyboards Telex terminals with 88 key 25 3178 Make Only/Bit7 keyboards Telex terminals with 102 key 45 3 Make Only/Pre byte F0 keyboards Telex terminals with 122 key 46 3 Make Only/Pre byte F0 keyboards

4.6.2 USB keyboards

The USB keyboard emulation is not a wedge, it is rather acting as an (emulated) keyboard. This behavior is by design and ensures compliance with the USB standard. There is no need for any of the Lock-Styles, or Turbo-Mode. The operating systems MS-Windows, Mac-OS and Linux can deal with multiple keyboards. They merge all keystrokes into one virtual keyboard. That means you cannot distinguish whether the characters are coming from a real keyboard or from the Imager. There are different layouts between MS-Windows and Mac-OS, therefore there are two different TermIDs. If you have a choice between USB and one of the older keyboard interfaces, we recommend to choose the USB interface. It is slightly faster, it is an open standard, you can use the same cable for other USB based interfaces, supports hot plugging and does not need an extra power supply in most cases.

4.6.2.1 Composite device

The USB keyboard emulation is implement with an additional interface which works in parallel to the keyboard. This additional interface is the HidPOS interface. The device complies with the "Composite Device" model of USB thus the operating system generates two logical devices:

• HID Keyboard

• HID barcode reader (HidPos)

Two different interfaces for one device looks weird at the first glance, but it offers more features than the keyboard emulation alone would do. If you don't need the additional features of the HidPOS just ignore it. All output leaves the device via the keyboard interface by default, so there are no drawbacks.

Page 24 of 77 Adaptus Imagers in international Applications 4 Keyboard wedge interfaces Last revision of this document: 2005-05-02 The HidPos allows application programs to control the trigger, disable reading and more6. You find more details in the USB application note that you can download from our website.

6 It's the only way to implement this feature for Windows 2000 and Windows XP. These operating systems open all keyboards for exclusive access by themselves.

Page 25 of 77 Adaptus Imagers in international Applications 5 Trouble shooting Last revision of this document: 2005-05-02 5 Trouble shooting

If any of the translations in the data path is setup in the wrong way, you get out some wrong characters. Often it's hard to see on the first sight where the problem resides. And it can easily be more than one problem. Here we will discuss the best way to nail down all these problems in a quick manner.

5.1 Finding which translation is wrong

There are several translations after each other until the Imager can press a certain key on the keyboard. This often hides the root cause of the problem. So we need to find out which of the translations is wrong. We do this by removing all potential influences of keyboard settings in the Imager and the receiving terminal Here we have several options:

5.1.1 Method 1: Using the serial interface

If you are familiar with the Imager and have a serial cable plus power supply available, this is a proper method for you. A terminal program or other viewer for Com-Port data is required. Setup the Imager to use the serial interface (TermID = 0), connect it to the PC and run the terminal program. Then scan a known barcode. Hopefully your terminal program1 gives you the hex value of the character. Then you can double check if you get the expected bytes. Now scan the unknown barcode and try to mix and match the codepage from what you see.

DESCRIPTION COMMAND Select the RS232 interface.

Set baud rate to 115200 BPS, 8N1

Turn off any RS232 protocols

1I use my own terminal program YAT for these issues. It shows the received characters also in a hex dump and supports interfaces like HidPos.

Page 26 of 77 Adaptus Imagers in international Applications 5 Trouble shooting Last revision of this document: 2005-05-02 DESCRIPTION COMMAND Turn off any translation.

Scan know barcode to double check.

5.1.2 Method 2: Using the USB ComPort emulation interface

This works very similar to the Method 1, but requires a USB cable instead of the serial cable and power supply. You also need to install the ComPort emulation driver for our devices. The rest is exactly the same as shown in Method 1. The TermID is 130 in this case.

DESCRIPTION COMMAND Select the USB ComPort interface.

Turn off any RS232 emulation protocols

Turn off any translation.

Scan know barcode to double check.

5.1.3 Method 3: Using the USB HidPos interface

This works very similar to the Method 1, but requires a USB cable instead of the serial cable and power supply. You also need a program that can show the data from the HidPos interface7. The rest is exactly the same as shown in Method 1. The TermID is 131 in this case.

7You can use either YAT or ShowHidCom.

Page 27 of 77 Adaptus Imagers in international Applications 5 Trouble shooting Last revision of this document: 2005-05-02

DESCRIPTION COMMAND Select the USB ComPort interface.

Turn off any translation.

Scan know barcode to double check.

5.1.4 Method 4: Using the hex dump feature

The keyboard wedge interfaces have a feature called hex dump It sends the hex number of a character rather the character itself. A space is added for better readability. Scan it, then scan a known barcode, double check if you get the expected bytes. Now scan the unknown barcode and try to mix and match the codepage from what you see. Example: barcode contains ABC, then the hex dump gives you 0041 0042 0043

Select hex dump mode for the keyboard wedge drivers + Turn off the codepage translations and ECI (on by default for keyboards) + Select the correct country (to get correct hex numbers).

This turns off any codepage translations in the Imager. Now we can check which characters and codepage are used in the label. Scan the label in question and see the resulting hex dump (assumed we used the hex dump for the keyboard). If you know which character you expect, then you can easily lookup that character in a codepage list (or use the program codemap.exe).

DESCRIPTION COMMAND I assume the keyboard interface is already selected. Select the correct country on page 44 ff Turn off any translation.

Page 28 of 77 Adaptus Imagers in international Applications 5 Trouble shooting Last revision of this document: 2005-05-02 DESCRIPTION COMMAND Enable the hex dump mode

Scan know barcode to double check.

Stop here until your test is done After you are done, you can turn off the hex dump

Now as we know which codepage was used for printing, we can select the correct one and proceed to the next step.  Select correct codepage (used for printing)  Turn off the hex dump mode.  Country setting should already be OK (double check here) Scan a label and see what you get. You might need several different labels with different characters to exactly see any problem.  Check characters a-z and A-Z  Check digits 0-9  Check punctuation .,-_:,<>!"$%&/()=? ....  Check characters above 127 (äöü áéàè ñ ...)  Write down all differences  Use the modes for unsupported characters to enable all characters

Page 29 of 77 Adaptus Imagers in international Applications 6 Recommendations Last revision of this document: 2005-05-02 6 Recommendations

This chapter shall help you to make the right decisions. Try to stick with standards, read the spec. sheets of the used symbologies carefully. Use the ECI to describe the codepage used by your labels.

Page 30 of 77 Adaptus Imagers in international Applications 7 Menu barcodes Last revision of this document: 2005-05-02 7 Menu barcodes

Here are some menu barcodes. Most of them offer a single shot setting.

7.1 System codepage

SYSTEM CODEPAGE DESCRIPTION COMMAND Selects a Windows codepage depending on the country setting (default)

Windows Latin2 Eastern Europe

Windows Cyrillic

Windows Latin1 USA and central Europe (superset of ISO 8859-1)

Windows Greek

Windows Turkish

Page 31 of 77 Adaptus Imagers in international Applications 7 Menu barcodes Last revision of this document: 2005-05-02 SYSTEM CODEPAGE Windows Hebrew

Windows Arabic

Windows Baltic

Windows Vietnamese

MS-DOS USA

MS-DOS Greek

MS-DOS Baltic

MS-DOS Central Europe (Multilingual)

MS-DOS Eastern Europe, Slavic (Latin II)

Page 32 of 77 Adaptus Imagers in international Applications 7 Menu barcodes Last revision of this document: 2005-05-02 SYSTEM CODEPAGE MS-DOS Cyrillic

MS-DOS Turkish

MS-DOS Cyrillic - Russian

MS-DOS Hebrew

MS-DOS Arabic

MS-DOS Latin 1 = CP850 with the dotless i, 0xD5, replaced by euro '€'

MS-DOS Portuguese

MS-DOS Icelandic

MS-DOS Canadian French

Page 33 of 77 Adaptus Imagers in international Applications 7 Menu barcodes Last revision of this document: 2005-05-02 SYSTEM CODEPAGE MS-DOS Nordic

MS-DOS Modern Greek

ISO 8859 West European = first 256 characters of Unicode

ISO 8859 East European

ISO 8859 South European

ISO 8859 Latin4, North Europe

ISO 8859 Cyrillic

ISO 8859 Arabic

ISO 8859 Latin/Greek

Page 34 of 77 Adaptus Imagers in international Applications 7 Menu barcodes Last revision of this document: 2005-05-02 SYSTEM CODEPAGE ISO 8859 Latin/Hebrew

ISO 8859 Latin5, West European/Turkish

ISO 8859 Latin7, Baltic Rim, Latvian

ISO 8859 Latin8, Celtic

ISO 8859 Latin9, (Latin0) = Latin1 + extensions (euro sign)

ISO 8859

Ukrainia

Russia

MAC CP10000 Roman

Page 35 of 77 Adaptus Imagers in international Applications 7 Menu barcodes Last revision of this document: 2005-05-02 SYSTEM CODEPAGE MAC CP10006 Greek

MAC CP10007 Cyrillic

MAC CP10029 Latin 2

MAC CP10079 Iceland

7.2 Symbology codepages

To select a codepage for a given symbology, scan the symbology selector below, then scan a codepage selector. Scan SAVE to store it.

CODEPAGE SETTINGS

Page 36 of 77 Adaptus Imagers in international Applications 7 Menu barcodes Last revision of this document: 2005-05-02 CODEPAGE SETTINGS

Scan this to save the <-- Scan this to save the codepage --> codepage

POSSIBLE CODEPAGES IN BARCODES Description Codepage Command Good old ASCII ISO646 ASCII

Automatic 7 bit codepage (depends on AUTO country). default for linear symbologies

Use this to show we shall not translate BINARY

Unicode ISO/IEC 10646 UCS-2 (low byte UTF16LE first)

Unicode ISO/IEC 10646 UCS-2 (high byte UTF16BE first)

ISO/IEC 10646 UTF-8 UTF8

Windows Latin2 CP1250 Eastern Europe

Windows Cyrillic CP1251

Windows Latin1 CP1252 USA and central Europe (superset of ISO_8859_1)

Page 37 of 77 Adaptus Imagers in international Applications 7 Menu barcodes Last revision of this document: 2005-05-02 POSSIBLE CODEPAGES IN BARCODES Windows Greek CP1253

Windows Turkish CP1254

Windows Hebrew CP1255

Windows Arabic CP1256

Windows Baltic CP1257

Windows Vietnamese CP1258

MS-DOS USA CP437

MS-DOS Greek CP737

MS-DOS Baltic CP775

MS-DOS Central Europe (Multilingual) CP850

MS-DOS Eastern Europe, Slavic (Latin II) CP852

Page 38 of 77 Adaptus Imagers in international Applications 7 Menu barcodes Last revision of this document: 2005-05-02 POSSIBLE CODEPAGES IN BARCODES MS-DOS Cyrillic CP855

MS-DOS Turkish CP857

MS-DOS Cyrillic - Russian CP866

MS-DOS Hebrew CP862

MS-DOS Arabic CP864

MS-DOS Latin 1 == CP850 with the dotless CP858 i, 0xD5, replaced by euro '€'

MS-DOS Portuguese CP860

MS-DOS Icelandic CP861

MS-DOS Canadian French CP863

MS-DOS Nordic CP865

MS-DOS Modern Greek CP869

Page 39 of 77 Adaptus Imagers in international Applications 7 Menu barcodes Last revision of this document: 2005-05-02 POSSIBLE CODEPAGES IN BARCODES ISO 8859 West European == first 256 ISO 8859-1 characters of Unicode

ISO 8859 East European ISO 8859-2

ISO 8859 South European ISO 8859-3

ISO 8859 Latin4, North Europe ISO 8859-4

ISO 8859 Cyrillic ISO 8859-5

ISO 8859 Arabic ISO 8859-6

ISO 8859 Latin/Greek ISO 8859-7

ISO 8859 Latin/Hebrew ISO 8859-8

ISO 8859 Latin5, West European/Turkish ISO 8859-9

ISO 8859 Latin7, Baltic Rim, Latvian ISO 8859-13

ISO 8859 Latin8, Celtic ISO 8859-14

Page 40 of 77 Adaptus Imagers in international Applications 7 Menu barcodes Last revision of this document: 2005-05-02 POSSIBLE CODEPAGES IN BARCODES ISO 8859 Latin9, (Latin0) == Latin1 + ISO 8859-15 extensions (euro sign)

ISO 8859 ISO 8859-16

Ukrainia CP_KOI8_U

Russia CP_KOI8_R

MAC CP10000 Roman CP10000

MAC CP10006 Greek CP10006

MAC CP10007 Cyrillic CP10007

MAC CP10029 Latin 2 CP10029

MAC CP10079 Iceland CP10079

7 Bit codepage Iso_2022_25_FRA French/Belgian replacement characters

7 Bit codepage Iso_2022_11_SWE Swedish replacement characters

Page 41 of 77 Adaptus Imagers in international Applications 7 Menu barcodes Last revision of this document: 2005-05-02 POSSIBLE CODEPAGES IN BARCODES 7 Bit codepage Iso_2022_69_FRA French/Belgian replacement characters

7 Bit codepage Iso_2022_21_GER German replacement characters

7 Bit codepage Iso_2022_15_ITA Italian replacement characters

7 Bit codepage Iso_2022_xx_SWI Swiss replacement characters

7 Bit codepage Iso_2022_04_UK British replacement characters

7 Bit codepage Iso_2022_xx_DAN Denmark replacement characters

7 Bit codepage Iso_2022_61_NOR Norway replacement characters

7 Bit codepage Iso_2022_17_SPA Spanish replacement characters

7 Bit codepage Iso_2022_85_SPA Spanish replacement characters

7 Bit codepage Iso_2022_16_POR Portuguese replacement characters

7 Bit codepage Iso_2022_84_POR Portuguese replacement characters

Page 42 of 77 Adaptus Imagers in international Applications 7 Menu barcodes Last revision of this document: 2005-05-02 POSSIBLE CODEPAGES IN BARCODES 7 Bit codepage Iso_2022_60_NOR Norway replacement characters

Page 43 of 77 Adaptus Imagers in international Applications 7 Menu barcodes Last revision of this document: 2005-05-02

7.3 Country setting

COUNTRY IDS Country / Keyboard layout ID Configuration code

ALBANIA 35

AZERI CYRILLIC Not in firmware, but can be added as 81 prokey file.

AZERI LATIN Not in firmware, but can be added as 80 prokey file.

BELARUSIAN Not in firmware, but can be added as 82 prokey file.

BELGIUM 1

BOSNIA Not in firmware, but can be added as 33 prokey file.

BRAZIL 16

BRAZIL MS 59

Page 44 of 77 Adaptus Imagers in international Applications 7 Menu barcodes Last revision of this document: 2005-05-02 COUNTRY IDS

BULGARIA CYRILLIC 52

BULGARIA LATIN 53

CANADIAN FRENCH LEGACY 54

CANADIAN MULTILINGUAL 55

CROATIA 32

CZECH 15

CZECH PROGRAMMERS 40

CZECH QWERTY 39

CZECH QWERTZ 38

Page 45 of 77 Adaptus Imagers in international Applications 7 Menu barcodes Last revision of this document: 2005-05-02 COUNTRY IDS

DENMARK 8

DUTCH 11

ESTONIA 41

FAEROESE Not in firmware, but can be added as 83 prokey file.

FINLAND 2

FRANCE 3

FRENCH CANADA 18

GAELIC Not in firmware, but can be added as 84 prokey file.

GERMANY 4

Page 46 of 77 Adaptus Imagers in international Applications 7 Menu barcodes Last revision of this document: 2005-05-02 COUNTRY IDS

GREEK 17

GREEK 220 61

GREEK 220 LATIN 64

GREEK 319 62

GREEK 319 LATIN 65

GREEK LATIN 63

GREEK MS 66

GREEK POLYTONIC 60

HEBREW 12

Page 47 of 77 Adaptus Imagers in international Applications 7 Menu barcodes Last revision of this document: 2005-05-02 COUNTRY IDS

HUNGARIAN 101 KEY 50

HUNGARY 19

ICELAND Not in firmware, but can be added as 75 prokey file.

IRISH 73

ITALIAN 142 56

ITALY 5

JAPAN ASCII 28 See special Japanese interfaces.

KAZAKH Not in firmware, but can be added as 78 prokey file.

KYRGYZ CYRILLIC Not in firmware, but can be added as 79 prokey file.

LATIN AMERICA 14

Page 48 of 77 Adaptus Imagers in international Applications 7 Menu barcodes Last revision of this document: 2005-05-02 COUNTRY IDS

LATVIA 42

LATVIA QWERTY 43

LITHUANIA 44

LITHUANIAN IBM 45

MACEDONIA 34

MALTA Not in firmware, but can be added as 74 prokey file.

MONGOLIAN CYRILLIC Not in firmware, but can be added as 86 prokey file.

NORWAY 9

POLAND 20

Page 49 of 77 Adaptus Imagers in international Applications 7 Menu barcodes Last revision of this document: 2005-05-02 COUNTRY IDS

POLISH 214 57

POLISH PROGRAMMERS 58

PORTUGAL 13

ROMANIA 25

RUSSIA 26

RUSSIAN MS 67

RUSSIAN TYPEWRITER 68

SCS 21

SERBIA CYRILLIC 37

Page 50 of 77 Adaptus Imagers in international Applications 7 Menu barcodes Last revision of this document: 2005-05-02 COUNTRY IDS

SERBIA LATIN 36

SLOVAK 22

SLOVAK QWERTY 49

SLOVAK QWERTZ 48

SLOVENIA 31

SPANISH 10

SPANISH VARIATION 51

SWEDISH 23

SWITZERLAND GERMAN 6

Page 51 of 77 Adaptus Imagers in international Applications 7 Menu barcodes Last revision of this document: 2005-05-02 COUNTRY IDS

SWITZERLAND FRENCH 29

TATAR Not in firmware, but can be added as 85 prokey file.

TURKISH F 27

TURKISH Q 24

UK 7

UKRAINIAN Not in firmware, but can be added as 76 prokey file.

USA 0

USA DVORAK Not in firmware, but can be added as 87 prokey file.

USA DVORAK LEFTHAND Not in firmware, but can be added as 88 prokey file.

Page 52 of 77 Adaptus Imagers in international Applications 7 Menu barcodes Last revision of this document: 2005-05-02 COUNTRY IDS

USA DVORAK RIGHTHAND Not in firmware, but can be added as 89 prokey file.

USA INTERNATIONAL 30

UZBEK CYRILLIC Not in firmware, but can be added as 77 prokey file.

7.4 Characters not on the keyboard

COMMAND COMMAND

Page 53 of 77 Adaptus Imagers in international Applications 7 Menu barcodes Last revision of this document: 2005-05-02 COMMAND COMMAND

7.5 Lock styles

COMMAND COMMAND

7.6 Advanced

DESCRIPTION COMMAND

Page 54 of 77 Adaptus Imagers in international Applications 7 Menu barcodes Last revision of this document: 2005-05-02 DESCRIPTION COMMAND

7.7 Emulate external keyboards

COMMAND COMMAND

7.8 Some common hosts

COMMAND COMMAND

Page 55 of 77 Adaptus Imagers in international Applications 7 Menu barcodes Last revision of this document: 2005-05-02 COMMAND COMMAND

Page 56 of 77 Adaptus Imagers in international Applications 7 Menu barcodes Last revision of this document: 2005-05-02

7.9 Programming Chart

Same as in the back of the manuals. Programming Chart

Page 57 of 77 Adaptus Imagers in international Applications 8 Tools Last revision of this document: 2005-05-02 8 Tools

Here I list some tools which can help you in finding and understanding potential problems.

8.1 Codemap.exe

The most important tool to understand what codepages are, is codemap.exe. It can view, print and even compare different codepages. All pictures of codepages in this document where produced with it. There is no reason not to use it, it's free! (send an email to [email protected] to get it) Works best with Windows 2000 and XP. The older 16 bit versions Windows 95,98 and ME are not recommended because their fonts do miss some characters.

8.2 YAT (Yet Another Terminal)

This is a terminal program that shows a hex dump window additional to the regular receive window. Supports Com-Ports above COM4 and USB interfaces. The screen shot shows some test barcodes.

Page 58 of 77 Adaptus Imagers in international Applications 8 Tools Last revision of this document: 2005-05-02

It is available for free. (send an email to [email protected] to get it)

8.3 WatchIt and ShowIt

A terminal program written by Mitch Sevier. At least the light version (ShowIt) is free. (send an email to [email protected] to get it)

8.4 QuickView

Our official tool for the 2D barcode readers. Download it from our web site.

8.5 ShowKeys

This is a small program that can act as a receiver for keystrokes. It has two windows.

Page 59 of 77 Adaptus Imagers in international Applications 8 Tools Last revision of this document: 2005-05-02  The upper windows is a regular edit box and shows characters in the same way as most applications.  The lower window shows the make and break details of the keystrokes The only way to control this program is the mouse because it intercepts all keystrokes and shows them in its view (even ALT+F4). Options explained:  Show Control keys if on, translates the control keys into a human readable form (^A for 0x01).  Show Make/Break for all keys if on, shows make/break info for all keys, else just for modifier keys.  Filter Auto-Repeat for modifiers (recommended) If you play with the ShowKeys, you will see very soon that you get a huge amount of detail information for the modifier keys (shift etc). This filter removes the repeating entries.  Add Scancodes if on, scancodes are appended to the Make/Break info. And here the screen shoot:

(send an email to [email protected] to get it)

Page 60 of 77 Adaptus Imagers in international Applications 8 Tools Last revision of this document: 2005-05-02 8.6 STASI

Stasi is a keyboard logger that uses a special hardware box to capture the communication between keyboards and its hosts. It goes far beyond the features of ShowKeys and is used to get complicated scenarios solved. We will work closely together with you in such cases. (send an email to [email protected] to get in contact)

8.7 Prokey (keyboard remapper)

This is a tool to modify the internal translation tables of the Imagers. It also contains a database with pictures of most supported keyboard layouts. It's still marked as beta, but it runs stable. (send an email to [email protected] to get it)

Page 61 of 77 Adaptus Imagers in international Applications 8 Tools Last revision of this document: 2005-05-02 Database view:

Keyboard remapping language:

Page 62 of 77 Adaptus Imagers in international Applications 9 What are Codepages? Last revision of this document: 2005-05-02 9 What are Codepages?

This chapter tries to describe some background information about codepages. You find this term often in various environments where textual information is transferred from one system to another. There is a synonym: Character set. This is, in my opinion, a more descriptive name for the same thing. Here are some official definitions: Character: A member of a set of elements used for the organization, control and representation of data. Character set: A set of ordered characters. Coded Character set: A set of unambiguous rules that establishes a character set and the relationship between the characters of the set and their coded representation.

In plain English this means that a codepage is a collection of characters and each has its own unique ordinal number (A == 0x41, B == 0x42 ...). Well, but why make it so complicated? Why not just using ASCII you ask. OK, ASCII is a codepage introduced in the USA many years ago. Other countries had a need for additional characters, so they defined their own "national ASCII" tables. Later the ISO standardized these attempts in various documents: ISO 646 is the good old ASCII ISO2022 is a document describing character sets and more. There is also a register that holds the sets. In this "language" the ASCII set is named ISO2022-IR6 Because ASCII was a 7-bit set, the "national ASCII" (ISO2022) sets replaced 12 less important characters with national characters (replacements: #$@[\]^`{|}~). That means in this codepages you do not have the above characters available (this is a problem for the AIM symbology ID) A few years later the IBM PC came out with an 8-bit codepage. IBM called this codepage 437 (CP437). Because it was an 8-bit set, there was space for the ASCII + some support for non-USA characters + line graphic characters. Now you could write text containing European characters + all of the ASCII characters. Some really important characters are not in the CP437, so IBM and MS defined a variation (I call it bug fix) for European countries. This was called CP850. Having 256 characters certainly does not cover all characters of the World, not even Europe, so new codepages where introduced soon. Meanwhile another group of engineers tried to come up with a set of 8-bit codepages that should cover most of the languages. This is the family standardized by the ISO as 8859. You find this number often in the Internet. Then Microsoft published Windows 3.0 and - certainly added a new codepage (CP1252). This one is based on ISO8859-1 with some extensions. More codepages followed to support more countries (CP1250..CP1259). Windows still supports the old CP437/850 codepages. They are called "OEM" codepages in the documentation.

Here is an interesting website: http://www.cs.tut.fi/~jkorpela/chars.html.

9.1 7-Bit

Page 63 of 77 Adaptus Imagers in international Applications 9 What are Codepages? Last revision of this document: 2005-05-02

Code Page ISO 2022 IR 06 USA = ISO 646 (ASCII)

0 1 2 3 4 5 6 7 8 9 A B D E F NUL SOH STX ETX EOT ENQ ACK BEL BS HT LF VT FF CR SO SI 00 00 - 0 01 - 1 02 - 2 03 - 3 04 - 4 05 - 5 06 - 6 07 - 7 08 - 8 09 - 9 0A - 10 0B - 11 0C - 12 0D - 13 0E - 14 0F - 15 U+0000 U+0001 U+0002 U+0003 U+0004 U+0005 U+0006 U+0007 U+0008 U+0009 U+000A U+000B U+000C U+000D U+000E U+000F DLE DC1 DC2 DC3 DC4 NAK SYN ETB CAN EM SUB ESC FS GS RS US 10 10 - 16 11 - 17 12 - 18 13 - 19 14 - 20 15 - 21 16 - 22 17 - 23 18 - 24 19 - 25 1A - 26 1B - 27 1C - 28 1D - 29 1E - 30 1F - 31 U+0010 U+0011 U+0012 U+0013 U+0014 U+0015 U+0016 U+0017 U+0018 U+0019 U+001A U+001B U+001C U+001D U+001E U+001F ! " # $ % & ' ( ) * + , - . / 20 20 - 32 21 - 33 22 - 34 23 - 35 24 - 36 25 - 37 26 - 38 27 - 39 28 - 40 29 - 41 2A - 42 2B - 43 2C - 44 2D - 45 2E - 46 2F - 47 U+0020 U+0021 U+0022 U+0023 U+0024 U+0025 U+0026 U+0027 U+0028 U+0029 U+002A U+002B U+002C U+002D U+002E U+002F 0 1 2 3 4 5 6 7 8 9 : ; < = > ? 30 30 - 48 31 - 49 32 - 50 33 - 51 34 - 52 35 - 53 36 - 54 37 - 55 38 - 56 39 - 57 3A - 58 3B - 59 3C - 60 3D - 61 3E - 62 3F - 63 U+0030 U+0031 U+0032 U+0033 U+0034 U+0035 U+0036 U+0037 U+0038 U+0039 U+003A U+003B U+003C U+003D U+003E U+003F @ A B C D E F I L O 40 40 - 64 41 - 65 42 - 66 43 - 67 44 - 68 45 - 69 46 - 70 47 - 71 48 - 72 49 - 73 4A - 74 4B - 75 4C - 76 4D - 77 4E - 78 4F - 79 U+0040 U+0041 U+0042 U+0043 U+0044 U+0045 U+0046 U+0047 U+0048 U+0049 U+004A U+004B U+004C U+004D U+004E U+004F P Q R S T U V X Y Z [ \ ] ^ _ 50 50 - 80 51 - 81 52 - 82 53 - 83 54 - 84 55 - 85 56 - 86 57 - 87 58 - 88 59 - 89 5A - 90 5B - 91 5C - 92 5D - 93 5E - 94 5F - 95 U+0050 U+0051 U+0052 U+0053 U+0054 U+0055 U+0056 U+0057 U+0058 U+0059 U+005A U+005B U+005C U+005D U+005E U+005F ` a b c d e f g h i j k l m n o 60 60 - 96 61 - 97 62 - 98 63 - 99 64 - 100 65 - 101 66 - 102 67 - 103 68 - 104 69 - 105 6A - 106 6B - 107 6C - 108 6D - 109 6E - 110 6F - 111 U+0060 U+0061 U+0062 U+0063 U+0064 U+0065 U+0066 U+0067 U+0068 U+0069 U+006A U+006B U+006C U+006D U+006E U+006F p q r s t u v w x y z { | } ~ DEL 70 70 - 112 71 - 113 72 - 114 73 - 115 74 - 116 75 - 117 76 - 118 77 - 119 78 - 120 79 - 121 7A - 122 7B - 123 7C - 124 7D - 125 7E - 126 7F - 127 U+0070 U+0071 U+0072 U+0073 U+0074 U+0075 U+0076 U+0077 U+0078 U+0079 U+007A U+007B U+007C U+007D U+007E U+007F

Instead of wasting paper, here is a short list of the characters replaced in various European countries.

Iso Name Country IR ID Decimal 35 36 64 91 92 93 94 96 123 124 125 126 Hex 23 24 40 5B 5C 5D 5E 60 7B 7C 7D 7E 6 USA (ASCII) 0 # $ @ [ \ ] ^ ` { | } ~ 25 Belgium 1 £ $ à ° ç § ^ ` é ù è ¨ 10 Sweden (Finland) 2 # ¤ É Ä Ö Å Ü é ä ö å ü 25 France 3 £ $ à ° ç § ^ ` é ù è ¨ 69 France 3 £ $ à ° ç § ^ µ é ù è ¨ 21 Germany 4 # $ § Ä Ö Ü ^ ` ä ö ü ß 15 Italy 5 £ $ § ° ç é ^ ù à ò è ì Switzerland 6 £ $ ç à é è ^ ` ä ö ü ¨ 4 UK 7 £ $ @ [ \ ] ^ ` { | } ~ Denmark 8 # $ @ Æ Ø Å ^ ` æ ø å ~ 60 Norway 9 # $ @ Æ Ø Å ^ ` æ ø å ‾ 61 Norway 9 § $ @ Æ Ø Å ^ ` æ ø å | 17 Spain 10 £ $ § ¡ Ñ ¿ ^ ` ° ñ ç ~ 85 Spain 10 # $ · ¡ Ñ Ç ¿ ` ´ ñ ç ¨ 16 Portugal 13 # $ § Ã Ç Õ ^ ` ã ç õ ° 84 Portugal 13 # $ ´ Ã Ç Õ ^ ` ã ç õ ~

Page 64 of 77 Adaptus Imagers in international Applications 9 What are Codepages? Last revision of this document: 2005-05-02

9.2 8-Bit

9.2.1 CP437 (MS-DOS, OS/2, PDF417)

Code Page DOS CP437 USA

0 1 2 3 4 5 6 7 8 9 A B C D E F NUL SOH STX ETX EOT ENQ ACK BEL BS HT LF VT FF CR SO SI 00 00 - 0 01 - 1 02 - 2 03 - 3 04 - 4 05 - 5 06 - 6 07 - 7 08 - 8 09 - 9 0A - 10 0B - 11 0C - 12 0D - 13 0E - 14 0F - 15 U+0000 U+0001 U+0002 U+0003 U+0004 U+0005 U+0006 U+0007 U+0008 U+0009 U+000A U+000B U+000C U+000D U+000E U+000F DLE DC1 DC2 DC3 DC4 NAK SYN ETB CAN EM SUB ESC FS GS RS US 10 10 - 16 11 - 17 12 - 18 13 - 19 14 - 20 15 - 21 16 - 22 17 - 23 18 - 24 19 - 25 1A - 26 1B - 27 1C - 28 1D - 29 1E - 30 1F - 31 U+0010 U+0011 U+0012 U+0013 U+0014 U+0015 U+0016 U+0017 U+0018 U+0019 U+001A U+001B U+001C U+001D U+001E U+001F ! " # $ % & ' ( ) * + , - . / 20 20 - 32 21 - 33 22 - 34 23 - 35 24 - 36 25 - 37 26 - 38 27 - 39 28 - 40 29 - 41 2A - 42 2B - 43 2C - 44 2D - 45 2E - 46 2F - 47 U+0020 U+0021 U+0022 U+0023 U+0024 U+0025 U+0026 U+0027 U+0028 U+0029 U+002A U+002B U+002C U+002D U+002E U+002F 0 1 2 3 4 5 6 7 8 9 : ; < = > ? 30 30 - 48 31 - 49 32 - 50 33 - 51 34 - 52 35 - 53 36 - 54 37 - 55 38 - 56 39 - 57 3A - 58 3B - 59 3C - 60 3D - 61 3E - 62 3F - 63 U+0030 U+0031 U+0032 U+0033 U+0034 U+0035 U+0036 U+0037 U+0038 U+0039 U+003A U+003B U+003C U+003D U+003E U+003F @ A B C D E F G H I J K L M N O 40 40 - 64 41 - 65 42 - 66 43 - 67 44 - 68 45 - 69 46 - 70 47 - 71 48 - 72 49 - 73 4A - 74 4B - 75 4C - 76 4D - 77 4E - 78 4F - 79 U+0040 U+0041 U+0042 U+0043 U+0044 U+0045 U+0046 U+0047 U+0048 U+0049 U+004A U+004B U+004C U+004D U+004E U+004F P Q R S T U V W X Y Z [ \ ] ^ _ 50 50 - 80 51 - 81 52 - 82 53 - 83 54 - 84 55 - 85 56 - 86 57 - 87 58 - 88 59 - 89 5A - 90 5B - 91 5C - 92 5D - 93 5E - 94 5F - 95 U+0050 U+0051 U+0052 U+0053 U+0054 U+0055 U+0056 U+0057 U+0058 U+0059 U+005A U+005B U+005C U+005D U+005E U+005F ` a b c d e f g h i j k l m n o 60 60 - 96 61 - 97 62 - 98 63 - 99 64 - 100 65 - 101 66 - 102 67 - 103 68 - 104 69 - 105 6A - 106 6B - 107 6C - 108 6D - 109 6E - 110 6F - 111 U+0060 U+0061 U+0062 U+0063 U+0064 U+0065 U+0066 U+0067 U+0068 U+0069 U+006A U+006B U+006C U+006D U+006E U+006F p q r s t u v w x y z { | } ~ DEL 70 70 - 112 71 - 113 72 - 114 73 - 115 74 - 116 75 - 117 76 - 118 77 - 119 78 - 120 79 - 121 7A - 122 7B - 123 7C - 124 7D - 125 7E - 126 7F - 127 U+0070 U+0071 U+0072 U+0073 U+0074 U+0075 U+0076 U+0077 U+0078 U+0079 U+007A U+007B U+007C U+007D U+007E U+007F Ç ü é â ä à å ç ê ë è ï î ì Ä Å 80 80 - 128 81 - 129 82 - 130 83 - 131 84 - 132 85 - 133 86 - 134 87 - 135 88 - 136 89 - 137 8A - 138 8B - 139 8C - 140 8D - 141 8E - 142 8F - 143 U+00C7 U+00FC U+00E9 U+00E2 U+00E4 U+00E0 U+00E5 U+00E7 U+00EA U+00EB U+00E8 U+00EF U+00EE U+00EC U+00C4 U+00C5 É æ Æ ô ö ò û ù ÿ Ö Ü ¢ £ ¥ ₧ ƒ 90 90 - 144 91 - 145 92 - 146 93 - 147 94 - 148 95 - 149 96 - 150 97 - 151 98 - 152 99 - 153 9A - 154 9B - 155 9C - 156 9D - 157 9E - 158 9F - 159 U+00C9 U+00E6 U+00C6 U+00F4 U+00F6 U+00F2 U+00FB U+00F9 U+00FF U+00D6 U+00DC U+00A2 U+00A3 U+00A5 U+20A7 U+0192 á í ó ú ñ Ñ ª º ¿ ⌐ ¬ ½ ¼ ¡ « » A0 A0 - 160 A1 - 161 A2 - 162 A3 - 163 A4 - 164 A5 - 165 A6 - 166 A7 - 167 A8 - 168 A9 - 169 AA - 170 AB - 171 AC - 172 AD - 173 AE - 174 AF - 175 U+00E1 U+00ED U+00F3 U+00FA U+00F1 U+00D1 U+00AA U+00BA U+00BF U+2310 U+00AC U+00BD U+00BC U+00A1 U+00AB U+00BB ░ ▒ ▓ │ ┤ ╡ ╢ ╖ ╕ ╣ ║ ╗ ╝ ╜ ╛ ┐ B0 B0 - 176 B1 - 177 B2 - 178 B3 - 179 B4 - 180 B5 - 181 B6 - 182 B7 - 183 B8 - 184 B9 - 185 BA - 186 BB - 187 BC - 188 BD - 189 BE - 190 BF - 191 U+2591 U+2592 U+2593 U+2502 U+2524 U+2561 U+2562 U+2556 U+2555 U+2563 U+2551 U+2557 U+255D U+255C U+255B U+2510 └ ┴ ┬ ├ ─ ┼ ╞ ╟ ╚ ╔ ╩ ╦ ╠ ═ ╬ ╧ C0 C0 - 192 C1 - 193 C2 - 194 C3 - 195 C4 - 196 C5 - 197 C6 - 198 C7 - 199 C8 - 200 C9 - 201 CA - 202 CB - 203 CC - 204 CD - 205 CE - 206 CF - 207 U+2514 U+2534 U+252C U+251C U+2500 U+253C U+255E U+255F U+255A U+2554 U+2569 U+2566 U+2560 U+2550 U+256C U+2567 ╨ ╤ ╥ ╙ ╘ ╒ ╓ ╫ ╪ ┘ ┌ █ ▄ ▌ ▐ ▀ D0 D0 - 208 D1 - 209 D2 - 210 D3 - 211 D4 - 212 D5 - 213 D6 - 214 D7 - 215 D8 - 216 D9 - 217 DA - 218 DB - 219 DC - 220 DD - 221 DE - 222 DF - 223 U+2568 U+2564 U+2565 U+2559 U+2558 U+2552 U+2553 U+256B U+256A U+2518 U+250C U+2588 U+2584 U+258C U+2590 U+2580 α ß Γ π Σ σ µ τ Φ Θ Ω δ ∞ φ ε ∩ E0 E0 - 224 E1 - 225 E2 - 226 E3 - 227 E4 - 228 E5 - 229 E6 - 230 E7 - 231 E8 - 232 E9 - 233 EA - 234 EB - 235 EC - 236 ED - 237 EE - 238 EF - 239 U+03B1 U+00DF U+0393 U+03C0 U+03A3 U+03C3 U+00B5 U+03C4 U+03A6 U+0398 U+03A9 U+03B4 U+221E U+03C6 U+03B5 U+2229 ≡ ± ≥ ≤ ⌠ ⌡ ÷ ≈ ° · · √ ⁿ ² ■ F0 F0 - 240 F1 - 241 F2 - 242 F3 - 243 F4 - 244 F5 - 245 F6 - 246 F7 - 247 F8 - 248 F9 - 249 FA - 250 FB - 251 FC - 252 FD - 253 FE - 254 FF - 255 U+2261 U+00B1 U+2265 U+2264 U+2320 U+2321 U+00F7 U+2248 U+00B0 U+2219 U+00B7 U+221A U+207F U+00B2 U+25A0 U+00A0

Page 65 of 77 Adaptus Imagers in international Applications 9 What are Codepages? Last revision of this document: 2005-05-02 9.2.2 CP850 (MS-DOS, OS/2 in Europe)

Code Page DOS CP850 Multilingual (Latin I)

0 1 2 3 4 5 6 7 8 9 A B C D E F NUL SOH STX ETX EOT ENQ ACK BEL BS HT LF VT FF CR SO SI 00 00 - 0 01 - 1 02 - 2 03 - 3 04 - 4 05 - 5 06 - 6 07 - 7 08 - 8 09 - 9 0A - 10 0B - 11 0C - 12 0D - 13 0E - 14 0F - 15 U+0000 U+0001 U+0002 U+0003 U+0004 U+0005 U+0006 U+0007 U+0008 U+0009 U+000A U+000B U+000C U+000D U+000E U+000F DLE DC1 DC2 DC3 DC4 NAK SYN ETB CAN EM SUB ESC FS GS RS US 10 10 - 16 11 - 17 12 - 18 13 - 19 14 - 20 15 - 21 16 - 22 17 - 23 18 - 24 19 - 25 1A - 26 1B - 27 1C - 28 1D - 29 1E - 30 1F - 31 U+0010 U+0011 U+0012 U+0013 U+0014 U+0015 U+0016 U+0017 U+0018 U+0019 U+001A U+001B U+001C U+001D U+001E U+001F ! " # $ % & ' ( ) * + , - . / 20 20 - 32 21 - 33 22 - 34 23 - 35 24 - 36 25 - 37 26 - 38 27 - 39 28 - 40 29 - 41 2A - 42 2B - 43 2C - 44 2D - 45 2E - 46 2F - 47 U+0020 U+0021 U+0022 U+0023 U+0024 U+0025 U+0026 U+0027 U+0028 U+0029 U+002A U+002B U+002C U+002D U+002E U+002F 0 1 2 3 4 5 6 7 8 9 : ; < = > ? 30 30 - 48 31 - 49 32 - 50 33 - 51 34 - 52 35 - 53 36 - 54 37 - 55 38 - 56 39 - 57 3A - 58 3B - 59 3C - 60 3D - 61 3E - 62 3F - 63 U+0030 U+0031 U+0032 U+0033 U+0034 U+0035 U+0036 U+0037 U+0038 U+0039 U+003A U+003B U+003C U+003D U+003E U+003F @ A B C D E F G H I J K L M N O 40 40 - 64 41 - 65 42 - 66 43 - 67 44 - 68 45 - 69 46 - 70 47 - 71 48 - 72 49 - 73 4A - 74 4B - 75 4C - 76 4D - 77 4E - 78 4F - 79 U+0040 U+0041 U+0042 U+0043 U+0044 U+0045 U+0046 U+0047 U+0048 U+0049 U+004A U+004B U+004C U+004D U+004E U+004F P Q R S T U V W X Y Z [ \ ] ^ _ 50 50 - 80 51 - 81 52 - 82 53 - 83 54 - 84 55 - 85 56 - 86 57 - 87 58 - 88 59 - 89 5A - 90 5B - 91 5C - 92 5D - 93 5E - 94 5F - 95 U+0050 U+0051 U+0052 U+0053 U+0054 U+0055 U+0056 U+0057 U+0058 U+0059 U+005A U+005B U+005C U+005D U+005E U+005F ` a b c d e f g h i j k l m n o 60 60 - 96 61 - 97 62 - 98 63 - 99 64 - 100 65 - 101 66 - 102 67 - 103 68 - 104 69 - 105 6A - 106 6B - 107 6C - 108 6D - 109 6E - 110 6F - 111 U+0060 U+0061 U+0062 U+0063 U+0064 U+0065 U+0066 U+0067 U+0068 U+0069 U+006A U+006B U+006C U+006D U+006E U+006F p q r s t u v w x y z { | } ~ DEL 70 70 - 112 71 - 113 72 - 114 73 - 115 74 - 116 75 - 117 76 - 118 77 - 119 78 - 120 79 - 121 7A - 122 7B - 123 7C - 124 7D - 125 7E - 126 7F - 127 U+0070 U+0071 U+0072 U+0073 U+0074 U+0075 U+0076 U+0077 U+0078 U+0079 U+007A U+007B U+007C U+007D U+007E U+007F Ç ü é â ä à å ç ê ë è ï î ì Ä Å 80 80 - 128 81 - 129 82 - 130 83 - 131 84 - 132 85 - 133 86 - 134 87 - 135 88 - 136 89 - 137 8A - 138 8B - 139 8C - 140 8D - 141 8E - 142 8F - 143 U+00C7 U+00FC U+00E9 U+00E2 U+00E4 U+00E0 U+00E5 U+00E7 U+00EA U+00EB U+00E8 U+00EF U+00EE U+00EC U+00C4 U+00C5 É æ Æ ô ö ò û ù ÿ Ö Ü ø £ Ø × ƒ 90 90 - 144 91 - 145 92 - 146 93 - 147 94 - 148 95 - 149 96 - 150 97 - 151 98 - 152 99 - 153 9A - 154 9B - 155 9C - 156 9D - 157 9E - 158 9F - 159 U+00C9 U+00E6 U+00C6 U+00F4 U+00F6 U+00F2 U+00FB U+00F9 U+00FF U+00D6 U+00DC U+00F8 U+00A3 U+00D8 U+00D7 U+0192 á í ó ú ñ Ñ ª º ¿ ® ¬ ½ ¼ ¡ « » A0 A0 - 160 A1 - 161 A2 - 162 A3 - 163 A4 - 164 A5 - 165 A6 - 166 A7 - 167 A8 - 168 A9 - 169 AA - 170 AB - 171 AC - 172 AD - 173 AE - 174 AF - 175 U+00E1 U+00ED U+00F3 U+00FA U+00F1 U+00D1 U+00AA U+00BA U+00BF U+00AE U+00AC U+00BD U+00BC U+00A1 U+00AB U+00BB ░ ▒ ▓ │ ┤ Á Â À © ╣ ║ ╗ ╝ ¢ ¥ ┐ B0 B0 - 176 B1 - 177 B2 - 178 B3 - 179 B4 - 180 B5 - 181 B6 - 182 B7 - 183 B8 - 184 B9 - 185 BA - 186 BB - 187 BC - 188 BD - 189 BE - 190 BF - 191 U+2591 U+2592 U+2593 U+2502 U+2524 U+00C1 U+00C2 U+00C0 U+00A9 U+2563 U+2551 U+2557 U+255D U+00A2 U+00A5 U+2510 └ ┴ ┬ ├ ─ ┼ ã Ã ╚ ╔ ╩ ╦ ╠ ═ ╬ ¤ C0 C0 - 192 C1 - 193 C2 - 194 C3 - 195 C4 - 196 C5 - 197 C6 - 198 C7 - 199 C8 - 200 C9 - 201 CA - 202 CB - 203 CC - 204 CD - 205 CE - 206 CF - 207 U+2514 U+2534 U+252C U+251C U+2500 U+253C U+00E3 U+00C3 U+255A U+2554 U+2569 U+2566 U+2560 U+2550 U+256C U+00A4 ð Ð Ê Ë È ı Í Î Ï ┘ ┌ █ ▄ ¦ Ì ▀ D0 D0 - 208 D1 - 209 D2 - 210 D3 - 211 D4 - 212 D5 - 213 D6 - 214 D7 - 215 D8 - 216 D9 - 217 DA - 218 DB - 219 DC - 220 DD - 221 DE - 222 DF - 223 U+00F0 U+00D0 U+00CA U+00CB U+00C8 U+0131 U+00CD U+00CE U+00CF U+2518 U+250C U+2588 U+2584 U+00A6 U+00CC U+2580 Ó ß Ô Ò õ Õ µ þ Þ Ú Û Ù ý Ý ¯ ´ E0 E0 - 224 E1 - 225 E2 - 226 E3 - 227 E4 - 228 E5 - 229 E6 - 230 E7 - 231 E8 - 232 E9 - 233 EA - 234 EB - 235 EC - 236 ED - 237 EE - 238 EF - 239 U+00D3 U+00DF U+00D4 U+00D2 U+00F5 U+00D5 U+00B5 U+00FE U+00DE U+00DA U+00DB U+00D9 U+00FD U+00DD U+00AF U+00B4 - ± ‗ ¾ ¶ § ÷ ¸ ° ¨ · ¹ ³ ² ■ F0 F0 - 240 F1 - 241 F2 - 242 F3 - 243 F4 - 244 F5 - 245 F6 - 246 F7 - 247 F8 - 248 F9 - 249 FA - 250 FB - 251 FC - 252 FD - 253 FE - 254 FF - 255 U+00AD U+00B1 U+2017 U+00BE U+00B6 U+00A7 U+00F7 U+00B8 U+00B0 U+00A8 U+00B7 U+00B9 U+00B3 U+00B2 U+25A0 U+00A0

Page 66 of 77 Adaptus Imagers in international Applications 9 What are Codepages? Last revision of this document: 2005-05-02

9.2.3 CP1252 (MS-Windows in Europe and USA)

Code Page WIN CP1252 Western

0 1 2 3 4 5 6 7 8 9 A B C D E F NUL SOH STX ETX EOT ENQ ACK BEL BS HT LF VT FF CR SO SI 00 00 - 0 01 - 1 02 - 2 03 - 3 04 - 4 05 - 5 06 - 6 07 - 7 08 - 8 09 - 9 0A - 10 0B - 11 0C - 12 0D - 13 0E - 14 0F - 15 U+0000 U+0001 U+0002 U+0003 U+0004 U+0005 U+0006 U+0007 U+0008 U+0009 U+000A U+000B U+000C U+000D U+000E U+000F DLE DC1 DC2 DC3 DC4 NAK SYN ETB CAN EM SUB ESC FS GS RS US 10 10 - 16 11 - 17 12 - 18 13 - 19 14 - 20 15 - 21 16 - 22 17 - 23 18 - 24 19 - 25 1A - 26 1B - 27 1C - 28 1D - 29 1E - 30 1F - 31 U+0010 U+0011 U+0012 U+0013 U+0014 U+0015 U+0016 U+0017 U+0018 U+0019 U+001A U+001B U+001C U+001D U+001E U+001F ! " # $ % & ' ( ) * + , - . / 20 20 - 32 21 - 33 22 - 34 23 - 35 24 - 36 25 - 37 26 - 38 27 - 39 28 - 40 29 - 41 2A - 42 2B - 43 2C - 44 2D - 45 2E - 46 2F - 47 U+0020 U+0021 U+0022 U+0023 U+0024 U+0025 U+0026 U+0027 U+0028 U+0029 U+002A U+002B U+002C U+002D U+002E U+002F 0 1 2 3 4 5 6 7 8 9 : ; < = > ? 30 30 - 48 31 - 49 32 - 50 33 - 51 34 - 52 35 - 53 36 - 54 37 - 55 38 - 56 39 - 57 3A - 58 3B - 59 3C - 60 3D - 61 3E - 62 3F - 63 U+0030 U+0031 U+0032 U+0033 U+0034 U+0035 U+0036 U+0037 U+0038 U+0039 U+003A U+003B U+003C U+003D U+003E U+003F @ A B C D E F G H I J K L M N O 40 40 - 64 41 - 65 42 - 66 43 - 67 44 - 68 45 - 69 46 - 70 47 - 71 48 - 72 49 - 73 4A - 74 4B - 75 4C - 76 4D - 77 4E - 78 4F - 79 U+0040 U+0041 U+0042 U+0043 U+0044 U+0045 U+0046 U+0047 U+0048 U+0049 U+004A U+004B U+004C U+004D U+004E U+004F P Q R S T U V W X Y Z [ \ ] ^ _ 50 50 - 80 51 - 81 52 - 82 53 - 83 54 - 84 55 - 85 56 - 86 57 - 87 58 - 88 59 - 89 5A - 90 5B - 91 5C - 92 5D - 93 5E - 94 5F - 95 U+0050 U+0051 U+0052 U+0053 U+0054 U+0055 U+0056 U+0057 U+0058 U+0059 U+005A U+005B U+005C U+005D U+005E U+005F ` a b c d e f g h i j k l m n o 60 60 - 96 61 - 97 62 - 98 63 - 99 64 - 100 65 - 101 66 - 102 67 - 103 68 - 104 69 - 105 6A - 106 6B - 107 6C - 108 6D - 109 6E - 110 6F - 111 U+0060 U+0061 U+0062 U+0063 U+0064 U+0065 U+0066 U+0067 U+0068 U+0069 U+006A U+006B U+006C U+006D U+006E U+006F p q r s t u v w x y z { | } ~ DEL 70 70 - 112 71 - 113 72 - 114 73 - 115 74 - 116 75 - 117 76 - 118 77 - 119 78 - 120 79 - 121 7A - 122 7B - 123 7C - 124 7D - 125 7E - 126 7F - 127 U+0070 U+0071 U+0072 U+0073 U+0074 U+0075 U+0076 U+0077 U+0078 U+0079 U+007A U+007B U+007C U+007D U+007E U+007F € ‚ ƒ „ … † ‡ ˆ ‰ Š ‹ Œ Ž 80 80 - 128 81 - 129 82 - 130 83 - 131 84 - 132 85 - 133 86 - 134 87 - 135 88 - 136 89 - 137 8A - 138 8B - 139 8C - 140 8D - 141 8E - 142 8F - 143 U+20AC U+201A U+0192 U+201E U+2026 U+2020 U+2021 U+02C6 U+2030 U+0160 U+2039 U+0152 U+017D ‘ ’ “ ” • – — ˜ ™ š › œ ž Ÿ 90 90 - 144 91 - 145 92 - 146 93 - 147 94 - 148 95 - 149 96 - 150 97 - 151 98 - 152 99 - 153 9A - 154 9B - 155 9C - 156 9D - 157 9E - 158 9F - 159 U+2018 U+2019 U+201C U+201D U+2022 U+2013 U+2014 U+02DC U+2122 U+0161 U+203A U+0153 U+017E U+0178 ¡ ¢ £ ¤ ¥ ¦ § ¨ © ª « ¬ - ® ¯ A0 A0 - 160 A1 - 161 A2 - 162 A3 - 163 A4 - 164 A5 - 165 A6 - 166 A7 - 167 A8 - 168 A9 - 169 AA - 170 AB - 171 AC - 172 AD - 173 AE - 174 AF - 175 U+00A0 U+00A1 U+00A2 U+00A3 U+00A4 U+00A5 U+00A6 U+00A7 U+00A8 U+00A9 U+00AA U+00AB U+00AC U+00AD U+00AE U+00AF ° ± ² ³ ´ µ ¶ · ¸ ¹ º » ¼ ½ ¾ ¿ B0 B0 - 176 B1 - 177 B2 - 178 B3 - 179 B4 - 180 B5 - 181 B6 - 182 B7 - 183 B8 - 184 B9 - 185 BA - 186 BB - 187 BC - 188 BD - 189 BE - 190 BF - 191 U+00B0 U+00B1 U+00B2 U+00B3 U+00B4 U+00B5 U+00B6 U+00B7 U+00B8 U+00B9 U+00BA U+00BB U+00BC U+00BD U+00BE U+00BF À Á Â Ã Ä Å Æ Ç È É Ê Ë Ì Í Î Ï C0 C0 - 192 C1 - 193 C2 - 194 C3 - 195 C4 - 196 C5 - 197 C6 - 198 C7 - 199 C8 - 200 C9 - 201 CA - 202 CB - 203 CC - 204 CD - 205 CE - 206 CF - 207 U+00C0 U+00C1 U+00C2 U+00C3 U+00C4 U+00C5 U+00C6 U+00C7 U+00C8 U+00C9 U+00CA U+00CB U+00CC U+00CD U+00CE U+00CF Ð Ñ Ò Ó Ô Õ Ö × Ø Ù Ú Û Ü Ý Þ ß D0 D0 - 208 D1 - 209 D2 - 210 D3 - 211 D4 - 212 D5 - 213 D6 - 214 D7 - 215 D8 - 216 D9 - 217 DA - 218 DB - 219 DC - 220 DD - 221 DE - 222 DF - 223 U+00D0 U+00D1 U+00D2 U+00D3 U+00D4 U+00D5 U+00D6 U+00D7 U+00D8 U+00D9 U+00DA U+00DB U+00DC U+00DD U+00DE U+00DF à á â ã ä å æ ç è é ê ë ì í î ï E0 E0 - 224 E1 - 225 E2 - 226 E3 - 227 E4 - 228 E5 - 229 E6 - 230 E7 - 231 E8 - 232 E9 - 233 EA - 234 EB - 235 EC - 236 ED - 237 EE - 238 EF - 239 U+00E0 U+00E1 U+00E2 U+00E3 U+00E4 U+00E5 U+00E6 U+00E7 U+00E8 U+00E9 U+00EA U+00EB U+00EC U+00ED U+00EE U+00EF ð ñ ò ó ô õ ö ÷ ø ù ú û ü ý þ ÿ F0 F0 - 240 F1 - 241 F2 - 242 F3 - 243 F4 - 244 F5 - 245 F6 - 246 F7 - 247 F8 - 248 F9 - 249 FA - 250 FB - 251 FC - 252 FD - 253 FE - 254 FF - 255 U+00F0 U+00F1 U+00F2 U+00F3 U+00F4 U+00F5 U+00F6 U+00F7 U+00F8 U+00F9 U+00FA U+00FB U+00FC U+00FD U+00FE U+00FF

Page 67 of 77 Adaptus Imagers in international Applications 9 What are Codepages? Last revision of this document: 2005-05-02

9.2.4 CP1251 (Cyrillic as an example)

Code Page WIN CP1251 Cyrillic

0 1 2 3 4 5 6 7 8 9 A B C D E F NUL SOH STX ETX EOT ENQ ACK BEL BS HT LF VT FF CR SO SI 00 00 - 0 01 - 1 02 - 2 03 - 3 04 - 4 05 - 5 06 - 6 07 - 7 08 - 8 09 - 9 0A - 10 0B - 11 0C - 12 0D - 13 0E - 14 0F - 15 U+0000 U+0001 U+0002 U+0003 U+0004 U+0005 U+0006 U+0007 U+0008 U+0009 U+000A U+000B U+000C U+000D U+000E U+000F DLE DC1 DC2 DC3 DC4 NAK SYN ETB CAN EM SUB ESC FS GS RS US 10 10 - 16 11 - 17 12 - 18 13 - 19 14 - 20 15 - 21 16 - 22 17 - 23 18 - 24 19 - 25 1A - 26 1B - 27 1C - 28 1D - 29 1E - 30 1F - 31 U+0010 U+0011 U+0012 U+0013 U+0014 U+0015 U+0016 U+0017 U+0018 U+0019 U+001A U+001B U+001C U+001D U+001E U+001F ! " # $ % & ' ( ) * + , - . / 20 20 - 32 21 - 33 22 - 34 23 - 35 24 - 36 25 - 37 26 - 38 27 - 39 28 - 40 29 - 41 2A - 42 2B - 43 2C - 44 2D - 45 2E - 46 2F - 47 U+0020 U+0021 U+0022 U+0023 U+0024 U+0025 U+0026 U+0027 U+0028 U+0029 U+002A U+002B U+002C U+002D U+002E U+002F 0 1 2 3 4 5 6 7 8 9 : ; < = > ? 30 30 - 48 31 - 49 32 - 50 33 - 51 34 - 52 35 - 53 36 - 54 37 - 55 38 - 56 39 - 57 3A - 58 3B - 59 3C - 60 3D - 61 3E - 62 3F - 63 U+0030 U+0031 U+0032 U+0033 U+0034 U+0035 U+0036 U+0037 U+0038 U+0039 U+003A U+003B U+003C U+003D U+003E U+003F @ A B C D E F G H I J K L M N O 40 40 - 64 41 - 65 42 - 66 43 - 67 44 - 68 45 - 69 46 - 70 47 - 71 48 - 72 49 - 73 4A - 74 4B - 75 4C - 76 4D - 77 4E - 78 4F - 79 U+0040 U+0041 U+0042 U+0043 U+0044 U+0045 U+0046 U+0047 U+0048 U+0049 U+004A U+004B U+004C U+004D U+004E U+004F P Q R S T U V W X Y Z [ \ ] ^ _ 50 50 - 80 51 - 81 52 - 82 53 - 83 54 - 84 55 - 85 56 - 86 57 - 87 58 - 88 59 - 89 5A - 90 5B - 91 5C - 92 5D - 93 5E - 94 5F - 95 U+0050 U+0051 U+0052 U+0053 U+0054 U+0055 U+0056 U+0057 U+0058 U+0059 U+005A U+005B U+005C U+005D U+005E U+005F ` a b c d e f g h i j k l m n o 60 60 - 96 61 - 97 62 - 98 63 - 99 64 - 100 65 - 101 66 - 102 67 - 103 68 - 104 69 - 105 6A - 106 6B - 107 6C - 108 6D - 109 6E - 110 6F - 111 U+0060 U+0061 U+0062 U+0063 U+0064 U+0065 U+0066 U+0067 U+0068 U+0069 U+006A U+006B U+006C U+006D U+006E U+006F p q r s t u v w x y z { | } ~ DEL 70 70 - 112 71 - 113 72 - 114 73 - 115 74 - 116 75 - 117 76 - 118 77 - 119 78 - 120 79 - 121 7A - 122 7B - 123 7C - 124 7D - 125 7E - 126 7F - 127 U+0070 U+0071 U+0072 U+0073 U+0074 U+0075 U+0076 U+0077 U+0078 U+0079 U+007A U+007B U+007C U+007D U+007E U+007F Ђ Ѓ ‚ ѓ „ … † ‡ € ‰ Љ ‹ Њ Ќ Ћ Џ 80 80 - 128 81 - 129 82 - 130 83 - 131 84 - 132 85 - 133 86 - 134 87 - 135 88 - 136 89 - 137 8A - 138 8B - 139 8C - 140 8D - 141 8E - 142 8F - 143 U+0402 U+0403 U+201A U+0453 U+201E U+2026 U+2020 U+2021 U+20AC U+2030 U+0409 U+2039 U+040A U+040C U+040B U+040F ђ ‘ ’ “ ” • – — ™ љ › њ ќ ћ џ 90 90 - 144 91 - 145 92 - 146 93 - 147 94 - 148 95 - 149 96 - 150 97 - 151 98 - 152 99 - 153 9A - 154 9B - 155 9C - 156 9D - 157 9E - 158 9F - 159 U+0452 U+2018 U+2019 U+201C U+201D U+2022 U+2013 U+2014 U+2122 U+0459 U+203A U+045A U+045C U+045B U+045F Ў ў Ј ¤ Ґ ¦ § Ё © Є « ¬ - ® Ї A0 A0 - 160 A1 - 161 A2 - 162 A3 - 163 A4 - 164 A5 - 165 A6 - 166 A7 - 167 A8 - 168 A9 - 169 AA - 170 AB - 171 AC - 172 AD - 173 AE - 174 AF - 175 U+00A0 U+040E U+045E U+0408 U+00A4 U+0490 U+00A6 U+00A7 U+0401 U+00A9 U+0404 U+00AB U+00AC U+00AD U+00AE U+0407 ° ± І і ґ µ ¶ · ё № є » ј Ѕ ѕ ї B0 B0 - 176 B1 - 177 B2 - 178 B3 - 179 B4 - 180 B5 - 181 B6 - 182 B7 - 183 B8 - 184 B9 - 185 BA - 186 BB - 187 BC - 188 BD - 189 BE - 190 BF - 191 U+00B0 U+00B1 U+0406 U+0456 U+0491 U+00B5 U+00B6 U+00B7 U+0451 U+2116 U+0454 U+00BB U+0458 U+0405 U+0455 U+0457 А Б В Г Д Е Ж З И Й К Л М Н О П C0 C0 - 192 C1 - 193 C2 - 194 C3 - 195 C4 - 196 C5 - 197 C6 - 198 C7 - 199 C8 - 200 C9 - 201 CA - 202 CB - 203 CC - 204 CD - 205 CE - 206 CF - 207 U+0410 U+0411 U+0412 U+0413 U+0414 U+0415 U+0416 U+0417 U+0418 U+0419 U+041A U+041B U+041C U+041D U+041E U+041F Р С Т У Ф Х Ц Ч Ш Щ Ъ Ы Ь Э Ю Я D0 D0 - 208 D1 - 209 D2 - 210 D3 - 211 D4 - 212 D5 - 213 D6 - 214 D7 - 215 D8 - 216 D9 - 217 DA - 218 DB - 219 DC - 220 DD - 221 DE - 222 DF - 223 U+0420 U+0421 U+0422 U+0423 U+0424 U+0425 U+0426 U+0427 U+0428 U+0429 U+042A U+042B U+042C U+042D U+042E U+042F а б в г д е ж з и й к л м н о п E0 E0 - 224 E1 - 225 E2 - 226 E3 - 227 E4 - 228 E5 - 229 E6 - 230 E7 - 231 E8 - 232 E9 - 233 EA - 234 EB - 235 EC - 236 ED - 237 EE - 238 EF - 239 U+0430 U+0431 U+0432 U+0433 U+0434 U+0435 U+0436 U+0437 U+0438 U+0439 U+043A U+043B U+043C U+043D U+043E U+043F р с т у ф х ц ч ш щ ъ ы ь э ю я F0 F0 - 240 F1 - 241 F2 - 242 F3 - 243 F4 - 244 F5 - 245 F6 - 246 F7 - 247 F8 - 248 F9 - 249 FA - 250 FB - 251 FC - 252 FD - 253 FE - 254 FF - 255 U+0440 U+0441 U+0442 U+0443 U+0444 U+0445 U+0446 U+0447 U+0448 U+0449 U+044A U+044B U+044C U+044D U+044E U+044F

Page 68 of 77 Adaptus Imagers in international Applications 10 What is Unicode? Last revision of this document: 2005-05-02 10 What is Unicode?

The old system with codepages is not enough to represent all the characters from all spoken languages. And there are many other disadvantages as well (try to write a program for the market in Asia, then you will understand). To overcome the bad situation a new standard for character encoding was developed and later it was accepted by the ISO as ISO/IEC 10646. Each character is 32 bit wide. This allows for a huge number of characters. A subset (basic multilingual plane) is using characters with 16 bits which is enough for all major languages including Japanese and Chinese. This is what we use in our devices. See much more details at www.unicode.org. A very good FAQ you can find there: http://www.cl.cam.ac.uk/~mgk25/unicode.html. Allow me to quote a few important statements from www.unicode.org:

Unicode provides a unique number for every character, no matter what the platform, no matter what the program, no matter what the language.

Fundamentally, computers just deal with numbers. They store letters and other characters by assigning a number for each one. Before Unicode was invented, there were hundreds of different encoding systems for assigning these numbers. No single encoding could contain enough characters: for example, the European Union alone requires several different encodings to cover all its languages. Even for a single language like English no single encoding was adequate for all the letters, punctuation, and technical symbols in common use. These encoding systems also conflict with one another. That is, two encodings can use the same number for two different characters, or use different numbers for the same character. Any given computer (especially servers) needs to support many different encodings; yet whenever data is passed between different encodings or platforms, that data always runs the risk of corruption. Unicode is changing all that! Unicode provides a consistent way of encoding multilingual plain text and brings order to a chaotic state of affairs that has made it difficult to exchange text files internationally. Computer users who deal with multilingual text -- business people, linguists, researchers, scientists, and others -- will find that the Unicode Standard greatly simplifies their work. Mathematicians and technicians, who regularly use mathematical symbols and other technical characters, will also find the Unicode Standard valuable. The design of Unicode is based on the simplicity and consistency of ASCII, but goes far beyond ASCII's limited ability to encode only the . The Unicode Standard provides the capacity to encode all of the characters used for the written languages of the world. To keep character coding simple and efficient, the Unicode Standard assigns each character a unique numeric value and name. The original goal was to use a single 16-bit encoding that provides code points for more than 65,000 characters. While 65,000 characters are sufficient for encoding most of the many thousands of characters used in major languages of the world, the Unicode standard and ISO/IEC 10646 now support three encoding forms that use a common repertoire of characters but allow for encoding as many as a million more characters. This is sufficient for all known character encoding requirements, including full coverage of all historic scripts of the world, as well as common notational systems.

Page 69 of 77 Adaptus Imagers in international Applications 10 What is Unicode? Last revision of this document: 2005-05-02 10.1 Unicode encoding forms

Character encoding standards define not only the identity of each character and its numeric value, or code point, but also how this value is represented in bits.

10.1.1 UTF16BE and UTF16LE

UTF-16 is popular in many environments that need to balance efficient access to characters with economical use of storage. It is reasonably compact and all the heavily used characters fit into a single 16- bit code unit, while all other characters are accessible via pairs of 16-bit code units. The two flavors BE (Big Endian) and LE (Little Endian) tell about the order of the bytes.

10.1.2 UTF8

UTF-8 is popular for HTML and similar protocols. UTF-8 is a way of transforming all Unicode characters into a variable length encoding of bytes. It has the advantages that the Unicode characters corresponding to the familiar ASCII set have the same byte values as ASCII, and that Unicode characters transformed into UTF-8 can be used with much existing software without extensive software rewrites.

Note: A UTF8 string can be longer than a UTF16 string if it contains a huge amount of characters 128. However, in most cases it is substantially shorter. A smart encoding software can pick the shortest representation and use ECI to tell the reader which one to use.

Page 70 of 77 Adaptus Imagers in international Applications 11 Test labels Last revision of this document: 2005-05-02 11 Test labels

11.1 Linear lables

BARCODE COMMENTS #$@[\]^`{|}~ Code 128

#$@[\]^`{|}~ Code 39 Turn on Full-ASCII in the Code 39 settings

11.2 2D labels with correct character encoding

These barcodes use the character encoding as described in the specification of the symbology. BARCODE COMMENTS CP437 äöüßÄÖÜ áéúàèù

ISO8859-1 äöüßÄÖÜ áéúàèù

Page 71 of 77 Adaptus Imagers in international Applications 11 Test labels Last revision of this document: 2005-05-02 BARCODE COMMENTS

11.3 2D labels with ECI

These barcodes contain ECI information to specify the character encoding. Please enable the ECI processing. BARCODE COMMENTS ECI ISO8859-1 äöüßÄÖÜ áéúàèù

ECI CP1252 äöüßÄÖÜ áéúàèù

ECI UTF8 äöüßÄÖÜ áéúàèù€

ECI UTF8 äöüßÄÖÜ áéúàèù€

ECI CP1252 äöüßÄÖÜ áéúàèù€

11.4 2D labels with bad character encoding

These barcodes violate the character encoding of the symbology. BARCODE COMMENTS CP1252 äöüßÄÖÜ áéúàèù This barcode violates the PDF417 specification for the codepage. It uses the CP1252 while the specification states to use CP437.

Page 72 of 77 Adaptus Imagers in international Applications 11 Test labels Last revision of this document: 2005-05-02 BARCODE COMMENTS

UTF8: äöüßÄÖÜ áéúàèù This barcode violates the ECC200 specification for the codepage. UTF8: äöüßÄÖÜ áéúàèù It encodes the characters with the UTF8 method instead of ISO8859.1.

CP1252 äöüßÄÖÜ áéúàèù€ This barcode violates the Aztec specification for the codepage. It encodes the characters with the CP1252 CP1252 äöüßÄÖÜ áéúàèù€ instead of ISO8859.1. This is dangerous because both codepages are quite similar to each other and therefore you might not see the problem while testing. Only the € is different in this example.

Page 73 of 77 Adaptus Imagers in international Applications 12 Examples Last revision of this document: 2005-05-02 12 Examples

Here we list a few cases we had recently.

12.1 Code 128 with ASCII and German Keyboard

Assumed we have the following label:

With the keyboard country set to Germany the default setting gives you the German characters "§ÄÖÜäöüß" because this is what the German codepage requires. But in our example we want the ASCII (ISO646) characters. So we scan this menu symbol to tell the IT3800 that the label was printed in ISO646.

DESCRIPTION COMMAND Input: First we must adjust to the printed barcodes and tell the Imager that the barcode is printed in ASCII (ISO 646).

Output: Keyboard country (layout)

Now you get the correct characters (@[\]{|}~).

12.2 Arabian text in Data Matrix

A customer wanted to encode Arabian text into a Data Matrix symbol. The default codepage for Data Matrix is ISO 8859-1 and cannot encode Arabian characters. ECI was not an option yet, so the codepage CP1256 was used despite the fact that this is not really inside the spec of Data Matrix. The test barcode contains the bytes 44 45 4D 4F 20 27 46 4A 33 20 0D. That is the word DEMO and a few Arabian characters (see them below) in CP1256.

To make it “easier”, the keyboard wedge interface should be used. Keyboard layout was set to USA and the codepage used by the PC was CP1256.

Page 74 of 77 Adaptus Imagers in international Applications 12 Examples Last revision of this document: 2005-05-02 The following settings lead to a successfully working system: DESCRIPTION COMMAND Input: First we must adjust to the wrong printed barcodes and tell the Imager that the barcode is printed in CP1256.

Output: The System codepage of the Imager must be set to CP1256 to allow for correct output

Output: Keyboard country (layout)

Output: Use the AltNumPad method with ordinal numbers from the system codepage.

12.3 Russian text in Aztec code

A customer in Russia wanted to encode Russian text into an Aztec symbol. The default codepage for Aztec is ISO 8859-1 and cannot encode Russian characters. ECI was not an option yet, so the codepage CP1251 was used despite the fact that this is not really inside the spec of Aztec. The test barcode contains the bytes: CE CE CE 20 D6 D8 CA 20 22 C3 E5 EA F1 E0 E3 EE ED 22 0D 03 1F With the PC set to Russia and the settings below you get this characters if you scan the test label: ООО ЦШК “Гексагон”

To make it “easier”, the keyboard wedge interface should be used. Keyboard layout is one of the 3 Russian flavors and the codepage used by the PC is CP1251. The following settings lead to a successfully working system: DESCRIPTION COMMAND Input: First we must adjust to the wrong printed barcodes and tell the Imager that the barcode is printed in CP1251.

Page 75 of 77 Adaptus Imagers in international Applications 12 Examples Last revision of this document: 2005-05-02 DESCRIPTION COMMAND Output: Keyboard country (layout). There are 3 different keyboard layouts for Russia. This one to the right is likely to work with non-windows applications.

This is most likely the correct one for Windows 2000 and XP. The difference to the above are only two keys: it does not have the “<>” key and the “\|” key is at a slightly different spot (but it should work in either case)

Another flavor. It has lots of different keys and the digits need the shift key.

Output: Use the AltNumPad method for characters not on the keyboard.

You need at least firmware 35122051.bin running in the Imager for this example.

Page 76 of 77 Adaptus Imagers in international Applications 13 FAQ Last revision of this document: 2005-05-02 13 FAQ

Q: I am getting wrong characters, when I scan , then I get . A: You probably selected the wrong country in the Imager. See page 14. Q: I get upper and lower case exchanged. A: The setting for the Caps lock does not fit to your environment. See page 19. Q: My barcodes contain characters between 0 and 1f. They are not send at all. A: The Imager has an option to remove all control characters. Ensure this is off. Check with ShowKeys what the Imager sends. Perhaps you need the Control+ASCII style. See page 21. Q: How can I send characters that are not on the keyboard? A: See page 16 Q: My system uses the scancode set 3. A: Select TermID 05 (DEC VT500 and compatibles). It has the same features and keyboard layouts as the TermID 03 (IBM AT and compatibles), but it uses the scancode set 3. Q: A: Q: A: Q: A: Q: A: Q: A:

Page 77 of 77