• Main Page
  • Namespaces
  • Classes
  • Files
  • File List
  • File Members

src/window/header/Input.h

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 };

Generated on Fri Jun 18 2010 17:48:40 for Cannonball by  doxygen 1.7.0