How key values are stored in registry, Change notification, Advanced keypad remapping – Intermec 700 User Manual

Page 318

Advertising
background image

Programming

Chapter

7

294

700 Series Color Mobile Computer User’s Manual

How Key Values Are Stored in Registry

To know which fields to update in the registry, you must know what Scan
Codes are assigned to each physical key (see the “Keypad Scan Codes and
Meanings”
table on the next page). The Scan Code is used at the lowest
level of the system to let the keypad driver know which physical key has
been pressed. The keypad driver takes that scan code and looks it up in a
table (a copy of the one stored in the registry) to determine which values
to pass on to the operating system.

Each registry key is just an array that describes to the keypad driver what
value needs to be passed for each physical key. The key values are indexed
by the scan code, this is a zero-based index. For example in the unshifted
plane, the [4] key has a scan code of 0x06. This means that the seventh
word under the “Vkey” registry key will have the value for the [4] key.
Taking a sample of the “Vkey” registry key shows the following values:

00,00,0B,05,02,03,C1,07,04,03,BE,00,34,00,00,00,. . .

The value is 34,00. The values are in reverse byte order because that is the
way the processor handles data. When writing an application, nothing
needs to be done to swap the bytes, as this will happen automatically when
the data is read into a byte value. This is something you just need to be
aware of when looking at the registry. Knowing this, we can see that the
value that the keypad driver will pass to the system is a hex 34. Looking
that up on an UNICODE character chart, we see that it maps to a “4”. If
you wanted the key, labeled “4”, to output the letter “A” instead, you
would need to change the seventh word to “41” (the hexadecimal repre-
sentation of “A” from the UNICODE chart), then put the key back into
the registry.

Note: Do not remap scan codes 0x01, 0x41, 0x42, 0x43, 0x44. Remap-
ping these scan codes could render your 700 Color Computer unusable
until a cold-boot is performed.

If you wish to disable a certain key, remap its scan code to 0x00.

Change Notification

Just changing the registry keys will not immediately change the key
mappings. To notify the keypad driver that the registry has been updated,
signal the “ITC_KEYBOARD_CHANGE” named event using the
CreateEvent() API.

Advanced Keypad Remapping

It is also possible to map multiple key presses to one button and to map
named system events to a button. The multiple key press option could be
useful to cut down on the number of keys needed to press in a given situa-
tion or to remap which key behaves like the action key. Mapping events to
a button could be useful to change which buttons will fire the scanner,
control volume, and allow for suspending and resuming the device. If you
need help performing one of these advanced topics please contact Intermec
Technical Support.

Advertising