00001 /***************************************************************************** 00002 * 00003 * $RCSfile: fiveway_8h-source.html,v $ 00004 * 00005 * fiveway.h,v 1.8 2004/05/08 08:57:55 nordstrom Exp 00006 * 00007 * Imported to GPS4Palm from: 00008 * Viewer - a part of Plucker, the free off-line HTML viewer for PalmOS 00009 * Copyright (c) 1998-2002, Mark Ian Lillywhite and Michael Nordstrom 00010 * 00011 * This program is free software; you can redistribute it and/or 00012 * modify it under the terms of the GNU General Public License 00013 * as published by the Free Software Foundation; either version 2 00014 * of the License, or (at your option) any later version. 00015 * 00016 * This program is distributed in the hope that it will be useful, 00017 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00018 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00019 * GNU General Public License for more details. 00020 * 00021 * You should have received a copy of the GNU General Public License 00022 * along with this program; if not, write to the Free Software 00023 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 00024 * 00025 * $Date: 2007-10-08 20:40:32 $ 00026 * 00027 * $Revision: 1.1.2.1 $ 00028 * 00029 * $Log: fiveway_8h-source.html,v $ 00029 * Revision 1.1.2.1 2007-10-08 20:40:32 mp 00029 * updated for gps4palm V0.9.5 beta 00029 * 00030 * Revision 1.1 2005-03-24 08:44:05 mp 00031 * imported from plucker-1.8 00032 * 00033 * 00034 ****************************************************************************/ 00035 00036 #ifndef FIVEWAY_H 00037 #define FIVEWAY_H 00038 00039 #if defined( HAVE_FIVEWAY_SDK ) && ! defined( HAVE_HANDSPRING_SDK ) 00040 00041 #define FiveWayCenterPressed(eventP) \ 00042 ( \ 00043 NavSelectPressed(eventP) \ 00044 ) 00045 00046 #define FiveWayDirectionPressed(eventP, nav) \ 00047 ( \ 00048 NavDirectionPressed(eventP, nav) \ 00049 ) 00050 00051 /* only to be used with Left, Right, Up, and Down; use 00052 FiveWayCenterPressed for Select/Center */ 00053 #define FiveWayKeyPressed(eventP, nav) \ 00054 ( \ 00055 NavKeyPressed(eventP, nav) \ 00056 ) 00057 00058 #define IsFiveWayEvent(eventP) \ 00059 ( \ 00060 IsFiveWayNavEvent(eventP) \ 00061 ) 00062 00063 #elif ! defined( HAVE_FIVEWAY_SDK) && defined( HAVE_HANDSPRING_SDK ) 00064 00065 #define HsNavCenterPressed(eventP) \ 00066 ( \ 00067 IsHsFiveWayNavEvent(eventP) && \ 00068 ((eventP)->data.keyDown.chr == vchrRockerCenter) && \ 00069 (((eventP)->data.keyDown.modifiers & commandKeyMask) != 0) \ 00070 ) 00071 00072 #define HsNavDirectionPressed(eventP, nav) \ 00073 ( \ 00074 IsHsFiveWayNavEvent(eventP) && \ 00075 ( vchrRocker ## nav == vchrRockerUp) ? \ 00076 (((eventP)->data.keyDown.chr == vchrPageUp) || \ 00077 ((eventP)->data.keyDown.chr == vchrRocker ## nav)) : \ 00078 (vchrRocker ## nav == vchrRockerDown) ? \ 00079 (((eventP)->data.keyDown.chr == vchrPageDown) || \ 00080 ((eventP)->data.keyDown.chr == vchrRocker ## nav)) : \ 00081 ((eventP)->data.keyDown.chr == vchrRocker ## nav) \ 00082 ) 00083 00084 #define HsNavKeyPressed(eventP, nav) \ 00085 ( \ 00086 ( vchrRocker ## nav == vchrRockerCenter ) ? \ 00087 HsNavCenterPressed(eventP) : \ 00088 HsNavDirectionPressed(eventP, nav) \ 00089 ) 00090 00091 #define IsHsFiveWayNavEvent(eventP) \ 00092 ( \ 00093 HaveHsNav() && ((eventP)->eType == keyDownEvent) && \ 00094 ( \ 00095 ((((eventP)->data.keyDown.chr == vchrPageUp) || \ 00096 ((eventP)->data.keyDown.chr == vchrPageDown)) && \ 00097 (((eventP)->data.keyDown.modifiers & commandKeyMask) != 0)) \ 00098 || \ 00099 (TxtCharIsRockerKey((eventP)->data.keyDown.modifiers, \ 00100 (eventP)->data.keyDown.chr)) \ 00101 ) \ 00102 ) 00103 00104 #define FiveWayCenterPressed(eventP) \ 00105 ( \ 00106 HsNavCenterPressed(eventP) \ 00107 ) 00108 00109 #define FiveWayDirectionPressed(eventP, nav) \ 00110 ( \ 00111 HsNavDirectionPressed(eventP, nav) \ 00112 ) 00113 00114 /* only to be used with Left, Right, Up, and Down; use 00115 FiveWayCenterPressed for Select/Center */ 00116 #define FiveWayKeyPressed(eventP, nav) \ 00117 ( \ 00118 HsNavKeyPressed(eventP, nav) \ 00119 ) 00120 00121 #define IsFiveWayEvent(eventP) \ 00122 ( \ 00123 IsHsFiveWayNavEvent(eventP) \ 00124 ) 00125 00126 00127 #elif defined( HAVE_FIVEWAY_SDK ) && defined( HAVE_HANDSPRING_SDK ) 00128 00129 #define HsNavCenterPressed(eventP) \ 00130 ( \ 00131 IsHsFiveWayNavEvent(eventP) && \ 00132 ((eventP)->data.keyDown.chr == vchrRockerCenter) && \ 00133 (((eventP)->data.keyDown.modifiers & commandKeyMask) != 0) \ 00134 ) 00135 00136 #define HsNavDirectionPressed(eventP, nav) \ 00137 ( \ 00138 IsHsFiveWayNavEvent(eventP) && \ 00139 ( vchrRocker ## nav == vchrRockerUp) ? \ 00140 (((eventP)->data.keyDown.chr == vchrPageUp) || \ 00141 ((eventP)->data.keyDown.chr == vchrRocker ## nav)) : \ 00142 (vchrRocker ## nav == vchrRockerDown) ? \ 00143 (((eventP)->data.keyDown.chr == vchrPageDown) || \ 00144 ((eventP)->data.keyDown.chr == vchrRocker ## nav)) : \ 00145 ((eventP)->data.keyDown.chr == vchrRocker ## nav) \ 00146 ) 00147 00148 #define HsNavKeyPressed(eventP, nav) \ 00149 ( \ 00150 ( vchrRocker ## nav == vchrRockerCenter ) ? \ 00151 HsNavCenterPressed(eventP) : \ 00152 HsNavDirectionPressed(eventP, nav) \ 00153 ) 00154 00155 #define IsHsFiveWayNavEvent(eventP) \ 00156 ( \ 00157 HaveHsNav() && ((eventP)->eType == keyDownEvent) && \ 00158 ( \ 00159 ((((eventP)->data.keyDown.chr == vchrPageUp) || \ 00160 ((eventP)->data.keyDown.chr == vchrPageDown)) && \ 00161 (((eventP)->data.keyDown.modifiers & commandKeyMask) != 0)) \ 00162 || \ 00163 (TxtCharIsRockerKey((eventP)->data.keyDown.modifiers, \ 00164 (eventP)->data.keyDown.chr)) \ 00165 ) \ 00166 ) 00167 00168 #define FiveWayCenterPressed(eventP) \ 00169 ( \ 00170 NavSelectPressed(eventP) || \ 00171 HsNavCenterPressed(eventP) \ 00172 ) 00173 00174 #define FiveWayDirectionPressed(eventP, nav) \ 00175 ( \ 00176 NavDirectionPressed(eventP, nav) || \ 00177 HsNavDirectionPressed(eventP, nav) \ 00178 ) 00179 00180 /* only to be used with Left, Right, Up, and Down; use 00181 FiveWayCenterPressed for Select/Center */ 00182 #define FiveWayKeyPressed(eventP, nav) \ 00183 ( \ 00184 NavKeyPressed(eventP, nav) || \ 00185 HsNavKeyPressed(eventP, nav) \ 00186 ) 00187 00188 #define IsFiveWayEvent(eventP) \ 00189 ( \ 00190 HaveHsNav() ? IsHsFiveWayNavEvent(eventP) : IsFiveWayNavEvent(eventP) \ 00191 ) 00192 00193 #else 00194 00195 #define IsFiveWayEvent(eventP) false 00196 #define IsHsFiveWayNavEvent(eventP) false 00197 #define FiveWayCenterPressed(eventP) false 00198 #define FiveWayDirectionPressed(eventP, nav) false 00199 #define FiveWayKeyPressed(eventP, nav) false 00200 #define FiveWayLibraryHandler( event ) false 00201 #define FiveWayMainHandler( event ) false 00202 00203 #endif 00204 00205 #endif