Go to the documentation of this file.00001
00002 #define WindowDeviceNameLen 16
00003
00004 class MouseDevice;
00005 class KeyboardDevice;
00006
00007 typedef uint DEVICE;
00008 typedef int MOUSEBTN;
00009 typedef int KEYBTN;
00010
00011 const DEVICE deviceUnknown = 0x00;
00012 const DEVICE deviceMouse = 0x01;
00013 const DEVICE deviceMouseHID = 0x02;
00014 const DEVICE deviceKeyboard = 0x10;
00015 const DEVICE deviceKeypad = 0x20;
00016 const DEVICE deviceHID = 0x40;
00017
00019 struct DeviceInfo {
00020 DEVICE type;
00021 int ID;
00022 char name[WindowDeviceNameLen];
00023 };
00024
00026 typedef
00027 class Device {
00028 public:
00029 virtual ~Device(){}
00030 virtual bool isDevice(void){return true;}
00031 virtual Device* asDevice(void){return this;}
00032 virtual bool isMouse(void){return false;}
00033 virtual MouseDevice* asMouse(void){return 0;}
00034 virtual bool isKeyboard(void){return false;}
00035 virtual KeyboardDevice* asKeyboard(void){return 0;}
00036 int ID;
00037 protected:
00038 Device() : ID(0) {}
00039 } *pDevice;
00040
00042 typedef
00043 class MouseDevice :
00044 public Device {
00045 public:
00046 MouseDevice() : Device() {
00047 dz=dx=dy=absX=absY = 0;
00048 for(int i=0; i<6; btnsDown[i] = btnsUp[i] = false, i++);
00049 change = false;
00050 }
00051 virtual ~MouseDevice(){}
00052 virtual Device* asDevice(void){return this;}
00053 virtual bool isMouse(void){return true;}
00054 virtual MouseDevice* asMouse(void){return this;}
00055 virtual void update(bool reset = true) = 0;
00056 inline bool operator == (const MouseDevice& other){
00057 const void* voidThis = this;
00058 const void* voidOther = &other;
00059 return voidThis == voidOther;
00060 }
00061 inline bool operator != (const MouseDevice& other){
00062 return !this->operator == (other);
00063 }
00064
00065 inline int getDx(void){return dx;}
00066 inline int getDy(void){return dy;}
00067 inline int getDz(void){return dz;}
00068 inline int getScreenX(void){return absX;}
00069 inline int getScreenY(void){return absY;}
00070 inline bool isDown(MOUSEBTN btn){return btnsDown[btn];}
00071 inline bool isUp(MOUSEBTN btn){return btnsUp[btn];}
00072 inline bool hasChanged(void){return change;}
00073
00074 protected:
00075 int dz,dx,dy,absX,absY;
00076 bool btnsDown[6];
00077 bool btnsUp[6];
00078 bool change;
00079 } *pMouseDevice;
00080
00082 typedef
00083 class KeyboardDevice :
00084 public Device {
00085 public:
00086 KeyboardDevice() : Device() {
00087 memset(keysDown,0,256);
00088 memset(keysUp,0,256);
00089 change = false;
00090 }
00091 virtual ~KeyboardDevice(){}
00092 virtual Device* asDevice(void){return this;}
00093 virtual bool isKeyboard(void){return true;}
00094 virtual KeyboardDevice* asKeyboard(void){return this;}
00095 virtual void update(bool reset = true) = 0;
00096 inline bool operator == (const KeyboardDevice& other){
00097 const void* voidThis = this;
00098 const void* voidOther = &other;
00099 return voidThis == voidOther;
00100 }
00101 inline bool operator != (const KeyboardDevice& other){
00102 return !this->operator == (other);
00103 }
00104
00105 inline bool isDown(KEYBTN key){return keysDown[key];}
00106 inline bool isUp(KEYBTN key){return keysUp[key];}
00107 inline bool hasChanged(void){return change;}
00108
00109 protected:
00110 bool keysDown[256];
00111 bool keysUp[256];
00112 bool change;
00113 } *pKeyboardDevice;
00114
00115 struct MouseMap {
00116 MouseMap() {
00117 mouseNone = 0;
00118 mouseL = 1;
00119 mouseM = 2;
00120 mouseR = 3;
00121 mouse4 = 4;
00122 mouse5 = 5;
00123 }
00124 MouseMap(const MouseMap& other){
00125 memcpy(this, &other, sizeof(MouseMap));
00126 }
00127 const MouseMap& operator = (const MouseMap& other){
00128 return memcpy(this, &other, sizeof(MouseMap)), *this;
00129 }
00130 MOUSEBTN mouseNone;
00131 MOUSEBTN mouseL;
00132 MOUSEBTN mouseM;
00133 MOUSEBTN mouseR;
00134 MOUSEBTN mouse4;
00135 MOUSEBTN mouse5;
00136 };
00137
00138 struct KeyboardMap {
00139 KeyboardMap() {
00140 memset(this, 0, sizeof(KeyboardMap));
00141 }
00142 KeyboardMap(const KeyboardMap& other){
00143 memcpy(this, &other, sizeof(KeyboardMap));
00144 }
00145 const KeyboardMap& operator = (const KeyboardMap& other){
00146 return memcpy(this, &other, sizeof(KeyboardMap)), *this;
00147 }
00148 KEYBTN keyBackspace;
00149 KEYBTN keyTab;
00150 KEYBTN keyClear;
00151 KEYBTN keyReturn;
00152 KEYBTN keyCapital;
00153 KEYBTN keyEsc;
00154 KEYBTN keyBegin;
00155 KEYBTN keyEnd;
00156 KEYBTN keyPageUp;
00157 KEYBTN keyPageDown;
00158 KEYBTN keyLeft;
00159 KEYBTN keyUp;
00160 KEYBTN keyRight;
00161 KEYBTN keyDown;
00162 KEYBTN keyPrint;
00163 KEYBTN keyInsert;
00164 KEYBTN keyDelete;
00165 KEYBTN keySpace;
00166 KEYBTN keyExclam;
00167 KEYBTN keyQuotedbl;
00168 KEYBTN keyNumbersign;
00169 KEYBTN keyAsterisk;
00170 KEYBTN keyPlus;
00171 KEYBTN keyComma;
00172 KEYBTN keyMinus;
00173 KEYBTN keyPeriod;
00174 KEYBTN keySlash;
00175 KEYBTN key0;
00176 KEYBTN key1;
00177 KEYBTN key2;
00178 KEYBTN key3;
00179 KEYBTN key4;
00180 KEYBTN key5;
00181 KEYBTN key6;
00182 KEYBTN key7;
00183 KEYBTN key8;
00184 KEYBTN key9;
00185 KEYBTN keyA;
00186 KEYBTN keyB;
00187 KEYBTN keyC;
00188 KEYBTN keyD;
00189 KEYBTN keyE;
00190 KEYBTN keyF;
00191 KEYBTN keyG;
00192 KEYBTN keyH;
00193 KEYBTN keyI;
00194 KEYBTN keyJ;
00195 KEYBTN keyK;
00196 KEYBTN keyL;
00197 KEYBTN keyM;
00198 KEYBTN keyN;
00199 KEYBTN keyO;
00200 KEYBTN keyP;
00201 KEYBTN keyQ;
00202 KEYBTN keyR;
00203 KEYBTN keyS;
00204 KEYBTN keyT;
00205 KEYBTN keyU;
00206 KEYBTN keyV;
00207 KEYBTN keyW;
00208 KEYBTN keyX;
00209 KEYBTN keyY;
00210 KEYBTN keyZ;
00211 KEYBTN keyNum0;
00212 KEYBTN keyNum1;
00213 KEYBTN keyNum2;
00214 KEYBTN keyNum3;
00215 KEYBTN keyNum4;
00216 KEYBTN keyNum5;
00217 KEYBTN keyNum6;
00218 KEYBTN keyNum7;
00219 KEYBTN keyNum8;
00220 KEYBTN keyNum9;
00221 KEYBTN keyNumMul;
00222 KEYBTN keyNumAdd;
00223 KEYBTN keyNumSub;
00224 KEYBTN keyNumDiv;
00225 KEYBTN keyNumDecimal;
00226 KEYBTN keyNumSeperator;
00227 KEYBTN keyF1;
00228 KEYBTN keyF2;
00229 KEYBTN keyF3;
00230 KEYBTN keyF4;
00231 KEYBTN keyF5;
00232 KEYBTN keyF6;
00233 KEYBTN keyF7;
00234 KEYBTN keyF8;
00235 KEYBTN keyF9;
00236 KEYBTN keyF10;
00237 KEYBTN keyF11;
00238 KEYBTN keyF12;
00239 KEYBTN keyNumLock;
00240 KEYBTN keyScroll;
00241 KEYBTN keyLogoL;
00242 KEYBTN keyLogoR;
00243 KEYBTN keyShiftL;
00244 KEYBTN keyShiftR;
00245 KEYBTN keyCtrlL;
00246 KEYBTN keyCtrlR;
00247 KEYBTN keyMenuL;
00248 KEYBTN keyMenuR;
00249 KEYBTN keyAltL;
00250 KEYBTN keyAltR;
00251 KEYBTN keyMetaL;
00252 KEYBTN keyMetaR;
00253 };