00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #include "toolkits/entorno/jed_evnt.h"
00024
00025 #ifdef GLUT_ENABLED
00026 #include <GL/glut.h>
00027 #endif
00028
00029 #ifdef WXWINDOWS_ENABLED
00030 #include <wx/defs.h>
00031 #endif
00032
00033
00034
00035
00036 #ifdef X_ENABLED
00037 #include <X11/keysym.h>
00038 #endif
00039
00040 #if PLATAFORMA == i386_WIN32_VC
00041 #endif
00042
00043 BOOLEAN BUFFER_doble = TRUE;
00044
00045 void (*EVNT_draw_callback)(void);
00046 void (*EVNT_resize_callback)(int x_tam, int y_tam);
00047 BOOLEAN (*EVNT_keyboard_callback)(EVENTO_GUI *e);
00048 BOOLEAN (*EVNT_mouse_callback)(EVENTO_GUI *e);
00049 EVENTO_GUI *EVNT_EVENTO_GUI = 0;
00050
00051
00052
00053
00054
00055 EVENTO_GUI::EVENTO_GUI()
00056 {
00057 modo_de_operacion = 0;
00058 mouse_old_x = mouse_old_y = mouse_x = mouse_y = 0;
00059 mouse_delta_x = mouse_delta_y = 0;
00060 mouse_button_mask = 0x00;
00061 }
00062
00063
00064
00065
00066
00067 #ifdef X_ENABLED
00068
00069
00070 void
00071 Xkeycode2JEDkeycode( EVENTO_GUI *e, unsigned int code)
00076 {
00077 static int mascara = 0x00;
00078
00079
00080
00081 switch ( code ) {
00082 case XK_Shift_L:
00083 e->key_code = JK_SHIFT_L;
00084 if ( e->tipo_de_evento == ETYPE_KEY_DOWN ) {
00085 mascara |= EKEY_SHIFT;
00086 }
00087 else {
00088 mascara &= ~EKEY_SHIFT;
00089 }
00090 break;
00091 case XK_Shift_R:
00092 e->key_code = JK_SHIFT_R;
00093 if ( e->tipo_de_evento == ETYPE_KEY_DOWN ) {
00094 mascara |= EKEY_SHIFT;
00095 }
00096 else {
00097 mascara &= ~EKEY_SHIFT;
00098 }
00099 break;
00100 case XK_Control_L:
00101 e->key_code = JK_CONTROL_L;
00102 if ( e->tipo_de_evento == ETYPE_KEY_DOWN ) {
00103 mascara |= EKEY_CTRL;
00104 }
00105 else {
00106 mascara &= ~EKEY_CTRL;
00107 }
00108 break;
00109 case XK_Control_R:
00110 e->key_code = JK_CONTROL_R;
00111 if ( e->tipo_de_evento == ETYPE_KEY_DOWN ) {
00112 mascara |= EKEY_CTRL;
00113 }
00114 else {
00115 mascara &= ~EKEY_CTRL;
00116 }
00117 break;
00118 case XK_Alt_L:
00119 e->key_code = JK_ALT_L;
00120 if ( e->tipo_de_evento == ETYPE_KEY_DOWN ) {
00121 mascara |= EKEY_ALT;
00122 }
00123 else {
00124 mascara &= ~EKEY_ALT;
00125 }
00126 break;
00127 case XK_Alt_R:
00128 e->key_code = JK_ALT_R;
00129 if ( e->tipo_de_evento == ETYPE_KEY_DOWN ) {
00130 mascara |= EKEY_ALT;
00131 }
00132 else {
00133 mascara &= ~EKEY_ALT;
00134 }
00135 break;
00136
00137 case XK_VoidSymbol: e->key_code = JK_VOID; break;
00138 case XK_space: e->key_code = JK_SPACE; break;
00139 case XK_Return: e->key_code = JK_ENTER; break;
00140 case XK_Escape: e->key_code = JK_ESC; break;
00141 case XK_Tab: e->key_code = JK_TAB; break;
00142 case XK_BackSpace: e->key_code = JK_BACKSPACE; break;
00143 case XK_Pause: e->key_code = JK_PAUSE; break;
00144 case XK_Up: e->key_code = JK_UP; break;
00145 case XK_Left: e->key_code = JK_LEFT; break;
00146 case XK_Right: e->key_code = JK_RIGHT; break;
00147 case XK_Down: e->key_code = JK_DOWN; break;
00148 case XK_Insert: e->key_code = JK_INSERT; break;
00149 case XK_Delete: e->key_code = JK_DEL; break;
00150 case XK_Home: e->key_code = JK_HOME; break;
00151 case XK_End: e->key_code = JK_END; break;
00152 case XK_Page_Up: e->key_code = JK_PAGE_UP; break;
00153 case XK_Page_Down: e->key_code = JK_PAGE_DOWN; break;
00154 case XK_F1: e->key_code = JK_F1; break;
00155 case XK_F2: e->key_code = JK_F2; break;
00156 case XK_F3: e->key_code = JK_F3; break;
00157 case XK_F4: e->key_code = JK_F4; break;
00158 case XK_F5: e->key_code = JK_F5; break;
00159 case XK_F6: e->key_code = JK_F6; break;
00160 case XK_F7: e->key_code = JK_F7; break;
00161 case XK_F8: e->key_code = JK_F8; break;
00162 case XK_F9: e->key_code = JK_F9; break;
00163 case XK_F10: e->key_code = JK_F10; break;
00164 case XK_F11: e->key_code = JK_F11; break;
00165 case XK_F12: e->key_code = JK_F12; break;
00166 case XK_Caps_Lock: e->key_code = JK_CAPS_LOCK; break;
00167 case XK_Shift_Lock: e->key_code = JK_SHIFT_LOCK; break;
00168 case XK_Meta_L: e->key_code = JK_META_L; break;
00169 case XK_Meta_R: e->key_code = JK_META_R; break;
00170 case XK_KP_Add: e->key_code = JK_KP_ADD; break;
00171 case XK_KP_Subtract: e->key_code = JK_KP_SUBTRACT; break;
00172 case XK_KP_Multiply: e->key_code = JK_KP_MULTIPLY; break;
00173 case XK_KP_Divide: e->key_code = JK_KP_DIVIDE; break;
00174 case XK_KP_0: e->key_code = JK_KP_0; break;
00175 case XK_KP_1: e->key_code = JK_KP_1; break;
00176 case XK_KP_2: e->key_code = JK_KP_2; break;
00177 case XK_KP_3: e->key_code = JK_KP_3; break;
00178 case XK_KP_4: e->key_code = JK_KP_4; break;
00179 case XK_KP_5: e->key_code = JK_KP_5; break;
00180 case XK_KP_6: e->key_code = JK_KP_6; break;
00181 case XK_KP_7: e->key_code = JK_KP_7; break;
00182 case XK_KP_8: e->key_code = JK_KP_8; break;
00183 case XK_KP_9: e->key_code = JK_KP_9; break;
00184 case XK_KP_Up: e->key_code = JK_KP_UP; break;
00185 case XK_KP_Left: e->key_code = JK_KP_LEFT; break;
00186 case XK_KP_Right: e->key_code = JK_KP_RIGHT; break;
00187 case XK_KP_Down: e->key_code = JK_KP_DOWN; break;
00188 case XK_KP_Enter: e->key_code = JK_KP_ENTER; break;
00189 case XK_KP_F1: e->key_code = JK_KP_F1; break;
00190 case XK_KP_F2: e->key_code = JK_KP_F2; break;
00191 case XK_KP_F3: e->key_code = JK_KP_F3; break;
00192 case XK_KP_F4: e->key_code = JK_KP_F4; break;
00193 case XK_KP_Insert: e->key_code = JK_KP_INSERT; break;
00194 case XK_KP_Delete: e->key_code = JK_KP_DELETE; break;
00195 case XK_KP_Home: e->key_code = JK_KP_HOME; break;
00196 case XK_KP_End: e->key_code = JK_KP_END; break;
00197 case XK_KP_Page_Up: e->key_code = JK_KP_PAGE_UP; break;
00198 case XK_KP_Page_Down: e->key_code = JK_KP_PAGE_DOWN; break;
00199 case XK_KP_Separator: e->key_code = JK_KP_COMMA; break;
00200 case XK_KP_Decimal: e->key_code = JK_KP_PUNTO; break;
00201 case XK_0: e->key_code = JK_0; break;
00202 case XK_1: e->key_code = JK_1; break;
00203 case XK_2: e->key_code = JK_2; break;
00204 case XK_3: e->key_code = JK_3; break;
00205 case XK_4: e->key_code = JK_4; break;
00206 case XK_5: e->key_code = JK_5; break;
00207 case XK_6: e->key_code = JK_6; break;
00208 case XK_7: e->key_code = JK_7; break;
00209 case XK_8: e->key_code = JK_8; break;
00210 case XK_9: e->key_code = JK_9; break;
00211 case XK_A: e->key_code = JK_A; break;
00212 case XK_B: e->key_code = JK_B; break;
00213 case XK_C: e->key_code = JK_C; break;
00214 case XK_D: e->key_code = JK_D; break;
00215 case XK_E: e->key_code = JK_E; break;
00216 case XK_F: e->key_code = JK_F; break;
00217 case XK_G: e->key_code = JK_G; break;
00218 case XK_H: e->key_code = JK_H; break;
00219 case XK_I: e->key_code = JK_I; break;
00220 case XK_J: e->key_code = JK_J; break;
00221 case XK_K: e->key_code = JK_K; break;
00222 case XK_L: e->key_code = JK_L; break;
00223 case XK_M: e->key_code = JK_M; break;
00224 case XK_N: e->key_code = JK_N; break;
00225 case XK_O: e->key_code = JK_O; break;
00226 case XK_P: e->key_code = JK_P; break;
00227 case XK_Q: e->key_code = JK_Q; break;
00228 case XK_R: e->key_code = JK_R; break;
00229 case XK_S: e->key_code = JK_S; break;
00230 case XK_T: e->key_code = JK_T; break;
00231 case XK_U: e->key_code = JK_U; break;
00232 case XK_V: e->key_code = JK_V; break;
00233 case XK_W: e->key_code = JK_W; break;
00234 case XK_X: e->key_code = JK_X; break;
00235 case XK_Y: e->key_code = JK_Y; break;
00236 case XK_Z: e->key_code = JK_Z; break;
00237 case XK_a: e->key_code = JK_a; break;
00238 case XK_b: e->key_code = JK_b; break;
00239 case XK_c: e->key_code = JK_c; break;
00240 case XK_d: e->key_code = JK_d; break;
00241 case XK_e: e->key_code = JK_e; break;
00242 case XK_f: e->key_code = JK_f; break;
00243 case XK_g: e->key_code = JK_g; break;
00244 case XK_h: e->key_code = JK_h; break;
00245 case XK_i: e->key_code = JK_i; break;
00246 case XK_j: e->key_code = JK_j; break;
00247 case XK_k: e->key_code = JK_k; break;
00248 case XK_l: e->key_code = JK_l; break;
00249 case XK_m: e->key_code = JK_m; break;
00250 case XK_n: e->key_code = JK_n; break;
00251 case XK_o: e->key_code = JK_o; break;
00252 case XK_p: e->key_code = JK_p; break;
00253 case XK_q: e->key_code = JK_q; break;
00254 case XK_r: e->key_code = JK_r; break;
00255 case XK_s: e->key_code = JK_s; break;
00256 case XK_t: e->key_code = JK_t; break;
00257 case XK_u: e->key_code = JK_u; break;
00258 case XK_v: e->key_code = JK_v; break;
00259 case XK_w: e->key_code = JK_w; break;
00260 case XK_x: e->key_code = JK_x; break;
00261 case XK_y: e->key_code = JK_y; break;
00262 case XK_z: e->key_code = JK_z; break;
00263 case XK_exclam: e->key_code = JK_EXCLAM; break;
00264 case XK_quotedbl: e->key_code = JK_QUOTEDBL; break;
00265 case XK_numbersign: e->key_code = JK_NUMBERSIGN; break;
00266 case XK_dollar: e->key_code = JK_DOLLAR; break;
00267 case XK_percent: e->key_code = JK_PERCENT; break;
00268 case XK_ampersand: e->key_code = JK_AMPERSAND; break;
00269 case XK_apostrophe: e->key_code = JK_APOSTROPHE; break;
00270
00271 case XK_parenleft: e->key_code = JK_PARENLEFT; break;
00272 case XK_parenright: e->key_code = JK_PARENRIGHT; break;
00273 case XK_asterisk: e->key_code = JK_ASTERISK; break;
00274 case XK_plus: e->key_code = JK_PLUS; break;
00275 case XK_comma: e->key_code = JK_COMMA; break;
00276 case XK_minus: e->key_code = JK_MINUS; break;
00277 case XK_period: e->key_code = JK_PERIOD; break;
00278 case XK_slash: e->key_code = JK_SLASH; break;
00279 case XK_colon: e->key_code = JK_COLON; break;
00280 case XK_semicolon: e->key_code = JK_SEMICOLON; break;
00281 case XK_less: e->key_code = JK_LESS; break;
00282 case XK_equal: e->key_code = JK_EQUAL; break;
00283 case XK_greater: e->key_code = JK_GREATER; break;
00284 case XK_question: e->key_code = JK_QUESTION; break;
00285 case XK_at: e->key_code = JK_AT; break;
00286 case XK_bracketleft: e->key_code = JK_BRACKETLEFT; break;
00287 case XK_backslash: e->key_code = JK_BACKSLASH; break;
00288 case XK_bracketright: e->key_code = JK_BRACKETRIGHT; break;
00289 case XK_asciicircum: e->key_code = JK_ASCIICIRCUM; break;
00290 case XK_underscore: e->key_code = JK_UNDERSCORE; break;
00291 case XK_grave: e->key_code = JK_GRAVE; break;
00292
00293 case XK_braceleft: e->key_code = JK_BRACELEFT; break;
00294 case XK_bar: e->key_code = JK_BAR; break;
00295 case XK_braceright: e->key_code = JK_BRACERIGHT; break;
00296 case XK_asciitilde: e->key_code = JK_ASCIITILDE; break;
00297 case XK_Scroll_Lock: e->key_code = JK_SCROLL_LOCK; break;
00298 case XK_Sys_Req: e->key_code = JK_SYS_REQ; break;
00299 case XK_Multi_key: e->key_code = JK_MULTI_KEY; break;
00300 case XK_Select: e->key_code = JK_SELECT; break;
00301 case XK_Print: e->key_code = JK_PRINT; break;
00302 case XK_Execute: e->key_code = JK_EXECUTE; break;
00303 case XK_Undo: e->key_code = JK_UNDO; break;
00304 case XK_Redo: e->key_code = JK_REDO; break;
00305 case XK_Menu: e->key_code = JK_MENU; break;
00306 case XK_Find: e->key_code = JK_FIND; break;
00307 case XK_Cancel: e->key_code = JK_CANCEL; break;
00308 case XK_Help: e->key_code = JK_HELP; break;
00309 case XK_Break: e->key_code = JK_BREAK; break;
00310 case XK_Mode_switch: e->key_code = JK_MODE_SWITCH; break;
00311
00312 case XK_Num_Lock: e->key_code = JK_NUM_LOCK; break;
00313 default: e->key_code = JK_VOID; break;
00314 }
00315
00316 e->key_mask = mascara;
00317
00318
00319
00320 }
00321 #endif
00322
00323 #ifdef TK_ENABLED
00324 void
00325 TKkeycode2JEDkeycode( EVENTO_GUI *e, int code )
00330 {
00331 switch ( code ) {
00332 case TK_RETURN: e->key_code = JK_ENTER; break;
00333 case TK_ESCAPE: e->key_code = JK_ESC; break;
00334 case TK_SPACE: e->key_code = JK_SPACE; break;
00335 case TK_LEFT: e->key_code = JK_LEFT; break;
00336 case TK_UP: e->key_code = JK_UP; break;
00337 case TK_RIGHT: e->key_code = JK_RIGHT; break;
00338 case TK_DOWN: e->key_code = JK_DOWN; break;
00339 case TK_A: e->key_code = JK_A; break;
00340 case TK_B: e->key_code = JK_B; break;
00341 case TK_C: e->key_code = JK_C; break;
00342 case TK_D: e->key_code = JK_D; break;
00343 case TK_E: e->key_code = JK_E; break;
00344 case TK_F: e->key_code = JK_F; break;
00345 case TK_G: e->key_code = JK_G; break;
00346 case TK_H: e->key_code = JK_H; break;
00347 case TK_I: e->key_code = JK_I; break;
00348 case TK_J: e->key_code = JK_J; break;
00349 case TK_K: e->key_code = JK_K; break;
00350 case TK_L: e->key_code = JK_L; break;
00351 case TK_M: e->key_code = JK_M; break;
00352 case TK_N: e->key_code = JK_N; break;
00353 case TK_O: e->key_code = JK_O; break;
00354 case TK_P: e->key_code = JK_P; break;
00355 case TK_Q: e->key_code = JK_Q; break;
00356 case TK_R: e->key_code = JK_R; break;
00357 case TK_S: e->key_code = JK_S; break;
00358 case TK_T: e->key_code = JK_T; break;
00359 case TK_U: e->key_code = JK_U; break;
00360 case TK_V: e->key_code = JK_V; break;
00361 case TK_W: e->key_code = JK_W; break;
00362 case TK_X: e->key_code = JK_X; break;
00363 case TK_Y: e->key_code = JK_Y; break;
00364 case TK_Z: e->key_code = JK_Z; break;
00365 case TK_a: e->key_code = JK_a; break;
00366 case TK_b: e->key_code = JK_b; break;
00367 case TK_c: e->key_code = JK_c; break;
00368 case TK_d: e->key_code = JK_d; break;
00369 case TK_e: e->key_code = JK_e; break;
00370 case TK_f: e->key_code = JK_f; break;
00371 case TK_g: e->key_code = JK_g; break;
00372 case TK_h: e->key_code = JK_h; break;
00373 case TK_i: e->key_code = JK_i; break;
00374 case TK_j: e->key_code = JK_j; break;
00375 case TK_k: e->key_code = JK_k; break;
00376 case TK_l: e->key_code = JK_l; break;
00377 case TK_m: e->key_code = JK_m; break;
00378 case TK_n: e->key_code = JK_n; break;
00379 case TK_o: e->key_code = JK_o; break;
00380 case TK_p: e->key_code = JK_p; break;
00381 case TK_q: e->key_code = JK_q; break;
00382 case TK_r: e->key_code = JK_r; break;
00383 case TK_s: e->key_code = JK_s; break;
00384 case TK_t: e->key_code = JK_t; break;
00385 case TK_u: e->key_code = JK_u; break;
00386 case TK_v: e->key_code = JK_v; break;
00387 case TK_w: e->key_code = JK_w; break;
00388 case TK_x: e->key_code = JK_x; break;
00389 case TK_y: e->key_code = JK_y; break;
00390 case TK_z: e->key_code = JK_z; break;
00391 case TK_0: e->key_code = JK_0; break;
00392 case TK_1: e->key_code = JK_1; break;
00393 case TK_2: e->key_code = JK_2; break;
00394 case TK_3: e->key_code = JK_3; break;
00395 case TK_4: e->key_code = JK_4; break;
00396 case TK_5: e->key_code = JK_5; break;
00397 case TK_6: e->key_code = JK_6; break;
00398 case TK_7: e->key_code = JK_7; break;
00399 case TK_8: e->key_code = JK_8; break;
00400 case TK_9: e->key_code = JK_9; break;
00401 default: e->key_code = JK_VOID; break;
00402 }
00403 }
00404
00405 GLenum
00406 tk_keyboard_callback(int tecla, GLenum mask)
00425 {
00426 EVNT_EVENTO_GUI->tipo_de_evento = ETYPE_KEY_DOWN;
00427 TKkeycode2JEDkeycode(EVNT_EVENTO_GUI, tecla);
00428 EVNT_EVENTO_GUI->key_mask = 0x00;
00429
00430
00431 if ( mask & TK_SHIFT ) EVNT_EVENTO_GUI->key_mask += EKEY_SHIFT;
00432 if ( mask & TK_CONTROL ) EVNT_EVENTO_GUI->key_mask += EKEY_CTRL;
00433
00434 if ( EVNT_keyboard_callback(EVNT_EVENTO_GUI) ) {
00435 return GL_TRUE;
00436 }
00437 return GL_FALSE;
00438 }
00439
00440
00441
00442
00443
00444 #define MANEJO_DE_MOUSE_TK() \
00445 EVNT_EVENTO_GUI->mouse_button_mask = mask;\
00446 EVNT_EVENTO_GUI->mouse_old_x = EVNT_EVENTO_GUI->mouse_x;\
00447 EVNT_EVENTO_GUI->mouse_old_y = EVNT_EVENTO_GUI->mouse_y;\
00448 EVNT_EVENTO_GUI->mouse_x = x;\
00449 EVNT_EVENTO_GUI->mouse_y = y;\
00450 EVNT_EVENTO_GUI->mouse_delta_x=x-EVNT_EVENTO_GUI->mouse_old_x;\
00451 EVNT_EVENTO_GUI->mouse_delta_y=y-EVNT_EVENTO_GUI->mouse_old_y;\
00452 if ( EVNT_mouse_callback(EVNT_EVENTO_GUI) ) {\
00453 return GL_TRUE;\
00454 }\
00455 return GL_FALSE;
00456
00457
00458 GLenum
00459 tk_mousedown_callback(int x, int y, GLenum mask)
00460 {
00461 EVNT_EVENTO_GUI->tipo_de_evento = ETYPE_BUTTON_DOWN;
00462 MANEJO_DE_MOUSE_TK();
00463 }
00464
00465 GLenum
00466 tk_mouseup_callback(int x, int y, GLenum mask)
00467 {
00468 EVNT_EVENTO_GUI->tipo_de_evento = ETYPE_BUTTON_UP;
00469 MANEJO_DE_MOUSE_TK();
00470 }
00471
00472 GLenum
00473 tk_mousemove_callback(int x, int y, GLenum mask)
00474 {
00475 EVNT_EVENTO_GUI->tipo_de_evento = ETYPE_MOUSE_MOVE;
00476 MANEJO_DE_MOUSE_TK();
00477 }
00478
00479 void
00480 tk_draw_callback(void)
00491 {
00492 EVNT_draw_callback();
00493
00494
00495
00496 if ( BUFFER_doble ) {
00497 tkSwapBuffers();
00498 }
00499 }
00500
00501 #endif // TK_ENABLED
00502
00503 #ifdef GLUT_ENABLED
00504 void
00505 GLUTkeycode2JEDkeycode( EVENTO_GUI *e, int code )
00510 {
00511 switch ( code ) {
00512 case 13: e->key_code = JK_ENTER; break;
00513 case 27: e->key_code = JK_ESC; break;
00514 case ' ': e->key_code = JK_SPACE; break;
00515 case 'A': e->key_code = JK_A; break;
00516 case 'B': e->key_code = JK_B; break;
00517 case 'C': e->key_code = JK_C; break;
00518 case 'D': e->key_code = JK_D; break;
00519 case 'E': e->key_code = JK_E; break;
00520 case 'F': e->key_code = JK_F; break;
00521 case 'G': e->key_code = JK_G; break;
00522 case 'H': e->key_code = JK_H; break;
00523 case 'I': e->key_code = JK_I; break;
00524 case 'J': e->key_code = JK_J; break;
00525 case 'K': e->key_code = JK_K; break;
00526 case 'L': e->key_code = JK_L; break;
00527 case 'M': e->key_code = JK_M; break;
00528 case 'N': e->key_code = JK_N; break;
00529 case 'O': e->key_code = JK_O; break;
00530 case 'P': e->key_code = JK_P; break;
00531 case 'Q': e->key_code = JK_Q; break;
00532 case 'R': e->key_code = JK_R; break;
00533 case 'S': e->key_code = JK_S; break;
00534 case 'T': e->key_code = JK_T; break;
00535 case 'U': e->key_code = JK_U; break;
00536 case 'V': e->key_code = JK_V; break;
00537 case 'W': e->key_code = JK_W; break;
00538 case 'X': e->key_code = JK_X; break;
00539 case 'Y': e->key_code = JK_Y; break;
00540 case 'Z': e->key_code = JK_Z; break;
00541 case 'a': e->key_code = JK_a; break;
00542 case 'b': e->key_code = JK_b; break;
00543 case 'c': e->key_code = JK_c; break;
00544 case 'd': e->key_code = JK_d; break;
00545 case 'e': e->key_code = JK_e; break;
00546 case 'f': e->key_code = JK_f; break;
00547 case 'g': e->key_code = JK_g; break;
00548 case 'h': e->key_code = JK_h; break;
00549 case 'i': e->key_code = JK_i; break;
00550 case 'j': e->key_code = JK_j; break;
00551 case 'k': e->key_code = JK_k; break;
00552 case 'l': e->key_code = JK_l; break;
00553 case 'm': e->key_code = JK_m; break;
00554 case 'n': e->key_code = JK_n; break;
00555 case 'o': e->key_code = JK_o; break;
00556 case 'p': e->key_code = JK_p; break;
00557 case 'q': e->key_code = JK_q; break;
00558 case 'r': e->key_code = JK_r; break;
00559 case 's': e->key_code = JK_s; break;
00560 case 't': e->key_code = JK_t; break;
00561 case 'u': e->key_code = JK_u; break;
00562 case 'v': e->key_code = JK_v; break;
00563 case 'w': e->key_code = JK_w; break;
00564 case 'x': e->key_code = JK_x; break;
00565 case 'y': e->key_code = JK_y; break;
00566 case 'z': e->key_code = JK_z; break;
00567 case '0': e->key_code = JK_0; break;
00568 case '1': e->key_code = JK_1; break;
00569 case '2': e->key_code = JK_2; break;
00570 case '3': e->key_code = JK_3; break;
00571 case '4': e->key_code = JK_4; break;
00572 case '5': e->key_code = JK_5; break;
00573 case '6': e->key_code = JK_6; break;
00574 case '7': e->key_code = JK_7; break;
00575 case '8': e->key_code = JK_8; break;
00576 case '9': e->key_code = JK_9; break;
00577 default: e->key_code = JK_VOID; break;
00578 }
00579 }
00580
00581 void
00582 GLUTkeycode2JEDkeycodeB( EVENTO_GUI *e, int code )
00587 {
00588 switch ( code ) {
00589 case 13: e->key_code = JK_ENTER; break;
00590 case 27: e->key_code = JK_ESC; break;
00591 case ' ': e->key_code = JK_SPACE; break;
00592 case GLUT_KEY_LEFT: e->key_code = JK_LEFT; break;
00593 case GLUT_KEY_UP: e->key_code = JK_UP; break;
00594 case GLUT_KEY_RIGHT: e->key_code = JK_RIGHT; break;
00595 case GLUT_KEY_DOWN: e->key_code = JK_DOWN; break;
00596
00597 #if (GLUT_API_VERSION >= 2)
00598 case GLUT_KEY_F1: e->key_code = JK_F1; break;
00599 case GLUT_KEY_F2: e->key_code = JK_F2; break;
00600 case GLUT_KEY_F3: e->key_code = JK_F3; break;
00601 case GLUT_KEY_F4: e->key_code = JK_F4; break;
00602 case GLUT_KEY_F5: e->key_code = JK_F5; break;
00603 case GLUT_KEY_F6: e->key_code = JK_F6; break;
00604 case GLUT_KEY_F7: e->key_code = JK_F7; break;
00605 case GLUT_KEY_F8: e->key_code = JK_F8; break;
00606 case GLUT_KEY_F9: e->key_code = JK_F9; break;
00607 case GLUT_KEY_F10: e->key_code = JK_F10; break;
00608 case GLUT_KEY_F11: e->key_code = JK_F11; break;
00609 case GLUT_KEY_F12: e->key_code = JK_F12; break;
00610 case GLUT_KEY_PAGE_UP: e->key_code = JK_PAGE_UP; break;
00611 case GLUT_KEY_PAGE_DOWN: e->key_code = JK_PAGE_DOWN; break;
00612 case GLUT_KEY_HOME: e->key_code = JK_HOME; break;
00613 case GLUT_KEY_END: e->key_code = JK_END; break;
00614 case GLUT_KEY_INSERT: e->key_code = JK_INSERT; break;
00615 #endif
00616
00617 default: e->key_code = JK_VOID; break;
00618 }
00619 }
00620 #endif // GLUT_ENABLED
00621
00622 #ifdef WXWINDOWS_ENABLED
00623 void
00624 WXWkeycode2JEDkeycode( EVENTO_GUI *e, int code )
00625 {
00626 e->tipo_de_evento = ETYPE_KEY_DOWN;
00627 e->key_mask = 0x00;
00628 switch ( code ) {
00629
00630 case WXK_TAB: e->key_code = JK_TAB; break;
00631 case WXK_RETURN: e->key_code = JK_ENTER; break;
00632 case WXK_ESCAPE: e->key_code = JK_ESC; break;
00633 case WXK_SPACE: e->key_code = JK_SPACE; break;
00634
00635
00636
00637
00638 case WXK_CANCEL: e->key_code = JK_CANCEL; break;
00639
00640
00641
00642
00643
00644 case WXK_MENU: e->key_code = JK_MENU; break;
00645 case WXK_PAUSE: e->key_code = JK_PAUSE; break;
00646
00647
00648
00649 case WXK_END: e->key_code = JK_END; break;
00650 case WXK_HOME: e->key_code = JK_HOME; break;
00651 case WXK_LEFT: e->key_code = JK_LEFT; break;
00652 case WXK_UP: e->key_code = JK_UP; break;
00653 case WXK_RIGHT: e->key_code = JK_RIGHT; break;
00654 case WXK_DOWN: e->key_code = JK_DOWN; break;
00655 case WXK_SELECT: e->key_code = JK_SELECT; break;
00656 case WXK_PRINT: e->key_code = JK_PRINT; break;
00657 case WXK_EXECUTE: e->key_code = JK_EXECUTE; break;
00658
00659 case WXK_INSERT: e->key_code = JK_INSERT; break;
00660 case WXK_HELP: e->key_code = JK_HELP; break;
00661
00662
00663
00664
00665
00666
00667
00668
00669
00670
00671
00672
00673
00674
00675
00676
00677 case WXK_F1: e->key_code = JK_F1; break;
00678 case WXK_F2: e->key_code = JK_F2; break;
00679 case WXK_F3: e->key_code = JK_F3; break;
00680 case WXK_F4: e->key_code = JK_F4; break;
00681 case WXK_F5: e->key_code = JK_F5; break;
00682 case WXK_F6: e->key_code = JK_F6; break;
00683 case WXK_F7: e->key_code = JK_F7; break;
00684 case WXK_F8: e->key_code = JK_F8; break;
00685 case WXK_F9: e->key_code = JK_F9; break;
00686 case WXK_F10: e->key_code = JK_F10; break;
00687 case WXK_F11: e->key_code = JK_F11; break;
00688 case WXK_F12: e->key_code = JK_F12; break;
00689
00690
00691
00692
00693
00694
00695
00696
00697
00698
00699
00700
00701
00702
00703
00704
00705
00706
00707
00708
00709
00710
00711
00712
00713
00714
00715
00716
00717
00718
00719
00720
00721
00722
00723
00724
00725
00726
00727
00728
00729
00730
00731
00732 case 'a': e->key_code = JK_a; break;
00733 case 'b': e->key_code = JK_b; break;
00734 case 'c': e->key_code = JK_c; break;
00735 case 'd': e->key_code = JK_d; break;
00736 case 'e': e->key_code = JK_e; break;
00737 case 'f': e->key_code = JK_f; break;
00738 case 'g': e->key_code = JK_g; break;
00739 case 'h': e->key_code = JK_h; break;
00740 case 'i': e->key_code = JK_i; break;
00741 case 'j': e->key_code = JK_j; break;
00742 case 'k': e->key_code = JK_k; break;
00743 case 'l': e->key_code = JK_l; break;
00744 case 'm': e->key_code = JK_m; break;
00745 case 'n': e->key_code = JK_n; break;
00746 case 'o': e->key_code = JK_o; break;
00747 case 'p': e->key_code = JK_p; break;
00748 case 'q': e->key_code = JK_q; break;
00749 case 'r': e->key_code = JK_r; break;
00750 case 's': e->key_code = JK_s; break;
00751 case 't': e->key_code = JK_t; break;
00752 case 'u': e->key_code = JK_u; break;
00753 case 'v': e->key_code = JK_v; break;
00754 case 'w': e->key_code = JK_w; break;
00755 case 'x': e->key_code = JK_x; break;
00756 case 'y': e->key_code = JK_y; break;
00757 case 'z': e->key_code = JK_z; break;
00758 case '0': e->key_code = JK_0; break;
00759 case '1': e->key_code = JK_1; break;
00760 case '2': e->key_code = JK_2; break;
00761 case '3': e->key_code = JK_3; break;
00762 case '4': e->key_code = JK_4; break;
00763 case '5': e->key_code = JK_5; break;
00764 case '6': e->key_code = JK_6; break;
00765 case '7': e->key_code = JK_7; break;
00766 case '8': e->key_code = JK_8; break;
00767 case '9': e->key_code = JK_9; break;
00768 case 'A': e->key_code = JK_A; break;
00769 case 'B': e->key_code = JK_B; break;
00770 case 'C': e->key_code = JK_C; break;
00771 case 'D': e->key_code = JK_D; break;
00772 case 'E': e->key_code = JK_E; break;
00773 case 'F': e->key_code = JK_F; break;
00774 case 'G': e->key_code = JK_G; break;
00775 case 'H': e->key_code = JK_H; break;
00776 case 'I': e->key_code = JK_I; break;
00777 case 'J': e->key_code = JK_J; break;
00778 case 'K': e->key_code = JK_K; break;
00779 case 'L': e->key_code = JK_L; break;
00780 case 'M': e->key_code = JK_M; break;
00781 case 'N': e->key_code = JK_N; break;
00782 case 'O': e->key_code = JK_O; break;
00783 case 'P': e->key_code = JK_P; break;
00784 case 'Q': e->key_code = JK_Q; break;
00785 case 'R': e->key_code = JK_R; break;
00786 case 'S': e->key_code = JK_S; break;
00787 case 'T': e->key_code = JK_T; break;
00788 case 'U': e->key_code = JK_U; break;
00789 case 'V': e->key_code = JK_V; break;
00790 case 'W': e->key_code = JK_W; break;
00791 case 'X': e->key_code = JK_X; break;
00792 case 'Y': e->key_code = JK_Y; break;
00793 case 'Z': e->key_code = JK_Z; break;
00794 default: e->key_code = JK_VOID; break;
00795 }
00796 }
00797 #endif // WXWINDOWS_ENABLED
00798
00799 #if PLATAFORMA == PALM_PALMOS_CODEWARRIOR
00800 void
00801 Palm2JEDkeycode(EVENTO_GUI *e, EventPtr evento)
00816 {
00817 struct _KeyDownEventType *kd;
00818
00819 e->tipo_de_evento = ETYPE_KEY_DOWN;
00820 e->key_mask = 0x00;
00821 kd = (struct _KeyDownEventType*)(&(evento->data));
00822
00823
00824
00825
00826
00827
00828
00829
00830 switch ( kd->chr ) {
00831 case 13: e->key_code = JK_ENTER; break;
00832 case 27: e->key_code = JK_ESC; break;
00833 case ' ': e->key_code = JK_SPACE; break;
00834 case 'A': e->key_code = JK_A; break;
00835 case 'B': e->key_code = JK_B; break;
00836 case 'C': e->key_code = JK_C; break;
00837 case 'D': e->key_code = JK_D; break;
00838 case 'E': e->key_code = JK_E; break;
00839 case 'F': e->key_code = JK_F; break;
00840 case 'G': e->key_code = JK_G; break;
00841 case 'H': e->key_code = JK_H; break;
00842 case 'I': e->key_code = JK_I; break;
00843 case 'J': e->key_code = JK_J; break;
00844 case 'K': e->key_code = JK_K; break;
00845 case 'L': e->key_code = JK_L; break;
00846 case 'M': e->key_code = JK_M; break;
00847 case 'N': e->key_code = JK_N; break;
00848 case 'O': e->key_code = JK_O; break;
00849 case 'P': e->key_code = JK_P; break;
00850 case 'Q': e->key_code = JK_Q; break;
00851 case 'R': e->key_code = JK_R; break;
00852 case 'S': e->key_code = JK_S; break;
00853 case 'T': e->key_code = JK_T; break;
00854 case 'U': e->key_code = JK_U; break;
00855 case 'V': e->key_code = JK_V; break;
00856 case 'W': e->key_code = JK_W; break;
00857 case 'X': e->key_code = JK_X; break;
00858 case 'Y': e->key_code = JK_Y; break;
00859 case 'Z': e->key_code = JK_Z; break;
00860 case 'a': e->key_code = JK_a; break;
00861 case 'b': e->key_code = JK_b; break;
00862 case 'c': e->key_code = JK_c; break;
00863 case 'd': e->key_code = JK_d; break;
00864 case 'e': e->key_code = JK_e; break;
00865 case 'f': e->key_code = JK_f; break;
00866 case 'g': e->key_code = JK_g; break;
00867 case 'h': e->key_code = JK_h; break;
00868 case 'i': e->key_code = JK_i; break;
00869 case 'j': e->key_code = JK_j; break;
00870 case 'k': e->key_code = JK_k; break;
00871 case 'l': e->key_code = JK_l; break;
00872 case 'm': e->key_code = JK_m; break;
00873 case 'n': e->key_code = JK_n; break;
00874 case 'o': e->key_code = JK_o; break;
00875 case 'p': e->key_code = JK_p; break;
00876 case 'q': e->key_code = JK_q; break;
00877 case 'r': e->key_code = JK_r; break;
00878 case 's': e->key_code = JK_s; break;
00879 case 't': e->key_code = JK_t; break;
00880 case 'u': e->key_code = JK_u; break;
00881 case 'v': e->key_code = JK_v; break;
00882 case 'w': e->key_code = JK_w; break;
00883 case 'x': e->key_code = JK_x; break;
00884 case 'y': e->key_code = JK_y; break;
00885 case 'z': e->key_code = JK_z; break;
00886 case '0': e->key_code = JK_0; break;
00887 case '1': e->key_code = JK_1; break;
00888 case '2': e->key_code = JK_2; break;
00889 case '3': e->key_code = JK_3; break;
00890 case '4': e->key_code = JK_4; break;
00891 case '5': e->key_code = JK_5; break;
00892 case '6': e->key_code = JK_6; break;
00893 case '7': e->key_code = JK_7; break;
00894 case '8': e->key_code = JK_8; break;
00895 case '9': e->key_code = JK_9; break;
00896 default:
00897
00898 e->key_code = JK_X;
00899 break;
00900 }
00901
00902 e->key_code = kd->chr;
00903 }
00904 #endif // PLATAFORMA == PALM_PALMOS_CODEWARRIOR
00905
00906 #ifdef OWL_ENABLED
00907 void
00908 OWLkeycode2JEDkeycode( EVENTO_GUI *e, WORD code )
00909 {
00910 e->tipo_de_evento = ETYPE_KEY_DOWN;
00911 e->key_mask = 0x00;
00912 switch ( code ) {
00913 case VK_UP: e->key_code = JK_UP; break;
00914 case VK_DOWN: e->key_code = JK_DOWN; break;
00915 case VK_LEFT: e->key_code = JK_LEFT; break;
00916 case VK_RIGHT: e->key_code = JK_RIGHT; break;
00917 case VK_ESCAPE: e->key_code = JK_ESC; break;
00918 case VK_SPACE: e->key_code = JK_SPACE; break;
00919 case 'A': e->key_code = JK_A; break;
00920 case 'B': e->key_code = JK_B; break;
00921 case 'C': e->key_code = JK_C; break;
00922 case 'D': e->key_code = JK_D; break;
00923 case 'E': e->key_code = JK_E; break;
00924 case 'F': e->key_code = JK_F; break;
00925 case 'G': e->key_code = JK_G; break;
00926 case 'H': e->key_code = JK_H; break;
00927 case 'I': e->key_code = JK_I; break;
00928 case 'J': e->key_code = JK_J; break;
00929 case 'K': e->key_code = JK_K; break;
00930 case 'L': e->key_code = JK_L; break;
00931 case 'M': e->key_code = JK_M; break;
00932 case 'N': e->key_code = JK_N; break;
00933 case 'O': e->key_code = JK_O; break;
00934 case 'P': e->key_code = JK_P; break;
00935 case 'Q': e->key_code = JK_Q; break;
00936 case 'R': e->key_code = JK_R; break;
00937 case 'S': e->key_code = JK_S; break;
00938 case 'T': e->key_code = JK_T; break;
00939 case 'U': e->key_code = JK_U; break;
00940 case 'V': e->key_code = JK_V; break;
00941 case 'W': e->key_code = JK_W; break;
00942 case 'X': e->key_code = JK_X; break;
00943 case 'Y': e->key_code = JK_Y; break;
00944 case 'Z': e->key_code = JK_Z; break;
00945 case '0': e->key_code = JK_0; break;
00946 case '1': e->key_code = JK_1; break;
00947 case '2': e->key_code = JK_2; break;
00948 case '3': e->key_code = JK_3; break;
00949 case '4': e->key_code = JK_4; break;
00950 case '5': e->key_code = JK_5; break;
00951 case '6': e->key_code = JK_6; break;
00952 case '7': e->key_code = JK_7; break;
00953 case '8': e->key_code = JK_8; break;
00954 case '9': e->key_code = JK_9; break;
00955 case VK_F1: e->key_code = JK_F1; break;
00956 case VK_F2: e->key_code = JK_F2; break;
00957 case VK_F3: e->key_code = JK_F3; break;
00958 case VK_F4: e->key_code = JK_F4; break;
00959 case VK_F5: e->key_code = JK_F5; break;
00960 case VK_F6: e->key_code = JK_F6; break;
00961 case VK_F7: e->key_code = JK_F7; break;
00962 case VK_F8: e->key_code = JK_F8; break;
00963 case VK_F9: e->key_code = JK_F9; break;
00964 case VK_F10: e->key_code = JK_F10; break;
00965 case VK_F11: e->key_code = JK_F11; break;
00966 case VK_F12: e->key_code = JK_F12; break;
00967
00968
00969
00970
00971
00972
00973
00974
00975
00976
00977
00978
00979
00980
00981 #ifdef NONONO
00982 #define VK_LBUTTON 0x01
00983 #define VK_RBUTTON 0x02
00984 #define VK_CANCEL 0x03
00985 #define VK_MBUTTON 0x04
00986 #define VK_BACK 0x08
00987 #define VK_TAB 0x09
00988 #define VK_CLEAR 0x0C
00989 #define VK_RETURN 0x0D
00990 #define VK_SHIFT 0x10
00991 #define VK_CONTROL 0x11
00992 #define VK_MENU 0x12
00993 #define VK_PAUSE 0x13
00994 #define VK_CAPITAL 0x14
00995 #define VK_KANA 0x15
00996 #define VK_HANGEUL 0x15
00997 #define VK_HANGUL 0x15
00998 #define VK_JUNJA 0x17
00999 #define VK_FINAL 0x18
01000 #define VK_HANJA 0x19
01001 #define VK_KANJI 0x19
01002 #define VK_CONVERT 0x1C
01003 #define VK_NONCONVERT 0x1D
01004 #define VK_ACCEPT 0x1E
01005 #define VK_MODECHANGE 0x1F
01006 #define VK_PRIOR 0x21
01007 #define VK_NEXT 0x22
01008 #define VK_END 0x23
01009 #define VK_HOME 0x24
01010 #define VK_SELECT 0x29
01011 #define VK_PRINT 0x2A
01012 #define VK_EXECUTE 0x2B
01013 #define VK_SNAPSHOT 0x2C
01014 #define VK_INSERT 0x2D
01015 #define VK_DELETE 0x2E
01016 #define VK_HELP 0x2F
01017 #define VK_LWIN 0x5B
01018 #define VK_RWIN 0x5C
01019 #define VK_APPS 0x5D
01020 #define VK_NUMPAD0 0x60
01021 #define VK_NUMPAD1 0x61
01022 #define VK_NUMPAD2 0x62
01023 #define VK_NUMPAD3 0x63
01024 #define VK_NUMPAD4 0x64
01025 #define VK_NUMPAD5 0x65
01026 #define VK_NUMPAD6 0x66
01027 #define VK_NUMPAD7 0x67
01028 #define VK_NUMPAD8 0x68
01029 #define VK_NUMPAD9 0x69
01030 #define VK_MULTIPLY 0x6A
01031 #define VK_ADD 0x6B
01032 #define VK_SEPARATOR 0x6C
01033 #define VK_SUBTRACT 0x6D
01034 #define VK_DECIMAL 0x6E
01035 #define VK_DIVIDE 0x6F
01036 #define VK_NUMLOCK 0x90
01037 #define VK_SCROLL 0x91
01038
01039
01040
01041
01042
01043
01044 #define VK_LSHIFT 0xA0
01045 #define VK_RSHIFT 0xA1
01046 #define VK_LCONTROL 0xA2
01047 #define VK_RCONTROL 0xA3
01048 #define VK_LMENU 0xA4
01049 #define VK_RMENU 0xA5
01050 #endif
01051
01052 default: e->key_code = JK_VOID; break;
01053 }
01054 }
01055
01056 #endif // OWL_ENABLED
01057
01058
01059
01060
01061