No part of this publication may be reproduced or used in any form, or by any electrical or mechanical means,
without permission in writing from Zebra. This includes electronic or mechanical means, such as
photocopying, recording, or information storage and retrieval systems. The material in this manual is subject
to change without notice.
The software is provided strictly on an “as is” basis. All software, including firmware, furnished to the user is
on a licensed basis. Zebra grants to the user a non-transferable and non-exclusive license to use each
software or firmware program delivered hereunder (licensed program). Except as noted below, such licens
may not be assigned, sublicensed, or otherwise transferred by the user without prior written consent of
Zebra. No right to copy a licensed program in whole or in part is granted, except as permitted under copyright
law. The user shall not modify, merge, or incorporate any form or portion of a licensed program with other
program material, create a derivative work from a licensed program, or use a licensed program in a network
without written permission from Zebra. The user agrees to maintain Zebra’s copyright notice on the licensed
programs delivered hereunder, and to include the same on any authorized copies it makes, in whole or in
part. The user agrees not to decompile, disassemble, decode, or reverse engineer any licensed program
delivered to the user or any portion thereof.
Zebra reserves the right to make changes to any software or product to improve reliability, function, or
design.
e
Zebra does not assume any product liability
any product, circuit, or application described herein.
No license is granted, either expressly or by implication, estoppel, or otherwise under any Zebra, intellectual
property
products.
rights. An implied license only exists for equipment, circuits, and subsystems contained in Zebra
arising out of, or in connection with, the application or use of
iii
ivMobile Devices Developers Guide
Revision History
Changes to the original guide are listed below:
ChangeDateDescription
Rev A4/2012Initial release.
Rev. B11/2013Update
-001 Rev
. A
4/2015Zebra re-branding.
v
viMobile Devices Developers Guide
TABLE OF CONTENTS
Table of Conte n ts
About this Guide .............................................................................................................................xix
Text Conventions............................................................................................................................ xx
Other Documentation for Application Development...........................xxi
About this Guide
This manual provides guidance on creating applications for devices running Microsoft Windows® CE, or
Windows Mobile, operating systems.
Chapter 1: Backlight
describes how to control the backlights on Psion computers.
Chapter 2: Batteries and Power Management
describes how to control battery and external power supplies.
Chapter 3: Reset
describes how to reset Psion computers.
Chapter 4: Display
describes the processes for obtaining display screen information.
Chapter 5: Indicators
About this Guide xix
describes how to manipulate the LEDs.
Chapter 6: Keyboard and Keyboard Remapping
describes how to disable the keyboard and how to remap scan codes.
Chapter 7: Peripherals
describes how to detect and control tether ports and docking stations.
Chapter 8: Card Slots
describes how to control the power to card slots.
Chapter 9: Serial Ports
describes how to detect serial ports and serial port change events .
Chapter 10: Permanent Storage
describes how to access and use permanent storage.
Chapter 11: RAS (Remote Access Service)
describes how to use the Remote Access Service (RAS).
Chapter 12: Scanners
describes the configuration of scanners and bar code symbologies.
Chapter 13: Audio
describes how to control the beeper and how to play WAV files.
Chapter 14: System Information
describes how to control the Windows security and how to obtain hardware and
software information.
xxMobile Devices Developers Guide
Chapter 15: Windows Shell
describes how to set security levels and control access to the Windows shell.
Chapter 16: Trigger Control
describes how to control the trigger sources on a Psion computer.
Chapter 17: Wireless Local-Area Networking
describes how to implement WLAN.
Chapter 18: Wireless Wide-Area Networking
describes how to implement WWAN.
Chapter 19: Registry-based WWAN API
describes how to query properties of thr WWAN modem and WWAN network.
Chapter 20: GPS
describes how use the GPS.
Chapter 21: Sensors
describes how to use the built-in sensors.
Chapter 22: Other Features
describes the vibration feature and PsionVU.
Appendix A: Resources
lists other documents and web sites where you can find information related to developing with the
Mobile Devices SDK.
Appendix B: Registry Keys
lists and describes certain Workab outPro registry keys which may be useful when developing
applications on Psion computers.
Text Conventions
The following conventions and syntax are follo wed thr ougho ut this documen t, with the exception of when re ferencing API commands (see Command Syntax on page xxi):
•Instructions to press specific keys on the keypad are indicated with the na me or symbol of the ke y betwee
squ
are brackets.
e.g. [SPACE], [TAB], [BLUE], [A], [.], etc.
•Instructions to press buttons with dedicated functions are given with the name or function of the button in
bold type.
e.g. Power, Scan, etc.
n
•Instructions to type a specific string of text are given between quotation marks.
e.g. Type “exit”, and press [ENTER].
IMPORTANTThese statements provide important instructions or additional information that is critical
WARNINGThese statements provide important information that may prevent injury, damage to
An arrow next to field description information (usually in tables) indicates a recommended or suggested
configuration setting.
Command Syntax
When commands are described in text the following conventions are used in the manual:
•Elements that must be typed exactly as shown in the text are in bold.
•Elements that are placeholders are in italic.
The general form of a command is as follows:
About this Guide xxi
to the operation of the computer or other equipment.
the equipment, or loss of data.
sample {+r | -r} argument ... [option]
Where:
ElementMeaning
sampleIndicates the name of the command or utility.
{ }Surrounds a set of choices from which you must choose one.
|Separates two mutually exclusive choices in a syntax line. Type one of these choices, not
the symbol.
argumentSpecifies a variable name or other information that you must provide, such as a path and
file name.
...Indicates that you can type multiple arguments of the same type. Type only the
information, not the ellipsis (…).
[ ]Indicates one or more optional items. Type only the information within the brackets, not the
brackets themselves.
Non-Psion Computers
The Mobile Devices SDK cannot be used on computers other than those made by Psion. Attempts to load a
Psion DLL file on a non-Psion computer fail with an error message.
Other Documentation for Application Development
There are three categories of manuals that should be used when programming Psion computers.
This manual, the Developers Guide, provides an overview of the Psio n devices. A single Developers Guide
covers all libraries and devices. This manual is available in Portable Document Format (PDF).
xxiiMobile Devices Developers Guide
API online help is provided for each language library, in a format appropriate to that language. All information
specific to the language libraries, including class, method, field, and pr opert y descr iptions, are capture d by the
API online help.
In addition to the developer and API documentation, each Psion computer has a dedicated User Manual. You
need to obtain an actual device in order to test device-specific features such as bar code scanners. The User Manuals provide valuable help in getting acquainted with the features of these devices.
See Appendix A: “Manuals and URLs” for more information.
Mobile Devices SDK Version 5.4 and Later ..........................1-6
Mobile Devices SDK Version 5.3 and Earlier.........................1-6
Getting Started with Backlights.....................................1-10
Code Samples for Backlights......................................1-10
Backlight API Elements.........................................1-10
Backlighting
Full intensity
(on-time)
Half intensity
(dim-time)
Off
Last device activity
Time
The Mobile Devices SDK provides functions that control the display and keyboard backlights. The intensity of
the backlight and the conditions under which it is activated can be queried and set using the SDK.
To conserve battery power, you can configure the backlights to switch off, or dim to half intensity, after the
computer has been inactive for a selected length of time. The following diagram shows how these times
are related:
Backlight1 - 3
The last device activity is one of the following:
•A key is pressed on the keyboard.
•The touchscreen is pressed.
•The scanner trigger is pressed.
•Data is received from the host.
If the computer is operating with external power, you can configure the backlights to remain on at all times.
Omnii and EP10
These computers have light sensors. For information see Light Sensor on page 21-5.
Thresholds
On computers with ambient light sensors, the re is a thre sh old valu e that sp ecifies the light level at which the
backlights will turn on. The values for the display and keyboard backlight thresholds are
configured independently.
Threshold values are integers between 0 (zero) and 100. A value of 0 ensures that the selected backlight is
always off. A value of 100 ensures that the backlight can turn on at all lighting levels. Intermediate values
control the level of ambient light at which the backlight turns on. The lower the value, the darker it must be
before the keyboard backlight can turn on. Regardless of the thr eshold settings, the backlig ht s only come on if
there is activity to trigger it, such as a keyboard, or a touch screen, event.
Timeouts
Using the Mobile Devices SDK, the backlight on-times and dim-times can be set to any positive integer within
the range of the parameter (typically 0 to 2147483647, measured in milliseconds). However, when setting the
values using the GUI, the choices are limited to sever al pr ed e ter m ine d value s pr es en te d in a dr op -d o wn list.
If a backlight timeout is set to one of the selectable values shown in the list, then the GUI applet displays the
correct value for that timeout. On the other hand if a backlight timeout is set, using the Mobile Devices SDK, to
1 - 4Mobile Devices Developers Guide
a value that is not on the list of selectable values, then the GUI applet displays an empty box for that
timeout setting.
For all computers that have backlights, the following tables list the on-time, and dim-time, values that are available in the GUI.
Windows CE-based computers
On Windows CE-based computers, the Display, and Keyboard, Backlight On-time values determine how long
the display and keyboard backlights remain on. An y user interaction (key press, touch scree n press, scan, etc.)
resets both timeout counters back to the beginning. If there has been no user interaction by the end of the
keyboard on-time duration, the keyboard backlight turns off. At the end of the display on-time duration, the
display backlight dims to half intensity. If there is still no user interaction by the end of the display dim-time
duration, then the display backlight turns off completely.
540000NoNoNo
600000NoNoNo
2147483647 (Always On, maximum value)Ye sNoYe s
Windows Mobile-based computers
On Windows Mobile-based Psion computers, the display, and keyboard, backlight timeouts are not controlled
independently: Both are controlled by a single timeout value. However, there are still two timeout values which
may be set; one for when the computer is running on battery power, and on e for wh en it is connected to a
constant external power source.
Backlight1 - 5
Time (milliseconds)
0NoNo
5000NoNo
10000YesNo
15000NoNo
30000YesNo
60000YesYe s
120000YesYe s
180000YesYe s
240000YesYe s
300000YesYe s
360000NoYe s
420000NoYe s
480000NoYe s
Battery Power Backlight
On-time
External Power Backlight
On-time
540000NoYe s
600000NoYe s
2147483647 (Always On, maximum
value)
1
The setting for Always On is controlled by a checkbox that enables/disables the On-time parameter. If the
checkbox is disabled, the On-time value is ignored and the backlight remains on.
Backlight Configuration Parameters
The following universal methods are available in all development languages for getting and setting backlight
configuration values—see the API Reference Manuals for the name of the method in each
development environment:
•Get a boolean setting.
•Get an integer setting
•Set a boolean setting.
•Set an integer setting
No
1
No
1
1 - 6Mobile Devices Developers Guide
Mobile Devices SDK Version 5.4 and Later
For all computers the following apply:
ParameterRange Of ValuesDefault Value
Display threshold (% of
maximum)
Display intensity
(% of maximum)
Display timeout
(% of maximum)
Display dimtime
(% of maximum)
Display always on for
external power (boolean)
Keyboard threshold
(% of maximum)
Keyboard intensity
(% of maximum)
Keyboard timeout (ms)0 to 10050
Keyboard dimtime
(% of maximum)
Keyboard always on for
external power (boolean)
0 to 10050
0 to 10050
0 to 10050
0 to 10050
True / FalseTrue
0 to 10050
0 to 10050
0 to 10050
True / FalseFalse
Mobile Devices SDK Version 5.3 and Earlier
The following table lists the ranges of values and the default values available for each Psion computer:
ParameterComputerRange Of ValuesDefault Value
Display threshold (%)753x0 to 10071
8515N/A
8525/8530N/A
Ikôn Windows CEN/A
Ikôn Windows MobileN/A
NEON/A
Workabout Pro Windows CEN/A
Workabout Pro Windows Mobile
2003 SE
Display intensity753x0 to 10080
N/A
Backlight1 - 7
ParameterComputerRange Of ValuesDefault Value
75451 to 107
85150 to 10048
8525/85300 to 100100
Ikôn Windows CE0 to 10065
Ikôn Windows Mobile0 to 10065
NEO0 to 10047
Workabout Pro Windows CE0 to 10035
Workabout Pro Windows Mobile
0 to 10035
2003 SE
Display timeout (ms)753x0 to 214748364730000
75450 to 429496729530000
85150 to 214748364730000
8525/85300 to 214748364730000
Ikôn Windows CE0 to 214748364730000
Ikôn Windows Mobile60000 to 60000030000
NEO0 to 214748364730000
Workabout Pro Windows CE0 to 214748364730000
Workabout Pro Windows Mobile
60000 to 60000030000
2003 SE
Display dimtime (ms)753x0 to 214748364730000
75450 to 429496729530000
1
1
85150 to 214748364730000
8525/85300 to 214748364730000
Ikôn Windows CE0 to 214748364730000
Ikôn Windows MobileN/A
NEO0 to 214748364730000
Workabout Pro Windows CE0 to 214748364730000
Workabout Pro Windows Mobile
N/A
2003 SE
1 - 8Mobile Devices Developers Guide
ParameterComputerRange Of ValuesDefault Value
Display always on for
external power
(boolean)
Keyboard threshold (%)753x0 to 1000
753xTru e / F alseTrue
7545True / FalseTrue
8515True / FalseTrue
8525/8530Tru e / F alseTrue
Ikôn Windows CETrue / FalseTrue
Ikôn Windows MobileTru e / F alseFalse
NEOTrue / Fal seTrue
Workabout Pro Windows CETrue / F alseTrue
Workabout Pro Windows Mobile
2003 SE
7545N/A
8515N/A
Tru e / F alseFalse
8525/8530N/A
Ikôn Windows CEN/A
Ikôn Windows MobileN/A
NEON/A
Workabout Pro Windows CEN/A
Workabout Pro Windows Mobile
2003 SE
Keyboard intensity753x0 to 10048
75451 to 103
85150 to 10047
8525/85300 to 10048
Ikôn Windows CE0 to 10050
Ikôn Windows Mobile0 to 10050
NEO0 to 1000
N/A
Workabout Pro Windows CE0 to 10040
Workabout Pro Windows Mobile
2003 SE
0 to 10040
Backlight1 - 9
ParameterComputerRange Of ValuesDefault Value
Keyboard timeout (ms)753x0 to 214748364715000
75450 to 429496729515000
85150 to 214748364715000
8525/85300 to 214748364715000
Ikôn Windows CE0 to 214748364715000
Ikôn Windows Mobile60000 to 60000030000
NEO0 to 214748364715000
Workabout Pro Windows CE0 to 214748364715000
Workabout Pro Windows Mobile
60000 to 60000030000
2003 SE
1
1
Keyboard dimtime (ms)753x0 to 42949672960
75450 to 42949672960
8525/85300 to 42949672960
Workabout Pro Windows CE0 to 429496729615000
Workabout Pro Windows Mobile
N/AN/A
2003 SE
Keyboard always on for
753xTrue / FalseFalse
external power
(boolean)
7545True / FalseFalse
8515True / FalseFalse
8525/8530True / FalseFalse
Ikôn Windows CETrue / FalseFalse
Ikôn Windows MobileTrue / FalseFalse
NEOTrue / FalseFalse
Workabout Pro Windows CETrue / FalseFalse
Workabout Pro Windows Mobile
True / FalseFalse
2003 SE
1
On Windows Mobile devices, reading the default value returns the Battery Power Backlight On-time value of
30000. However, when setting the backlight value, it is written to the External Power Backlight On-time value
which enforces the range of 60000 - 600000 for that parameter (1 minute to 10 minutes).
1 - 10Mobile Devices Developers Guide
Getting Started with Backlights
For articles on IngenuityWorking that will guide you in getting started with backlights see:
community.psion.com/tags/backlight/noteDG.
Code Samples for Backlights
For postings on IngenuityWorking that contain code samples that use backlights see:
community.psion.com/tags/backlight/codeDG.
Backlight API Elements
C++: The backlights on all computers are controlled using the PsionTeklogix::Backlight namespace.
Java: The backlights on all computers are controlled using the com.teklogix.backlight package.
.NET: The backlights on all computers are controlled using the PsionTeklogix.Backlight namespace.
Omnii and EP10
These computers have light sensors.
C: Light sensor hardware on all computers with a light sensor is read, using the AmbientLight group.
C: The keyboard backlight and the display backlight on all compute rs with a light sen sor is controlled u sing the
Getting Started with Power Management and Smart Batteries...................2-15
Code Samples for Power Management and Smart Batteries....................2-15
Power Management and Battery API Elements............................2-15
Suspend Timeout
The suspend timeout determines how long the computer will wait after any activity (key press, scan, or touch
screen event, or a wireless radio transmission) before it goes into suspend mode.
When the computer wakes, the device returns to the normal powered state. The backlight, the display, and all
peripheral devices turn on and the suspend timer begins counting again.
The suspend timeout is configured as an integer variable measured in seconds. Any value between 0 and the
maximum value of 2147483647 can be configured, however the GUI Power apple t only allows a small numbe r
of predefined values to be set. If you set the suspend timeout using the Mobile Devices SDK to a value not on
the predefined list, the GUI Power applet displays the default value for that setting.
The following tables list of predefined GUI Power applet suspend timeouts, and their corresponding integer
values in seconds:
In standby mode the processor remains on so any running applications continue executing. Standby mode
consumes more power than suspend mode.
Suspend with
Radio off Mode
Power Off
Mode
down
Suspend Mode
In suspend mode the computer is in a power-saving state. When the computer is woken from this state, operation resumes within a few seconds continuing from where it stopped on suspend.
Suspend mode may occur automatically after a period of inactivity, or when the battery power reserve drops
below a specified threshold. Typically the device goes into suspend mode when the user manually powers
down the computer.
In suspend mode, the display, the keyboard and the peripherals are powered down. The operatin g syste m and
any running applications are maintained in their current state, until the power source depletes.
Suspend with Radio Off Mode (Shutdown Mode)
In suspend with radio off mode the computer is in a power-saving state. Wh en the computer is wo ken from this
state, operation resumes within a few seconds continuing from where it stopped on suspend. On waking, all
radios that were powered up, before entering suspend with radio off mode, are again powered up.
Suspend with radio off mode does not occur automatically. The computer enters this mode immediately when
this option is selected on the Shutdown menu.
In suspend with radio off mode, the display, the keyboard , the radios, and the peripherals are powered down.
The operating system and any running applications are maintained in th eir current state, until the power source
depletes.
Power Off
Everything is powered down with the exception of Syscon (the component that detects power up).
The computer is woken from this state by pressing the Power button.
Batteries and Power Management2 - 5
Manual Initiation of Standby and Suspend
Psion
Computer
753x
(Windows
CE 5.0)
8515
(Windows
CE 5.0)
8525 / 8530
(Windows
CE 5.0)
StandbySuspend
Not accessible.Press BLUE, then
press ENTER
or
Tap Start > Shutdown > Suspend.
Not accessible.Press BLUE, then
press ENTER
or
Tap Start > Shutdown > Suspend.
Not accessible.Press BLUE, then
press ENTER
or
Suspend with Radio
(menu option hidden
Off
by default)
Not available.Not available.
Not available.Not available.
Not available.Not available.
Power Off
Tap Start > Shutdown > Suspend.
2 - 6Mobile Devices Developers Guide
Psion
Computer
Workabout P
ro (7525)
(Windows
CE .NET 4.2)
Workabout P
ro (7525)
(Windows
Mobile
2003 SE)
Workabout P
ro (7525)
(Windows
Mobile 5.0)
Workabout P
ro G2 (7527)
(Windows
CE 5.0)
StandbySuspend
Not accessible.Press BLUE, then
press ENTER/ON
or
Tap Start > Shutdown > Suspend.
Not accessible.Press BLUE, then
press ENTER/ON
Not accessible.Press BLUE, then
press ENTER/ON
Press FN/BLUE,
then press and hold
ENTER, select
Standby, then press ENTER.
Note: Through the
GUI, you can set an
option that suspends
the device when
FN/BLUE then
ENTER is pressed.
Press FN/BLUE,
then press ENTER
or
Press FN/BLUE,
then press and hold
ENTER, select Suspend, then press ENTER.
or
Tap Start > Shutdown > Suspend.
Suspend with Radio
(menu option hidden
Off
by default)
Not available.Not available.
Not available.Not available.
Not available.Not available.
Not available.Not available.
Power Off
Workabout P
ro G2 (7527)
(Windows
Mobile 6.1
Classic and
Pro)
Press FN/BLUE,
then press and hold
ENTER, select
Standby, then press ENTER.
Note: Through the
GUI, you can set an
option that suspends
the device when
FN/BLUE then
ENTER is pressed.
Press FN/BLUE,
then press ENTER
or
Press FN/BLUE,
then press and hold
ENTER, select Suspend, then
press ENTER.
Not available.Not available.
Batteries and Power Management2 - 7
Psion
Computer
Workabout
Pro3 (7527)
(Windows
CE 5.0)
Workabout P
ro3 (7527)
(Windows
Mobile 6.1
Classic and
Pro)
StandbySuspend
Press and hold
POWER, select
Standby, then press ENTER.
Note: Through the
GUI, you can set an
option that suspends
the device when
POWER is pressed.
Press and hold
POWER, select
Standby, then press ENTER.
Note: Through the
GUI, you can set an
option that suspends
the device when
POWER is pressed.
Suspend with Radio
(menu option hidden
Press POWER.
or
Press and hold
POWER, select Suspend, then press ENTER
or
Tap Start > Shutdown > Suspend.
Press POWER.Not available.Not available.
Off
by default)
Not available.Not available.
Power Off
Ikôn (7505)
(Windows
CE 5.0)
Ikôn (7505)
(Windows
Mobile 6)
NEO
(PX750)
(Windows
CE 5.0)
NEO
(PX750)
(Windows
Mobile 6.1)
Not accessible.Press POWER
or
Tap Start > Shutdown > Suspend.
Not accessible.Press POWER.Press and hold
Not accessible.Press FN/BLUE,
then press ENTER
or
Tap Start > Shutdown > Suspend.
Not accessible.Press FN/BLUE,
then press ENTER.
Press and hold
POWER
> Shutdown.
POWER.
Not available.Not available.
Not available.Not available.
Not available.
Not available.
2 - 8Mobile Devices Developers Guide
Psion
Computer
Omnii XT10
(7545XV)
Omnii XT15
(7545XA)
Omnii RT15
(7545XC)
Windows
Embedded
CE 6.0)
Wake up from Suspend Mode, or Suspend With Radio Off Mode
When one of the following occurs, a computer that is in suspend mode, or suspend with radio off mode,
wakes up:
•The device is connected to external power.
•A USB peripheral is connected.
•The battery is inserted.
•The battery door is closed.
•The touch screen is touched.
•Suspend mode only: The WWAN radio receives an incoming voice call, or it receives SMS
d
ata packets.
or IP
•An expansion port, controlled through the HDK, is connected.
Not all of these wake-up sources are available on all Psion computers. Consult the user manual for your
ValueDescription
0Disable
1Enable
ValueDescription
0Disable
≥5000Duration in ms
ValueDescription
0First item on the list
1Second item on the list
2Third item on the list
ValueDescription
0Display
1Hide
ValueDescription
0Display
1Hide
computer to find out which features are on your device.
EP10 Power Options Registry Settings
The following registry settings on the EP10 control the appearance and behaviour of the Suspend dialog:
HKEY_LOCAL_MACHINE\Drivers\BuiltIn\PMDrv\PBC
Value NameValue TypeDefaultDescription
DlgEnabledREG_DWORD1Must be enabled to make the rest of the options
DlgShowDelayREG_DWORDLength of time (in milliseconds) that Power must
Batteries and Power Management2 - 9
available.
The following settings are possible:
be held before the Shutdown dialog is displayed
(minimum 2000 ms).
DlgShowTimeoutREG_DWORD0Length of time (in milliseconds) that the
Shutdown dialog is displayed before the
highlighted menu item is automatically activated.
The following settings are possible:
DlgDefaultActionREG_DWORD0Shutdown menu item that is highlighted when
the dialog opens.
The following settings are possible:
DlgHideSuspendREG_DWORD0Controls display of the Suspend option.
The following settings are possible:
DlgHideSuspendRadiosOffREG_DWORD1Controls display of the Suspend with Radios
Off option.
The following settings are possible:
2 - 10Mobile Devices Developers Guide
ValueDescription
0Display
1Hide
ValueDescription
0Display
1Hide
ValueDescription
0Hide the suspend dialog.
1Display the suspend dialog. This
prevents a second suspend
immediately after resuming.
Value NameValue TypeDefaultDescription
DlgHideStandbyREG_DWORD0Controls display of the Standby option.
DlgHideShutdownREG_DWORD0Controls display of the Power Off option.
UseSuspendDialogREG_DWORD1Controls the Suspend dialog that is displayed
The following settings are possible:
The following settings are possible:
when Power is pressed very soon after a
resume.
The following settings are possible:
Warning: The Suspend dialog ensures that
the radios have enough time to power up and
power down. It is recommended that this
setting is not disabled.
Programmatic Control of the Suspend/resume Cycle
Initiation of Suspend
The Mobile Devices SDK includes APIs that can initiate a suspend. The device passes through standby mode
before going into suspend mode; however, the Mobile Device s SDK does not cont ain APIs than can specifically
place a computer into standby mode.
Selection of Wakeup Sources
Using the Mobile Devices SDK you can select which potential wakeup sources are active on a device. This
option is not available through the GUI. The following functions are available:
•EnableWakeupSource—selectively enable and disable a potential wake-up source.
•IsWakeupSourceEnabled—query the status of a wake-up source.
The first time you enable a wakeup source programmatically, it may not bring the device into the fully on state.
The device is in standby mode. For a code sample showing how to deal with this see:
Usually, after Windows is restarted, an enabled wakeup source brings the device out of suspend mode into
fully on. For details see Programmatic Initiation of Resets on page 3-11.
Batteries and Power Management2 - 11
Accelerometer and Gyroscope
The accelerometer and the gyroscope do not wake a computer from suspend mode.
Wake up that Stops in Standby Mode
For some wakeup sources—such as WWAN radio events—the wakeup event raises the device from suspend
mode into standby mode, and not to fully on. In this case the application must monitor the transition from suspend mode to reset mode. It can then programmatically bring the device from standby mode to fully on.
Setting a Time Until Wakeup
To suspend a computer for a selected length of time, use the Microsoft APIs.
Getting Started with the Suspend/resume Cycle
For articles on IngenuityWorking that will guide you in getting started with the suspend/resume cycle see:
community.psion.com/tags/wakeup/noteDG.
Code Samples for the Suspend/resume Cycle
For postings on IngenuityWorking that contain code samples that use the suspend/resume cycle see:
community.psion.com/tags/wakeup/codeDG.
Suspend API Elements
You cannot programmatically put a Psion computer into standby mode.
C++: Suspend on all computers is controlled using the PsionTeklogix::PowerManagement namespace. For
suspending the computer and setting the time until wake-up use Microsoft Power Management APIs; for
details see
Java: Suspend on all computers is controlled using the com.teklogix.power package.
.NET: Suspend on all computers is controlle d using the PsionTeklogix.Power namespace. Power can also be
controlled by the Windows Power Management Functions; for details see
C++: Wakeup sources on all computers is con trolled using the
PsionTeklogix::PowerManagement namespace.
Java: Wakeup sources on all computers is controlled using the com.teklogix.power package.
.NET: Wakeup sources on all computers is controlled using the PsionTeklogix.Power namespace.
2 - 12Mobile Devices Developers Guide
Power Management
Events
C++
C++ applications must use the Microsoft RequestPowerNotifications and
GetSystemPowerStatusEx2 APIs.
Java and .NET
The following power state events are generated by the computer and can be detected by the Mobile Devices
SDK. These events are used by Java and .NET applications:
EventStatesDescription
AC Power online
AC Power online
Battery status changeHighFully charged
LowLow charge
CriticalNeeds to be charged immediately
ChargingCharging
NoSystemBatteryNo battery detected
UnknownNone of the other states
Power information changeOnOn
OffFull off
CriticalCritical off
BootDevice is booting
IdleIdle state
SuspendSuspend state
ResumeResume state
ResetReset state
Preferred Preferred state
UserIdleUser idle state
EventStatesDescription
Power transitionOfflineNot on external power
Battery Information
Battery Suspend Threshold
Some computers have only a small backup battery, or no backup battery. On these computers, once the main
battery has completely discharged, users have a very short time during which to change the battery before all
volatile data is lost. In this situation, it can be desirable to have the device give the low battery warning prematurely, thus ensuring it gets replaced, or recharged, before data is lost.
Setting the battery suspend threshold forces the computer to suspend when that threshold is reached, before
the main battery has fully discharged. The battery suspend threshold is a percentage, between 0 (zero) and
100, of the maximum allowed battery threshold charge. The actual amount of charge, remaining at the
selected battery suspend threshold, is calculated based on the type of computer and the type of battery.
Batteries and Power Management2 - 13
OnlineOn external power
BackupPowerOn backup power
UnknownNone of the other states
Main Battery and Backup Battery Lifetimes and Remaining Charge
The battery lifetime reported by the Mobile Devices SDK may not be accurate as various system configurations, power management settings, and the activity of various peripheral devices all affect the rate that charge
is drained from the battery.
It may not be possible to determine the remaining lifetime or the full lifetime of the backup battery while the
computer is being powered by an external source, such as an AC adaptor. As a result, these calls may throw
an exception if the computer is on external power.
The amount of charge reported as remaining in the battery may not be accurate. Also, this value can vary due
to the activity of peripheral devices such as radios.
Smart Batteries
Smart batteries can accurately report their status. The main use of these smart battery functions is to determine when to replace old batteries. All the batteries available for the following Psion computers are smart
batteries:
•7530
•7535
•8525
•8530
•Ikôn
•Omnii
•EP10
•VH10
2 - 14Mobile Devices Developers Guide
The smart battery APIs in the Mobile Devices SDK throw an exception stating Not Supported on devices that
do not support smart batteries.
Smart Battery FunctionDescription
GetBatteryCycleCountThis is important in determining the health of a battery, and
GetBatterySerialNumberReturns either a string or an integer.
GetBatteryManufactureDateThis measures how old the battery is. Together with the cycle count,
Smart Battery Registry Settings
HKEY_LOCAL_MACHINE\Services\BatteryStatus
determining when the battery is at the end of its life.
A battery charge cycle occurs when the battery has been drained to
0%, and then refilled to 100%, of its maximum capacity. Some
batteries have a life span that can be measured in cycle counts
(usually from 500 – 1000, but can be more).
this determines whether the battery is wearing out too fast.
Value NameValue Type
FlagsREG_DWORD0Microsoft-required value for controlling an
CycleThreshUsedREG_DWORD300The cycle-count threshold at which a terminal is
CycleThreshOldREG_DWORD400The cycle-count threshold at which a terminal is
ShowWhenNewREG_DWORD4The amount of time (in sec) that the pop-up stays
ShowWhenUsedREG_DWORD7The amount of time (in sec) that the pop-up stays
Default
Value
Description
auto-started service.
Set to 0: Enable service
Set to 4: Disable service.
considered Good. Below this threshold it is
considered Excellent.
considered Expired. Below this threshold it is
considered Good.
external power is connected or disconnected—the
pop-up is limited to once per minute. This flag allows
the pop-up to appear on resume as well. To disable
this feature, set it to 0.
visible when the green, or Excellent, battery icon
is displayed.
visible when the yellow, or Good, battery icon
is displayed.
Batteries and Power Management2 - 15
Value NameValue Type
ShowWhenOldREG_DWORD10The amount of time (in sec) that the pop-up stays
ShowWhenUnknownREG_DWORD0The amount of time (in sec) that the Unknown
Default
Value
Description
visible when the red, or Expired, battery icon is
displayed. If you want this pop-up to remain visible
until manually dismissed set the value to 99999.
pop-up stays visible when cycle-counting is not
supported (for batteries predating the smart
battery feature),
Getting Started with Power Management and Smart Batteries
For articles on IngenuityWorking that will guide you in getting started with power management and smart
batteries see:
community.psion.com/tags/battery power/noteDG.
Code Samples for Power Management and Smart Batteries
For postings on IngenuityWorking that contain code samples that use power management and smart
batteries see:
community.psion.com/tags/battery power/codeDG.
Power Management and Battery API Elements
C++: The power on all computers is controlled using the PsionTeklogix::PowerManagement namespace.
Java: The power on all computers is controlled using the com.teklogix.power package.
.NET: The power on all computers is controlled using the PsionTeklogix.Power namespace. Power can also
be controlled by the Windows Power Management Functions; for details see
Detecting and Identifying Resets...............................3-12
Getting Started with Resets.......................................3-12
Code Samples for Resets........................................3-12
Reset API Elements...........................................3-12
Reset Types and Effects
Reset3 - 3
Table 3-1
Windows CE 5RAMRAM
Windows Mobile SE 2003FlashFlash
Windows Mobile 5.0FlashFlash
Windows Mobile 6.xFlashFlash
Windows Embedded CE 6.0FlashFlash
Table 3-2
Restarts WindowsYesYesYes
Restarts all driversYesYesYes
Clears application memory (RAM)YesYesYes
Location of Operating System Files and Application Files
Operating SystemOperating System FilesApplication Files
Effects of Resetting Psion Computers
Cold Reset
FeatureWarm Reset
or
Hardware
Reset
Clean Start
Clears operating system if stored in RAM
Applies to Windows CE 5 only
RAM disk folder is preserved
Does not apply to Windows CE 5
Sets registry to factory defaultNoNoYes
Sets Windows image to factory defaultNoNoYes
Clears addressable persistent storage (flash)NoNoNo
Can be invoked with Mobile Devices SDK
API function call
Warm Reset
A warm reset restarts the operating system.
Registry settings, installed programs, and data files are preserved. Running applications are halted and
unsaved data is lost. Flash content is preserved. RAM content is not preserved. The RAM Disk folder is
preserved on Windows CE 6.x, but it is not preserved on Windows Mobile.
Windows CE 5 Operating System
Yes (Windows CE
NoYes Yes
NoNo
6.x)
No (Windows
Mobile)
YesYes (Windows CE)
No (Windows
Mobile)
No
When you perform a warm reset on a Psion computer running Windows CE 5, the operating system is
restarted without reloading the operating system into memory.
3 - 4Mobile Devices Developers Guide
Windows Mobile SE 2003
On Windows Mobile SE 2003-based computers, a warm reset reloads and rest art s the operating system. RAM
memory is cleared and the RAM disk is reinitialized.
Reset
A reset restarts the operating system. This replaces the warm reset available on earlier Psion computers.
Registry settings, installed programs, and data files are preserved. Running applications are halted and
unsaved data is lost. Flash content is preserved. RAM content is not preserved. The RAM Disk folder is
not preserved.
Reset is available on the following operating systems:
•Windows Mobile 5.0
•Windows Mobile 6.x
•Windows CE 6.0
Cold Reset and Hardware Reset
Cold reset and hardware reset are two names for the same process. They power down, and then power up, all
the hardware on a Psion computer. In effect they reinitialize all the hardware. All RAM including the RAM disk
is erased. Nonvolatile storage such as the flash disk is preserved. All peripherals are reinitialized.
Clean Start
A clean start resets the computer to its factory settings.
Manual Initiation of Resets
753x
(Windows CE 5.0)
8515
(Windows CE 5.0)
Psion Product Name Computer User Manual
Table 3-3
Methods for Resetting Psion Computers Using the Keyboard and Touchscreen
Omnii XT10
(7545XV)
Omnii XT15
(7545XA)
Omnii RT15
(7545XC)
(Windows Embedded CE 6.0,
Windows Embedded
Hand-Held 6.5)
EP10 (7515)
(Windows Embedded Hand-Held
6.5)
VH10
(Windows Embedded CE 6.0)
Press and hold FN and
Power for four
seconds.
Tap Start > Shutdown
> Warm Reset
or
Press and hold BLUE
and ENTER for
six seconds.
Press and hold
BLUE/FN and Power
for six seconds.
Press and hold SYM, FN and Power for
four seconds.
or if no SYM key,
Press and hold WINDOWS, FN and Power
for four seconds
Tap
Start > Shutdown
> Cold Reset
or
Press and hold
ORANGE, BLUE and
ENTER for
six seconds.
Press and hold
BLUE/FN, SYM, and
Power for six seconds.
Press and hold SCAN,
FN and Power for
six seconds.
At BooSt menu:
• Alphabetic keyboard: T ype .clean,
then press Power
• Numeric keyboard:
Type .25326, then
press Power.
Press and hold
BLUE/FN, Power and
left SCAN for six sec-
onds.
At BooSt menu:
• Alphabetic keyboard: T ype .clean,
then press Power
• Numeric keyboard:
Type .25326, then
press Power.
Press and hold BLUE, ENTER and SPACE
for six seconds.
At BooSt menu:
• Type .clean, then
press ENTER, or
• Type .25326, then
press ENTER.
Programmatic Initiation of Resets
Warm reset, reset, and cold reset
The Mobile Devices SDK includes APIs that can initiate these resets.
WarmBoot: Initiates either a warm reset or a reset, whichever is available on the operating system of
the device.
ColdBoot: Initiates a cold reset. This is only available on Windows CE systems.
NOTETo restart Windows use WarmBoot.
WARNINGColdBoot reinitializes all the hardware as well as restarting Windows.
Hardware reset
Reset3 - 11
A hardware reset cannot be initiated programmatically.
Clean start
The Mobile Devices SDK does not support clean start. For an alternative method—which is not supported on
all Psion computers—of programmatically initiating a clean start, see PsionCleanStart.cpp at:
For articles on IngenuityWorking that will guide you in getting started with working with resets see:
community.psion.com/tags/reset/noteDG
Code Samples for Resets
For postings on IngenuityWorking that contain code samples that contain resets see:
community.psion.com/tags/reset/codeDG
Reset API Elements
C++: Reset on all computers is controlled using the PsionTeklogix::PowerManagement namespace. For
suspending the computer and setting the time until wake-up use Microsoft Power Management APIs: For
details see msdn.microsoft.com/en-us/library/ms895437(v=MSDN.10).aspx.
Java: Reset on all computers is controlled using the com.teklogix.power package.
.NET: Reset on all computers is controlled using the PsionTeklogix.Power namespace. Power can also be
controlled by the Windows Power Management Functions; for details see
Getting Started with the Display.....................................4-5
Code Samples for the Display......................................4-5
Display API Elements...........................................4-5
Display
The Mobile Devices SDK provides functions that obtain information on the display hardware that cannot be
easily obtained using standard features of the development languages. Display features are available
as follows:
or Unknown
Physical WidthIntegerDisplay width in millimetres
Physical HeightIntegerDisplay height in millimetres
Colour DisplayBooleanTrue, or False
Touch Screen InstalledBooleanTrue, or False
Width in PixelsIntegerDisplay width in pixels
Height in PixelsIntegerDisplay height in pixels
Maximum ColoursIntegerNumber of colours, or shades of
Getting Started with the Display
For articles on IngenuityWorking that will guide you in getting started with working with the display see:
community.psion.com/tags/display/noteDG
Code Samples for the Display
For postings on IngenuityWorking that contain code samples that use the display see:
community.psion.com/tags/display/codeDG
Display API Elements
C++: Information concerning the display on all Psion Windows CE computers is retrieved using the
PsionTeklogix::DisplayInformation namespace. Additional display details are obtained using the Windows
CE User Interface Services GDI function GetDeviceCaps ().
grey available
Java Information on the display hardware on all Psion Windows CE computers is retrieved using the
com.teklogix.display package.
.NET: Information on the display hardware on all Psion Windows CE computers is retrieved using the
System.Windows.Forms namespace in the .NET Compact Framework, or using the
PsionTeklogix.SystemPTX.DisplayInformation class.
Getting Started with Indicators......................................5-5
Code Samples for Indicators.......................................5-5
Indicator API Elements..........................................5-5
Indicators
Most Psion computers have a LED that can be controlled by applications. Typically, these are used to indicate
device activity, data reception, data transmission, error conditions, alerts, and software updates.
Using LED Colours
Each LED emits one or more colours. Some colours are built into the LED. Other colours are created by illuminating two or more built-in colours at the same time. The following terms are used to distinguish
these colours:
Component colour: This colour is built into the LED.
Composite colour: This colour is created by illuminating two or more component colours at the same time on
the LED.
Default on colour: A LED is illuminated with the default on colour, when it is illuminated without explicitly
naming an illumination colour.
Available colour: This can be either a component colour or a composite colour.
Indicators5 - 3
Application-controllable LEDs are available on Psion computers as follows:
The following terms are used to describe the behaviour of a pulsing LED:
Independent colour: On multi-colour LEDs, if the independent colour flag is set, this pulse can add to the
colour being displayed by the LED.
Extend current pulse: This feature only applies when the independent colour flag is also set. If the LED is in
the process of performing a pulse using the same colour, the duration of this new pulse replaces the duration of
the existing pulse. This can result in the duration eithe r bein g extended or reduced.
Several overlapping pulses can exist. The effects depend on the settings of the independent colour flag and
the extend current pulse flag.
Controlling Illumination Patterns
The Mobile Devices SDK provides the ability to display a two-colour illumination pattern on a LED.
The following diagram shows how an illumination pattern is structured:
The two colours, their duration times, the delay between repeat s, and the numb er of repeats can be defined in
the application. See the online help for your programming language for information on how to specify these
values.
Getting Started with Indicators
For articles on IngenuityWorking that will guide you in getting started with working with indicators see:
community.psion.com/tags/indicators/noteDG
Code Samples for Indicators
For postings on IngenuityWorking that contain code samples that contain indicators see:
community.psion.com/tags/indicators/codeDG
Indicator API Elements
C++: The display on all Psion computers is controlled using the PsionTeklogix::Indicators namespace.
Java: The display on all Psion computers is controlled using the com.teklogix.indicators package.
.NET: The display on all Psion computers is controlled using the PsionTeklogix.Indicators namespace.
Getting Started with Key Insertion..............................6-17
Code Samples for Key Insertion...............................6-17
Key Insertion API Elements..................................6-17
Keyboard
Microsoft Windows maintains a device-independent keyboard model that enables it to support a variety of
keyboards. At the lowest level, each key on the keyboard generates a scan code when the key is pressed and
released. The scan code is a hardware-dependent number tha t identifies the physical location of the key on the
keyboard. Unlike Windows-based deskto p op er at ing s ystems, Windows CE and Windows Mobile have no
standard set of keyboard scan codes. The keyboard driver maps each scan code to a virtual key code. The
virtual key code is a hardware-independent number that identifies the key to be sent to the application.
Because keyboard layouts vary between spoken languages, Windows offers only the core set of virtual key
codes that are found on all keyboards. This core set includes English characters, numbers, and a few critical
keys, such as the function, and arrow, keys.
In addition to mapping, the Windows keyboard driver determines which characte rs the virtual key gen erates. A
single virtual key can generate different characters depen ding on the state of the, BLUE, ORANGE, SYM, ALT, CTRL, and SHIFT, modifier keys.
The Mobile Devices SDK provides support for the Psion-specific keys.
Supported Keyboards
Keyboard and Keyboard Remapping6 - 3
When the keyboard type is queried through the Mobile Devices SDK, the following strings may be returned:
The keyboard can be disabled at the hardware level. When disabled, no key presses are reco rded. Disabling
the keyboard may be used to prevent user data entry while a program is performing a critical operation, such
as a database transaction or a screen refresh, when a key press could cause problems.
IMPORTANTTake great care when disabling the keyboard. If an application terminates while the
keyboard is disabled, there is no easy way to re-enable the keyboard. This can leave
the computer in an unusable state; however, if the computer has a touchscreen, the
touchscreen is still active.
Some keyboard operations are still available even when the keyboard is disabled, including resets, and placing
the computer into suspend mode.
Getting Started with Keyboards
For articles on IngenuityWorking that will guide you in getting started with working with keyboards see:
community.psion.com/tags/keyboard/noteDG
69 Key, Azerty , Numeric Calculator, 12 Fn
Code Samples for Keyboards
For postings on IngenuityWorking that contain code samples that use keyboards see:
community.psion.com/tags/keyboard/codeDG
Keyboard API Elements
C++: The display on all Psion computers is controlled using the PsionTeklogix::Keyboard namespace.
Java: The display on all Psion computers is controlled using the com.teklogix.keyboard package.
.NET: The display on all Psion computers is controlled using the PsionTeklogix.Keyboard namespace.
Keyboard Remapping
The key stroke information sent to an application whe n a ke y is pres se d ca n be alte re d thr o ug h a pr oc es s of
remapping key code values. There are two sets of key codes — scan codes and virtual key codes — which
define the associations between a physical key pressed, and the key value that is sent to an application. The
default associations of these key code sets characterize the normal behaviour of a particular keyboard.
Keyboard remapping overrides the default behaviour of the keyboard keys.
Scan codes
A scan code is an integer value representing a key on a keyboard. Scan codes are keyboard dependent.
6 - 6Mobile Devices Developers Guide
All Psion computers have non-chorded keyboards. A non-chorded keyboard is a keyboard that does not
handle simultaneous key presses. Each key pressed generates a unique scan code which is not modified by
the state of other keys on the keyboard.
Modifier keys
Modifier keys are keys that when pressed and released set a mode that can change the behaviour of other
keys on the keyboard. The following keys are modifier keys: BLUE, ORANGE, SYM, ALT, CTRL, and SHIFT.
These can change the virtual key code value generated by a subsequent scan code.
Virtual key codes
A virtual key code is a device-independent value defined by the keyboard driver. Virtual key codes are passed
to applications. Scan codes are mapped to virtual key codes by the keyboard driver. A single scan code can
map to multiple virtual key codes, dependent on the current state of the modifier keys.
Some characters do not have virtual key codes, but c an be generated using shif ted-key codes. For example, a
+ character is actually generated by sending a shifted = virtual key code (that is, the scan code is mapped to
VK_EQUAL and the function Function.SendShiftedCode). These mappings can be inferred from a standard
PC keyboard.
For a list of Windows CE virtual key codes see msdn.microsoft.com/en-us/library/aa926323.aspx.
For a list of Windows Mobile virtual key codes see msdn.microsoft.com/en-us/library/bb431750.aspx.
Mapping tables
The mapping between the scan codes and the virtual key codes is defined in a set of tables. There are separate tables to define the code mappings for normal operation, and for when the SHIFT, ORANGE/ SYM or
BLUE modifiers are active. The ORANGE and BLUE tables can be remapped, the SHIFT table cannot
be remapped.
There are no mapping table s for the CTRL and ALT modifier keys, so these do not change the virtual key code
generated. On receiving a virtual key code, an application can d etect the state of these modifiers, and change
its behaviour accordingly.
If two threads or processes attempt to modify the keyboard scan code mappings at the same time, the results
are undefined.
Scan code remapping enables applications to perform the following operations:
•Create one or more scan code remappings for a scan code table.
•Remove a scan code remapping from a scan code table.
•Remove all scan code remappings from a scan code table.
•Check to see if a particular scan code has been remapped.
•Convert the table to a printable string.
There are three tables where scan codes can be remapped:
•Normal—remappings for all scan codes when neither the BLUE nor the ORANGE / SYM
ar
e pressed.
•Blue—remappings for when the BLUE key is pressed.
•Orange—remappings for when the ORANGE, or the
If both the BLUE and ORANGE / SYM keys have been pressed (they are both in eithe r the one-sho t or locked
state), the remapping for the BLUE key has precede nce.
key is pressed.
SYM,
keys
Keyboard and Keyboard Remapping6 - 7
Functions
A function in keyboard remapping te rminology is an operation tha t is performed on a scan code . This operation
may modify the virtual key code generated, or cause some other effect such as changing the backlight intensity. The following types of functions are available:
•Macro—maps a scan code to a macro key, which is then mapped into a sequence of one of more virtual
key codes. No virtual key code is generated (other than those defined in the macro sequence).
•Operation only—maps a scan code to some specific behaviour (e.g. backlight intensity). No virtual key
code is generated.
•Modifier key mapping—causes a scan code to simulate the pressing of a modifier key, in order to correctly
update the modifier key state. Normal sequence for modifier keys is: off -> one shot -> locked -> off).
•Virtual key (+modifier)—maps a scan code to a virtual key code, and may simulate the pressing of one or
more modifier keys.
•Direct Unicode mapping—maps a scan code directly to a Unicode character. This enables characters to be
generated which have no virtual key equivalents, such as accented characters.
•Null mapping—causes a scan code to be ignored.
A scan code mapping can involve all of these elements. A scan code can be mapped to a function, and
possibly also to a virtual key, a macro, or a Unicode character value.
ORANGE Key and SYM Key
All Psion computers have either an ORANGE/FN key or a SYM key. The SYM key appears on the following:
•Omnii
•EP10
When used as a modifier key, the two keys are identical.
There is a difference when data is typed on the keyboard.
•ORANGE/FN key: This gives access to additional keys and system functions. These functions are colour
coded in orange print on the keyboard or on the keycaps.
•SYM key: This gives access to additional keys and system functions. When the SYM key is pressed, the
soft input panel (SIP) onscreen keyboard is displayed. This has the same key layout as the actual keyboard. You can select a key either by pressing the corresponding keyboard key, or tapping the onscreen
symbol.
Hiding the Psion soft input panel (SIP)
Normally , each time SYM is pressed the SIP is displayed. This can be inconvenient if SYM has been used as a
modifier with a remapped key.
Use the HKEY_LOCAL_MACHINE\Init key registry setting to disable the Psion soft input panel.
Keyboard Remapping Functions on Psion Computers
A function in keyboard remapping terminology is an ope ration that is performed when a particular scan code
is generated by a key press. This operation may modify the virtual key code generated, or cause some other
effect such as changing the backlight intensity. The following types of functions are available:
6 - 8Mobile Devices Developers Guide
FunctionDescription
SkipThe remapped scan key is ignored.
The virtual key is ignored.
BlueThe remapped scan key behaves like the BLUE key in one shot mode.
The virtual key is ignored.
OrangeThe remapped scan key behaves like the ORANGE key in one shot mode.
The virtual key is ignored.
ShiftThe remapped scan key behaves like the SHIFT key in one shot mode.
The virtual key is ignored.
ControlThe remapped scan key behaves the same as the CTRL key.
The virtual key is ignored.
AltThe remapped scan key behaves the same as the ALT key.
The virtual key is ignored.
SendUnshiftedCodeThe remapped scan key is replaced by a selected unshifted scan key. This
function is keyboard dependent. It also releases all one-shot s that are set for
the modifier keys.
This function is equivalent to selecting the Force Unshifted radio button on
the Remap Scancode screen.
If A is mapped to B using Function = SendUnshiftedCode, typing ABC
results in:
• With the SHIFT modifier key set: bBC
• Without the SHIFT modifier key set: bbc
SendShiftedCodeThe remapped scan key is replaced by a selected shifted scan key . This
function is keyboard dependent. It also releases all one-shot s that are set for
the modifier keys.
This function is equivalent to selecting the Force Shifted radio button on the
Remap Scancode screen.
If A is mapped to B using Function = SendShiftedCode, typing ABC
results in:
• With the SHIFT modifier key set: BBC
• Without the SHIFT modifier key set: Bbc
Keyboard and Keyboard Remapping6 - 9
FunctionDescription
SendCodeThe remapped scan key is associated with a selected virtual key. This
function is keyboard dependent. It also releases all one-shot s that are set for
the modifier keys.
This function is equivalent to selecting the Virtual Key radio button on the
Remap Scancode screen.
The modifier key states change the outcome of this function.
If A is mapped to VK_B using Function = SendCode, typing ABC results in:
• With the SHIFT modifier key set: BBC
• Without the SHIFT modifier key set: bbc
ContrastUpEach press of the remapped scan key increases the screen contrast. This
function also releases all one-shots that are set for the modifier keys.
The virtual key is ignored.
ContrastDownEach press of the remapped scan key decreases the screen contrast. This
function also releases all one-shots that are set for the modifier keys.
The virtual key is ignored.
VolumeUpEach press of the remapped scan key increases the volume of the
beeper/WAV device. This function also releases all one-shots that are set for
the modifier keys.
The virtual key is ignored.
VolumeDownEach press of the remapped scan key decreases the volume of the
beeper/WAV device. This function also releases all one-shots that are set for
the modifier keys.
The virtual key is ignored.
ScannerOnWhile the remapped scan key is depressed, the scanner is active.
The virtual key is ignored.
TerminalOffEach press of the remapped scan key puts the mobile device into suspend
mode. This function also releases all one-shots that are set for the modifier
keys.
The virtual key is ignored.
BacklightCycleUpEach press of the remapped scan key increases the intensity of the display
backlight. When the maximum intensity is reached, the intensity drops to its
lowest level, and it is increased again by each succeeding key press. This
function also releases all one-shots that are set for the modifier keys.
The virtual key is ignored.
MacroThe remapped scan key is associated with a selected macro. This function
also releases all one-shots that are set for the modifier keys.
This function is equivalent to selecting the Macro radio button on the
Remap Scancode screen.
SendUnicodeThe remapped scan key is associated with a Unicode character.
6 - 10Mobile Devices Developers Guide
FunctionDescription
BacklightBrighterEach press of the remapped scan key increases the intensity of the display
backlight. This function also releases all one-shots that are set for the
modifier keys.
The virtual key is ignored.
BacklightDimmerEach press of the remapped scan key decrease s the intensity of the display
backlight. This function also releases all one-shots that are set for the
modifier keys.
The virtual key is ignored.
BacklightCycleDownEach press of the remapped scan key decreases the intensity of the display
backlight. When the maximum intensity is reached, the intensity is reset to
its highest level, and it is decreased again by each succeeding key press.
This function also releases all one-shots that are set for the modifier keys.
The virtual key is ignored.
SystemPowerStateEach press of the remapped scan key suspends the computer.
The virtual key is ignored.
FunctionSendDPadCodeThe remapped scan key behaves like ENTER or one of the arrow keys on a
PocketPC DPad.
FunctionTriggerThe remapped scan key is associated with a trigger source (see the
TriggerControl class).
The value supplied with function is the trigger source ID value.
FunctionWindowsMobileKeyThe remapped scan key is associated with one of the following Windows
Mobile virtual keys:
• VK_APP1
• VK_APP2
• VK_APP3
• VK_APP4
• VK_APP5
• VK_APP6
• VK_DONE
Keyboard and Keyboard Remapping6 - 11
Device OrientationGenerates the virtual key code corresponding to…
UprightARROW UP
Rotated 90° clockwiseARROW RIGHT
Rotated 180° ARROW DOWN
Rotated 90°
counter-clockwise
ARROW LEFT
FunctionDescription
SendArrowKeyWhen this function is selected, each press of an arrow key generates a
virtual key code that depends on the orientation of the device in the
vertical plane.
For example: When this feature is selected, pressing the ARROW UP key
gives the following results:
FunctionUnknown
Unicode Values for Psion Proprietary Keys
Psion KeyUnicode Value (Hexadecimal)
F0E000
F1E001
F2E002
F3E003
F4E004
F5E005
F6E006
F7E007
F8E008
F9E009
F10E00A
F11E00B
F12E00C
F13E00D
F14E00E
F15E00F
F16E010
6 - 12Mobile Devices Developers Guide
Psion KeyUnicode Value (Hexadecimal)
F17E011
F18E012
F19E013
F20E014
F21E015
F22E016
F23E017
F24E018
F25E019
F26E01A
F27E01B
F28E01C
F29E01D
F30E01E
......
F64E040
Menu ModeE041
View ModeE042
Split ScreenE043
Decrement ViewE044
Increment ViewE045
Select First AppE046
Toggle Split ScreenE047
Accent Mode (Custom Characters)E048
Literal ModeE049
ReservedE04A
Pan LeftE04B
Pan RightE04C
Pan UpE04D
Psion KeyUnicode Value (Hexadecimal)
Pan DownE04E
Reserved (Legacy 7030 or Internal use)E04F
Reserved (Legacy 7030 or Internal use)E050
Reserved (Legacy 7030 or Internal use)E051
Reserved (Legacy 7030 or Internal use)E052
Reserved (Legacy 7030 or Internal use)E053
Reserved (Legacy 7030 or Internal use)E054
Macro 1E055
Macro 2E056
Macro 3E057
Keyboard and Keyboard Remapping6 - 13
Macro 4E058
Macro 5E059
Macro 6E05A
Macro 7E05B
Macro 8E05C
Macro 9E05D
Macro 10E05E
......
Macro 30E072
Left ArrowE073
Right ArrowE074
Up ArrowE075
Down ArrowE076
Shift Left ArrowE077
Shift Right ArrowE078
Shift Up ArrowE079
Shift Down ArrowE07A
ClearE07B
Reserved (Legacy 7030 or Internal use)E07C
6 - 14Mobile Devices Developers Guide
Psion KeyUnicode Value (Hexadecimal)
CalculatorE07D
Keyboard Remap ToggleE07E
Pop-up ToolbarE07F
Reserved (Legacy 7030 or Internal use)E080
Reserved (Legacy 7030 or Internal use)E081
Reserved (Legacy 7030 or Internal use)E082
Reserved (Legacy 7030 or Internal use)E083
Reserved (Legacy 7030 or Internal use)E084
Reserved (Legacy 7030 or Internal use)E085
Reserved (Legacy 7030 or Internal use)E086
ANSI Smart Echo SuspendE087
TESS ResetE088
TESS AttentionE089
TESS System RequestE08A
TESS RollupE08B
TESS RolldownE08C
TESS HelpE08D
TESS PrintE08E
TESS RBSE08F
TESS PA1E090
TESS PA2E091
TESS PA3E092
TESS ClearE093
TESS Test RequestE094
TESS SessionE095
TESS Host ResetE096
TESS Field AdvanceE097
TESS Field BackspaceE098
TESS Field ExitE099
Psion KeyUnicode Value (Hexadecimal)
TESS Field MinusE09A
TESS HomeE09B
TESS NewlineE09C
TESS Erase InputE09D
Reserved (Legacy 7030 or Internal use)E09E
Tab keypress (not ASCII Tab 0009)E09F
Select 2nd AppE0A0
Select 3rd AppE0A1
Select 4th AppE0A2
Select 5th AppE0A3
Keyboard and Keyboard Remapping6 - 15
Select 6th AppE0A4
Select 7th AppE0A5
Select 8th AppE0A6
Select 9th AppE0A7
Windows Mobile, and Windows CE, Virtual Keys
For information on virtual key codes on Windows Mobile, and Windows CE, systems see msdn.micro-
soft.com/en-us/library/bb431750.aspx
Windows Mobile Virtual Keys on Psion Computers
Some virtual keys, that are available to applications running under Windows CE, are not passed onto applications by Windows Mobile systems. These virtual keys are captured, and interpreted, by the Windows Mobile
operating system.
Function keys
All the function keys, FN1 to FN64, are captured by Windows Mobile systems. On Psion computers the virtual
key codes for the function keys are converted to private Unicode characters. See Unicode V alues for Psion
Proprietary Keys on page 6-11 for a list of these Unicode characters.
For example, when FN1 is pressed, the U+E001 character is passed to the application. This is 57345 in
decimal. This results in the following string being passed to the application:
[ALT][0][5][7][3][4][5][ALT]
Getting Started with Key Remapping
For articles on IngenuityWorking that will guide you in getting started with key remapping see:
community.psion.com/tags/keyboard/noteDG
6 - 16Mobile Devices Developers Guide
Code Samples for Key Remapping
For postings on IngenuityWorking that contain code samples that contain key remapping see:
community.psion.com/tags/keyboard/codeDG
Keyboard Remapping API Elements
C++: The keyboard remapping on all Psion computers is controlled using the
PsionTeklogix::Keyboard::KeyRemapper class.
Java: The keyboard remapping on all Psion computers is controlled using the
com.teklogix.keyboard.KeyRemapper class.
.NET: The keyboard remapping on all Psion computers is controlled using the
PsionTeklogix.Keyboard.KeyRemapper class.
Key Insertion
Key insertion permits a command ke y or a modifi er key, with another optional related key, to be inserted into an
input field. The following command keys and modifier keys can be inserted:
•Blue
•Orange
•Shift
•Control
•Alt
•Send unshifted code
•Send shifted code
•Contrast up
Before this feature is invoked, the focus must be on the relevant input field.
This feature is typically used for the following, described in further detail below:
•In application lock-down mode, displaying key presses in alpha mode.
•Reversing an accidental press of the [BLUE] key or the [ORANGE] key.
•As a keyboard wedge.
Application Lock-Down Mode
When an application is operating in lock-down mode, the Windows task bar is not visible. Normally, when a
user is entering alpha characters on a computer with a numeric keyboard ([2ABC], [3DEF], etc.), the intermediate characters are displayed on the Windows task bar until the desired character is selected. Key insertion
allows an application to display the intermediate alphabetic characters directly in the input field.
•Contrast down
•Volume up
•Volume down
•Scanner on
•Terminal off
•Backlight cycle up
•Macro
•Send unicode
•Backlight brighter
•Backlight dimmer
•Backlight cycle down
•System power state
•Send DPad code
•Trigger
Reversing Accidental Key Presses
If the [BLUE] or [ORANGE] key is accidently pressed by an operator duri ng dat a entry, the results can be unexpected and can cause an input error. Detecting the accidental modifier key press, and reversing it within the
application, ensures that the intended data is entered.
The Mobile Devices SDK provides functions that allow the [BLUE] key and the [ORANGE] key presses to be
intercepted. The key insertion feature allows the application to reverse the setting of the key.
Keyboard Wedge
A keyboard wedge inserts characters into a field that is in focus. A single virtual key can be inserted into an
input field by each call to the key insertion function. A command key, such as Send unshifted code accompanied by a virtual key code, wedges the associated virtual key into the input field.
Getting Started with Key Insertion
For articles on IngenuityWorking that will guide you in getting started with key insertion see:
community.psion.com/tags/keyboard/noteDG
Code Samples for Key Insertion
For postings on IngenuityWorking that contain code samples that contain key insertion see:
community.psion.com/tags/keyboard/codeDG
Key Insertion API Elements
Keyboard and Keyboard Remapping6 - 17
C++: Key insertion on all Psion Windows computers is controlled using the
PsionTeklogix::Keyboard namespace.
Java: Key insertion on all Psion Windows computers is controlled using the Keyboard class in the
com.teklogix.keyboard package.
.NET: Key insertion on all Psion Windows computers is controlled using the Keyboard class in the
PsionTeklogix.Keyboard namespace.
Getting Started with Peripherals.....................................7-5
Code Samples for Peripherals......................................7-5
Peripheral API Elements in the Mobile Devices SDK..........................7-5
Peripheral API Elements in the Hardware Development Kits (HDK).................7-5
Overview
The Mobile Devices SDK enables applications to detect and control peripherals—such as docking stations,
tethered devices, and cards inserted in card slots—attached to the following Psion computers:
•753x
•8515
•8525 / 8530
•Workabout Pro (7525)
•Workabout Pro G2 (7527)
•Workabout Pro3 (7527)
•Ikôn (7505)
•NEO (PX750)
Docking stations and card slots for the following Psion computers are controlled through the
corresponding HDKs:
Peripherals7 - 3
•Omnii XT10 (7545XV)
•Omnii XT15 (7545XA)
•Omnii RT15 (7545XC)
•EP10 (7515)
Definition of Terms
Some terms used in the chapter have precise definitions. They are defined in this section.
Adaptor: This is a hardware component that supports the connection of the computer to a network or a periph-
eral device. An adaptor can be a printed circuit board, a PC card, or circuitry that is part of the mother board.
Device driver: This is a soft ware component that per mits a co mputer system to communicate with a device. In
most cases, the driver also manipulates the hardware in order to transmit the data to the device.
Peripheral or peripheral device: A device, such as a hard drive, printer, radio or modem, that is connected to
a computer and is controlled by the computer’s microprocessor.
Events
The following peripheral event types are detected by the Mobile Devices SDK:
•Adaptor event
•Docking station event
•Interface event
•Tether port event
Adaptor event: Occurs when the adaptor is connected to or removed from the slot.
Docking station event: Occurs when the device is inserted into or removed from the docking station.
7 - 4Mobile Devices Developers Guide
Interface event: Occurs when the device is connected to or removed from the slot/port.
Tether port event: Occurs when the device is connected to or removed from the tether port.
Docking Station
The Mobile Devices SDK can detect the type of docking station the Psion computer is currently resting in.
A docking station is an external hardware component. It can be one of the following:
•Portable docking module
•Battery charger
•Cradle
A docking station can include one or more additional serial ports, and USB ports.
Tether Ports
The Mobile Devices SDK can detect the type of peripheral device that is attached to the computer via an
external tether port. It can also detect the attachment and removal of a tether port device.
The following types of device can be attached to a tether port:
•Scanners
•RFID readers
•Imagers
Getting Started with Peripherals
For articles on IngenuityWorking that will guide you in getting started with working with docking stations see:
community.psion.com/tags/docking station/noteDG
For articles on IngenuityWorking that will guide you in getting started with working with tether ports see:
community.psion.com/tags/tether port/noteDG
Code Samples for Peripherals
For postings on IngenuityWorking that contain code samples that use docking stations see:
community.psion.com/tags/docking station/codeDG
Peripherals7 - 5
For postings on IngenuityWorking that contain code samples that use tether ports see:
community.psion.com/tags/tether port/codeDG
Peripheral API Elements in the Mobile Devices SDK
For the following Psion computers the peripherals are controlled through the Mobile Devices SDK:
•753x
•8515
•8525 / 8530
•Workabout Pro (7525)
•Workabout Pro G2 (7527)
•Workabout Pro3 (7527)
•Ikôn (7505)
•NEO (PX750)
C++: The peripherals are controlled using the PsionTeklogix::System::Peripherals namespace.
Java: The peripherals are controlled using the com.teklogix.system package.
.NET: The peripherals are controlled using the PsionTeklogix.Peripherals namespace.
Peripheral API Elements in the Hardware Development Kits (HDK)
For the following Psion computers the peripherals are controlled through software included in the Hardware
Development Kits: