00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef __GUTZ_KEY_MOUSE_DOT_H
00021 #define __GUTZ_KEY_MOUSE_DOT_H
00022
00023 #include <map>
00024 #include "../include/smartptr.h"
00025
00026 namespace gutz {
00027
00028
00029
00030
00031
00032
00033
00034 struct eventKeyMapCmp
00035 {
00036 bool operator()(unsigned int keyBV1, unsigned int keyBV2) const
00037 {
00038 return (keyBV1 < keyBV2);
00039 }
00040 };
00041
00042
00043
00044
00045 class EventKeyMap
00046 : public std::map<unsigned int, unsigned int, eventKeyMapCmp>,
00047 public gutz::Counted
00048 {
00049 public:
00050 typedef std::map<unsigned int, unsigned int, eventKeyMapCmp> Base;
00051 typedef Base::iterator Iter;
00052 typedef Base::const_iterator CIter;
00053
00054 EventKeyMap() {}
00055 ~EventKeyMap() {}
00056
00057 unsigned int operator[](unsigned int key) const
00058 {
00059 CIter ei = find(key);
00060 if( ei == end() ) return 0;
00061 return (*ei).second;
00062 }
00063
00064 unsigned int &operator[](unsigned int key)
00065 {
00066 return Base::operator[](key);
00067 }
00068
00069
00070 };
00071 typedef gutz::SmartPtr<EventKeyMap> EventKeyMapSP;
00072
00073
00074
00075
00076 class EventParamMap
00077 : public std::map<unsigned int, float, eventKeyMapCmp>,
00078 public gutz::Counted
00079 {
00080 public:
00081 typedef std::map<unsigned int, float, eventKeyMapCmp> Base;
00082 typedef Base::iterator Iter;
00083 typedef Base::const_iterator CIter;
00084
00085 EventParamMap() {}
00086 ~EventParamMap() {}
00087
00088 float operator[](unsigned int key) const
00089 {
00090 CIter ei = find(key);
00091 if( ei == end() ) return 0;
00092 return (*ei).second;
00093 }
00094
00095 float &operator[](unsigned int key)
00096 {
00097 return Base::operator[](key);
00098 }
00099 };
00100 typedef gutz::SmartPtr<EventParamMap> EventParamMapSP;
00101
00102
00103
00104
00105
00106
00107
00108
00109
00110
00111
00112 typedef enum GUTZ_BUTTON_STATES {
00113 GUTZ_KEY_DOWN,
00114 GUTZ_KEY_UP
00115 } GutzButtonState;
00116
00117
00118
00119
00120
00121
00122 typedef enum GUTZ_MOUSE_BUTTONS {
00123 GUTZ_BUTTON_NONE = 0,
00124 GUTZ_LEFT_MOUSE = 1 << 0,
00125 GUTZ_MIDDLE_MOUSE = 1 << 1,
00126 GUTZ_RIGHT_MOUSE = 1 << 2,
00127 GUTZ_UP_ARROW = 1 << 3,
00128 GUTZ_DOWN_ARROW = 1 << 4,
00129 GUTZ_RIGHT_ARROW = 1 << 5,
00130 GUTZ_LEFT_ARROW = 1 << 6,
00131 GUTZ_SHIFT = 1 << 7,
00132 GUTZ_CTRL = 1 << 8,
00133 GUTZ_ALT = 1 << 9,
00134 GUTZ_DBL_LEFT_MOUSE = 1 << 10,
00135 GUTZ_DBL_RIGHT_MOUSE = 1 << 11,
00136 GUTZ_DBL_MIDDLE_MOUSE = 1 << 12,
00137 GUTZ_LAST_BUTTON = 1 << 13,
00138 GUTZ_UNUSED_01 = 1 << 14,
00139 GUTZ_UNUSED_02 = 1 << 15,
00140 GUTZ_UNUSED_03 = 1 << 16,
00141 GUTZ_UNUSED_04 = 1 << 17,
00142 GUTZ_UNUSED_05 = 1 << 18,
00143 GUTZ_UNUSED_06 = 1 << 19,
00144 GUTZ_UNUSED_07 = 1 << 20,
00145 } GutzButton;
00146
00147
00148
00149
00150 typedef enum GUTZ_KEYS {
00151 GUTZ_ASCI = 255,
00152 GUTZ_F1,
00153 GUTZ_F2,
00154 GUTZ_F3,
00155 GUTZ_F4,
00156 GUTZ_F5,
00157 GUTZ_F6,
00158 GUTZ_F7,
00159 GUTZ_F8,
00160 GUTZ_F9,
00161 GUTZ_F10,
00162 GUTZ_F11,
00163 GUTZ_F12,
00164 GUTZ_TAB,
00165 GUTZ_NLK,
00166 GUTZ_CLK,
00167 GUTZ_ESC,
00168 GUTZ_INS,
00169 GUTZ_DEL,
00170 GUTZ_HOM,
00171 GUTZ_END,
00172 GUTZ_PUP,
00173 GUTZ_PDN,
00174 GUTZ_AUP,
00175 GUTZ_ADN,
00176 GUTZ_ALF,
00177 GUTZ_ART,
00178 GUTZ_PSCR,
00179 GUTZ_SCRL,
00180 GUTZ_PSEB,
00181 GUTZ_LAST_KEY
00182 } GutzKeys;
00183
00184
00185
00186
00187 inline
00188 unsigned int gutzAddKey(unsigned int &keyBitVec, unsigned int keyID)
00189 {
00190 keyBitVec = ((unsigned int)keyBitVec | (unsigned int)keyID);
00191 return keyBitVec;
00192 }
00193
00194
00195
00196
00197 inline
00198 unsigned int gutzDelKey(unsigned int &keyBitVec, unsigned int keyID)
00199 {
00200 keyBitVec = ((unsigned int)keyBitVec - (unsigned int)keyID);
00201 return keyBitVec;
00202 }
00203
00204
00205
00206
00207
00208 inline
00209 bool isMouse(unsigned int keyBitVec)
00210 {
00211 if(keyBitVec & GUTZ_LEFT_MOUSE) return true;
00212 if(keyBitVec & GUTZ_MIDDLE_MOUSE) return true;
00213 if(keyBitVec & GUTZ_RIGHT_MOUSE) return true;
00214 return false;
00215 }
00216
00217 inline
00218 bool isArrow(unsigned int keyBitVec)
00219 {
00220 if(keyBitVec & GUTZ_UP_ARROW) return true;
00221 if(keyBitVec & GUTZ_DOWN_ARROW) return true;
00222 if(keyBitVec & GUTZ_LEFT_ARROW) return true;
00223 if(keyBitVec & GUTZ_RIGHT_ARROW) return true;
00224 return false;
00225 }
00226
00227 inline
00228 bool isModified(unsigned int keyBitVec)
00229 {
00230 if(keyBitVec & GUTZ_SHIFT) return true;
00231 if(keyBitVec & GUTZ_ALT) return true;
00232 if(keyBitVec & GUTZ_CTRL) return true;
00233 return false;
00234 }
00235
00236 inline
00237 bool isCustom(unsigned int keyBitVec)
00238 {
00239 if(keyBitVec > GUTZ_LAST_KEY) return true;
00240 return false;
00241 }
00242
00243 }
00244
00245 #endif
00246