$search
00001 00002 #ifdef LINUX 00003 00004 #include <blort/GLWindow/GLWindow.h> 00005 00006 namespace blortGLWindow{ 00007 00008 void MapMouse(unsigned int xbutton, Input &input); 00009 void MapKey(KeySym ks, Input &input); 00010 00011 bool GLWindow::GetEvent(Event &event){ 00012 00013 if(XPending(dpy)){ 00014 XEvent xev; 00015 00016 // Keyboard Key Press (Keysym code available in /usr/include/X11/keysymdef.h) 00017 if( XCheckWindowEvent(dpy, glWin, KeyPressMask, &xev) ) 00018 { 00019 event.type = TMGL_Press; 00020 KeySym ks = XKeycodeToKeysym(dpy, xev.xkey.keycode, 0); 00021 MapKey(ks, event.input); 00022 } 00023 // Keyboard Key Release (Keysym code available in /usr/include/X11/keysymdef.h) 00024 else if(XCheckWindowEvent(dpy, glWin, KeyReleaseMask, &xev)) 00025 { 00026 event.type = TMGL_Release; 00027 KeySym ks = XKeycodeToKeysym(dpy, xev.xkey.keycode, 0); 00028 MapKey(ks, event.input); 00029 } 00030 // Mouse Button Press 00031 else if(XCheckWindowEvent(dpy, glWin, ButtonPressMask, &xev)) 00032 { 00033 event.type = TMGL_Press; 00034 MapMouse(xev.xbutton.button, event.input); 00035 } 00036 // Mouse Button Release 00037 else if(XCheckWindowEvent(dpy, glWin, ButtonReleaseMask, &xev)) 00038 { 00039 event.type = TMGL_Release; 00040 MapMouse(xev.xbutton.button, event.input); 00041 } 00042 // Mouse Motion 00043 else if(XCheckWindowEvent(dpy, glWin, PointerMotionMask, &xev)) 00044 { 00045 event.type = TMGL_Motion; 00046 event.motion.x = xev.xmotion.x; 00047 event.motion.y = xev.xmotion.y; 00048 } 00049 // Window Exposure 00050 else if(XCheckWindowEvent(dpy, glWin, ExposureMask, &xev)) 00051 { 00052 XWindowAttributes gwa; 00053 event.type = TMGL_Expose; 00054 XGetWindowAttributes(dpy, glWin, &gwa); 00055 event.expose.width = gwa.width; 00056 event.expose.height = gwa.height; 00057 } 00058 00059 // Other Events 00060 else 00061 { 00062 return false; 00063 } 00064 00065 return true; 00066 } 00067 return false; 00068 } 00069 00070 void MapMouse(unsigned int xbutton, Input &input) 00071 { 00072 switch(xbutton) 00073 { 00074 case Button1: 00075 input = TMGL_Button1; 00076 break; 00077 case Button2: 00078 input = TMGL_Button2; 00079 break; 00080 case Button3: 00081 input = TMGL_Button3; 00082 break; 00083 case Button4: 00084 input = TMGL_Button4; 00085 break; 00086 case Button5: 00087 input = TMGL_Button5; 00088 break; 00089 } 00090 } 00091 00092 void MapKey(KeySym ks, Input &input) 00093 { 00094 switch(ks) 00095 { 00096 case XK_0: 00097 input = TMGL_0; 00098 break; 00099 case XK_1: 00100 input = TMGL_1; 00101 break; 00102 case XK_2: 00103 input = TMGL_2; 00104 break; 00105 case XK_3: 00106 input = TMGL_3; 00107 break; 00108 case XK_4: 00109 input = TMGL_4; 00110 break; 00111 case XK_5: 00112 input = TMGL_5; 00113 break; 00114 case XK_6: 00115 input = TMGL_6; 00116 break; 00117 case XK_7: 00118 input = TMGL_7; 00119 break; 00120 case XK_8: 00121 input = TMGL_8; 00122 break; 00123 case XK_9: 00124 input = TMGL_9; 00125 break; 00126 00127 case XK_a: 00128 input = TMGL_a; 00129 break; 00130 case XK_b: 00131 input = TMGL_b; 00132 break; 00133 case XK_c: 00134 input = TMGL_c; 00135 break; 00136 case XK_d: 00137 input = TMGL_d; 00138 break; 00139 case XK_e: 00140 input = TMGL_e; 00141 break; 00142 case XK_f: 00143 input = TMGL_f; 00144 break; 00145 case XK_g: 00146 input = TMGL_g; 00147 break; 00148 case XK_h: 00149 input = TMGL_h; 00150 break; 00151 case XK_i: 00152 input = TMGL_i; 00153 break; 00154 case XK_j: 00155 input = TMGL_j; 00156 break; 00157 case XK_k: 00158 input = TMGL_k; 00159 break; 00160 case XK_l: 00161 input = TMGL_l; 00162 break; 00163 case XK_m: 00164 input = TMGL_m; 00165 break; 00166 case XK_n: 00167 input = TMGL_n; 00168 break; 00169 case XK_o: 00170 input = TMGL_o; 00171 break; 00172 case XK_p: 00173 input = TMGL_p; 00174 break; 00175 case XK_q: 00176 input = TMGL_q; 00177 break; 00178 case XK_r: 00179 input = TMGL_r; 00180 break; 00181 case XK_s: 00182 input = TMGL_s; 00183 break; 00184 case XK_t: 00185 input = TMGL_t; 00186 break; 00187 case XK_u: 00188 input = TMGL_u; 00189 break; 00190 case XK_v: 00191 input = TMGL_v; 00192 break; 00193 case XK_w: 00194 input = TMGL_w; 00195 break; 00196 case XK_x: 00197 input = TMGL_x; 00198 break; 00199 case XK_y: 00200 input = TMGL_y; 00201 break; 00202 case XK_z: 00203 input = TMGL_z; 00204 break; 00205 00206 case XK_space: 00207 input = TMGL_Space; 00208 break; 00209 case XK_BackSpace: 00210 input = TMGL_BackSpace; 00211 break; 00212 case XK_Tab: 00213 input = TMGL_Tab; 00214 break; 00215 case XK_Return: 00216 input = TMGL_Return; 00217 break; 00218 case XK_Pause: 00219 input = TMGL_Pause; 00220 break; 00221 case XK_Escape: 00222 input = TMGL_Escape; 00223 break; 00224 case XK_Delete: 00225 input = TMGL_Delete; 00226 break; 00227 case XK_Left: 00228 input = TMGL_Left; 00229 break; 00230 case XK_Up: 00231 input = TMGL_Up; 00232 break; 00233 case XK_Right: 00234 input = TMGL_Right; 00235 break; 00236 case XK_Down: 00237 input = TMGL_Down; 00238 break; 00239 case XK_Page_Up: 00240 input = TMGL_Page_Up; 00241 break; 00242 case XK_Page_Down: 00243 input = TMGL_Page_Down; 00244 break; 00245 case XK_End: 00246 input = TMGL_End; 00247 break; 00248 case XK_Begin: 00249 input = TMGL_Begin; 00250 break; 00251 case XK_KP_Enter: 00252 input = TMGL_Return; 00253 break; 00254 case XK_KP_Multiply: 00255 input = TMGL_KP_Multiply; 00256 break; 00257 case XK_KP_Add: 00258 input = TMGL_KP_Add; 00259 break; 00260 case XK_KP_Subtract: 00261 input = TMGL_KP_Subtract; 00262 break; 00263 case XK_KP_Divide: 00264 input = TMGL_KP_Divide; 00265 break; 00266 case XK_KP_0: 00267 input = TMGL_KP_0; 00268 break; 00269 case XK_KP_1: 00270 input = TMGL_KP_1; 00271 break; 00272 case XK_KP_2: 00273 input = TMGL_KP_2; 00274 break; 00275 case XK_KP_3: 00276 input = TMGL_KP_3; 00277 break; 00278 case XK_KP_4: 00279 input = TMGL_KP_4; 00280 break; 00281 case XK_KP_5: 00282 input = TMGL_KP_5; 00283 break; 00284 case XK_KP_6: 00285 input = TMGL_KP_6; 00286 break; 00287 case XK_KP_7: 00288 input = TMGL_KP_7; 00289 break; 00290 case XK_KP_8: 00291 input = TMGL_KP_8; 00292 break; 00293 case XK_KP_9: 00294 input = TMGL_KP_9; 00295 break; 00296 case XK_F1: 00297 input = TMGL_F1; 00298 break; 00299 case XK_F2: 00300 input = TMGL_F2; 00301 break; 00302 case XK_F3: 00303 input = TMGL_F3; 00304 break; 00305 case XK_F4: 00306 input = TMGL_F4; 00307 break; 00308 case XK_F5: 00309 input = TMGL_F5; 00310 break; 00311 case XK_F6: 00312 input = TMGL_F6; 00313 break; 00314 case XK_F7: 00315 input = TMGL_F7; 00316 break; 00317 case XK_F8: 00318 input = TMGL_F8; 00319 break; 00320 case XK_F9: 00321 input = TMGL_F9; 00322 break; 00323 case XK_F10: 00324 input = TMGL_F10; 00325 break; 00326 case XK_F11: 00327 input = TMGL_F11; 00328 break; 00329 case XK_F12: 00330 input = TMGL_F12; 00331 break; 00332 case XK_Shift_L: 00333 input = TMGL_Shift_L; 00334 break; 00335 case XK_Shift_R: 00336 input = TMGL_Shift_R; 00337 break; 00338 case XK_Control_L: 00339 input = TMGL_Control_L; 00340 break; 00341 case XK_Control_R: 00342 input = TMGL_Control_R; 00343 break; 00344 } 00345 } 00346 00347 } /* namespace */ 00348 00349 #endif /* LINUX */ 00350