![](http://datasheet.mmic.net.cn/260000/PPSMMANUAL_datasheet_15946768/PPSMMANUAL_26.png)
5-2
ChCharacter Input Methods
Programmer’s Manual
For both of the above keyboards, together with the keycode, the coordinate (S16,
S16) of the pen on the key is also returned to users.
Only one soft keyboard can be opened within each task.
5.1.1
Starting Soft Keyboard Character Input
STATUS
OpenSoftKey
(U16 xPos U16 yPos)
OpenSoftKey() opens the soft, or pseudo, keyboard input module. A soft
keyboard (as shown in Figure 5-1 above) is drawn on the panning screen, witContinually pressing a key would result in auto-key-repeat. The time between the
upper-left corner position specified by the caller. When this function is called,
PPSM saves the display area covered by the soft keyboard and monitors the ito be 20. The time duration between returned keys after the second one is called
keys automatically. The soft keyboard is now ready for user’s input.
When the user presses a key on the soft keyboard, the ASCII code for that keysec, then, for every 5/32 sec each.
be returned to the calling application by way of IRPT_KEY messages when the
application calls IrptGetData(). (Refer to
Section 29.1 - IrptGetData
). One
IRPT_KEY interrupt message is generated for each key pressed by the user. The
ASCII code returned is of type TEXT, i.e. 2-byte format with zero extended in high
byte.
Example 5-1 Open soft keyboard for input
118 /* open soft keyboard for input */
119 if ( OpenSoftKey(KEYBD_X, KEYBD_Y) != PPSM_OK )
120 return (PPSM_ERROR);
STATUS
AdvOpenSoftKey
( U16 xPos, U16 yPos, U16 keyWidth, U16
keyHeight, U16 numCol, U16 numRow, P_U16 keyMap, P_U8
bitmap)
AdvOpenSoftKey() opens the soft keyboard input module with advanced
configurable details.
Location of the soft keyboard
Width and height of the keys in number of pixels
Number of rows and columns of keys
The return code of each key (keycode)
The bitmap user interface for the soft keyboard
The return codes are defined in an array(keymap). The order of the keys in the
array is from top left key across to the right, then next row and so on, until the
bottom right key. The contents of this array should not be changed after
AdvOpenSoftKey() has been called. The bitmap has to be either a NULL pointer
or it must fit to cover the entire soft keyboard area. Hence, the width and height of
this soft keyboard must be (keyWidth*numCol) and (keyHeight*numRow) in
number of pixels. For the NULL pointer case, it will not draw anything on the
screen.
Example 5-2 Open soft keyboard for input
/* 7, 8, 9, 4, 5, 6, 1, 2, 3, *, 0, # */
static const U16 keyMap[] = {55, 56, 57 ,52, 53, 54, 49, 50, 51, 42, 48, 35};
Personal Portable System Manager
Programmer’s Manual
5-3
/* open user specified soft keyboard for input like below */
/* with 10x10 key size and 3 col. x 4 rows. */
/* 7 8 9 */
/* 4 5 6 */
/* 1 2 3 */
/* * 0 # */
if ( AdvOpenSoftKey(KEYBD_X, KEYBD_Y, 10, 10, 3, 4, (P_U16)keyMap, bitMap) != PPSM_OK )
return (PPSM_ERROR);
5.1.2
Auto-Key-Repeat
first and second returned key is called AUTO_REPEAT_LIMIT. It is currently set
AUTO_REPEAT_RATE. It is 5. They are actually the number of pen sampling
tick. For example, a 32Hz pen sampling would result in the second key after 20/32
STATUS
CloseSoftKey
(void)
CloseSoftKey() closes the soft keyboard which is opened by either OpenSoftKey()
or AdvOpenSoftKey(). PPSM will restore the display area that was covered by the
soft keyboard automatically.
5.1.4
Suspend Soft Keyboard Character Input
STATUS
ActiveListPop
(void)
STATUS
ActiveListPush
(void)
ActiveListPush() pushes the current active area list and the soft keyboard of the
current task into background. ActiveListPop() pops the top background active list
and soft keyboard of the current task from the active area stack. The active list
that is currently being used is destroyed, replaced by the top background active
list. For more details, please see
Example 5-3 Display characters received from soft keyboard
if (rv = OpenSoftKey(50, 50))
{
/* error */
return (rv);
}
while (running)
{
switch(IrptGetData((P_U32)&id, (P_U32*)&inData, (P_U32)&size))
{
/* Any key pressed */
case IRPT_KEY:
/* User writing in soft keyboard */
DisplayKey((U16) (size >> 1), (P_U16)inData);
/* (x, y) store the position of the key being pressed */
x=*(++inData);
y=*(++inData);
DisplayXY(x, y);
F
Freescale Semiconductor, Inc.
For More Information On This Product,
Go to: www.freescale.com
n
.