You need the newer PalmChars.h header file that contains
PalmNavigator.h which deals with 5 way navigator-specific definitions. 

See header info below: (with header shown as the respect to copyright
by Palm)

Robert

/***************************************************************************
***
 * Copyright (c) 2003 Palm, Inc. or its subsidiaries.
 * All rights reserved.

****************************************************************************
*/

/**
 * @file  PalmNavigator.h
 * @version 1.0
 * @date  02/29/2002
 *
 * Contains 5-way navigator-specific definitions.
 *
 * Five-way navigation macros and values for key states are included
 * in this file.
 *
 * <hr>
 */

#ifndef __PALMNAVIGATOR_H__
#define __PALMNAVIGATOR_H__

#include "PalmChars.h"

#define navFtrCreator            'fway'  /**< Creator ID for 5-Way
navigator. */
#define navFtrVersion            0   /**< Feature id for 5-Way. */
#define navVersion               0x00010000 /**< Version for 5-Way. */

#define keyBitNavLeft    0x01000000 /**< Key state mask to check the
five
way navigation LEFT button. */
#define keyBitNavRight    0x02000000 /**< Key state mask to check the
five
way navigation RIGHT button. */
#define keyBitNavSelect    0x04000000 /**< Key state mask to check the
five
way navigation SELECT button. */
#define keyBitNavLRS    0x07000000 /**< Key state mask to check the
five way
navigation LEFT, RIGHT and SELECT buttons. */

#define navBitUp     0x0001 /**< Key mask for the five way navigation
UP
button. */
#define navBitDown     0x0002 /**< Key mask for the five way navigation
DOWN
button. */
#define navBitLeft     0x0004 /**< Key mask for the five way navigation
LEFT
button. */
#define navBitRight     0x0008 /**< Key mask for the five way
navigation
RIGHT button. */
#define navBitSelect    0x0010 /**< Key mask for the five way
navigation
SELECT button. */
#define navBitsAll     0x001F /**< Key mask for all five way navigation
buttons. */

#define navChangeUp     0x0100 /**< Key mask for the five way
navigation UP
button state change. */
#define navChangeDown    0x0200 /**< Key mask for the five way
navigation
DOWN button state change. */
#define navChangeLeft    0x0400 /**< Key mask for the five way
navigation
LEFT button state change. */
#define navChangeRight    0x0800 /**< Key mask for the five way
navigation
RIGHT button state change. */
#define navChangeSelect    0x1000 /**< Key mask for the five way
navigation
SELECT button state change. */
#define navChangeBitsAll   0x1F00 /**< Key mask for all five way
navigation
buttons state change. */

/**
 * @def IsFiveWayNavEvent(eventP)
 *
 * A macro to use for apps that support navigation using the 5-way.
 * This macro will let you test whether an event was generated by the
5-way.
 * For applications that treat up and down hard buttons differently
than up
and
 * down on the 5-way, this macro can be used to determine which action
to
take
 * if NavKeyPressed returns true for Up or Down.
 *
 * @sample
 * @code if (IsFiveWayNavEvent(eventP)) {
 *  // Handle five way events here
 * } @endcode
 */
#define IsFiveWayNavEvent(eventP)              \
(                      \
  ((eventP)->data.keyDown.chr == vchrPageUp ||          \
   (eventP)->data.keyDown.chr == vchrPageDown ||          \
   (eventP)->data.keyDown.chr == vchrNavChange)          \
&&                      \
  (((eventP)->data.keyDown.keyCode & (navBitsAll | navChangeBitsAll))
!= 0)\
)


/**
 * A macro to use for apps that support navigation using the 5-way.
 * By using this macro, we have consistent behavior in all our apps
 * when it comes to how it handles multiple simultaneous button
presses.
 *
 * @remark
 * Only act when the select button is released, and only if none of the
 * direction buttons are down (or being released) at the time, and only
if
the select
 * button has not been held down long enough to start repeating. By
ignoring
repeat
 * events for the select button, we ensure that the launcher will be
run if
the select
 * button is held down. By waiting until the button is released, we
ensure
that the
 * select action is not taken before the launcher is run.
 *
 * @sample
 * @code if (NavSelectPressed(eventP)) {
 *  // Select was pressed
 * } @endcode
 *
 */
#define NavSelectPressed(eventP)              \
(                      \
 IsFiveWayNavEvent(eventP)               \
&&                      \
 (((eventP)->data.keyDown.modifiers & autoRepeatKeyMask) == 0)      \
&&                      \
 (((eventP)->data.keyDown.keyCode & (navBitsAll | navChangeBitsAll)) ==
   \
                  navChangeSelect) \
)


/**
 * A macro to use for apps that support navigation using the 5-way.
 * By using this macro, we have consistent behavior in all our apps
 * when it comes to how it handles multiple simultaneous button
presses.
 * You can use this macro even if the device does not have a 5-way
controller.
 *
 * @remark
 * Act only when one direction is pressed without any other direction
(or
select) being
 * down at the time. Repeat if the button is held down, but not if
other
buttons are
 * pressed.
 *
 * @sample
 * @code
 * if (NavDirectionPressed(eventP, Left))
 * if (NavDirectionPressed(eventP, Right))
 * if (NavDirectionPressed(eventP, Up))  - also works without 5-way
 * if (NavDirectionPressed(eventP, Down)) - also works without 5-way
@endcode
 *
 */
#define NavDirectionPressed(eventP, nav)            \
(IsFiveWayNavEvent(eventP)                \
 ? (((eventP)->data.keyDown.modifiers & autoRepeatKeyMask)       \
   ? (((eventP)->data.keyDown.keyCode & (navBitsAll |
navChangeBitsAll)) ==\
      (navBit ## nav))             \
   : (((eventP)->data.keyDown.keyCode & (navBitsAll |
navChangeBitsAll)) ==\
     (navBit ## nav | navChange ## nav)))        \
 : (((eventP)->data.keyDown.chr == vchrPageUp && navBit ## nav ==
navBitUp)||  \
   ((eventP)->data.keyDown.chr == vchrPageDown && navBit ## nav ==
navBitDown)) \
)


/**
 * A macro to use for apps that support navigation using the 5-way.
 * By using this macro, we have consistent behavior in all our apps
 * when it comes to how it handles multiple simultaneous button
presses.
 * You can use this macro even if the device does not have a 5-way
controller.
 *
 * @sample
 * @code
 * if (NavKeyPressed(eventP, Select))
 * if (NavKeyPressed(eventP, Left))
 * if (NavKeyPressed(eventP, Right))
 * if (NavKeyPressed(eventP, Up))  - also works without 5-way
 * if (NavKeyPressed(eventP, Down))  - also works without 5-way
@endcode
 */
#define NavKeyPressed(eventP, nav)              \
((navBit ## nav == navBitSelect)              \
 ? NavSelectPressed(eventP)               \
 : NavDirectionPressed(eventP, nav)             \
)

#endif // __PALMNAVIGATOR_H__



-- 
For information on using the Palm Developer Forums, or to unsubscribe, please see 
http://www.palmos.com/dev/support/forums/

Reply via email to