Página principal | Jerarquía de la clase | Lista alfabética | Lista de componentes | Lista de archivos | Miembros de las clases | Archivos de los miembros | Páginas relacionadas

jed_evnt.C

Ir a la documentación de este archivo.
00001 //===========================================================================
00002 //= jed_evnt.cc                                               Junio de 1998 =
00003 //=-------------------------------------------------------------------------=
00004 //= Definicion del manejo de eventos de teclado y mouse independiente de    =
00005 //= plataforma.                                                             =
00006 //=-------------------------------------------------------------------------=
00007 //= ADVERTENCIA: ESTE SOFTWARE NO ESTA CONCEBIDO NI DISENNADO PARA EL USO   =
00008 //= EN EQUIPO DE CONTROL EN LINEA EN ENTORNOS PELIGROSOS QUE REQUIERAN UN   =
00009 //= DESEMPENNO LIBRE DE FALLAS, COMO LA OPERACION DE PLANTAS NUCLEARES,     = 
00010 //= SISTEMAS DE NAVEGACION O COMUNICACION EN AVIONES, TRAFICO AEREO,        =
00011 //= EQUIPO MEDICO DEL CUAL DEPENDAN VIDAS HUMANAS O SISTEMAS DE ARMAMENTO,  =
00012 //= EN LOS CUALES UNA FALLA EN EL SOFTWARE PUEDA IMPLICAR DIRECTAMENTE LA   =
00013 //= MUERTE, DANNOS PERSONALES O DANNOS FISICOS Y/O AMBIENTALES GRAVES       =
00014 //= ("ACTIVIDADES DE ALGO RIESGO").                                         =
00015 //=-------------------------------------------------------------------------=
00016 //= Autor original: Oscar J. Chavarro G.  A.K.A. JEDILINK. Copyright (c),   =
00017 //= 1997 - 2003, oscarchavarro@hotmail.com                                  =
00018 //= AQUYNZA es software libre, y se rige bajo los terminos de la licencia   =
00019 //= LGPL de GNU (http://www.gnu.org). Para mayor informacion respecto a la  =
00020 //= licencia de uso, consulte el archivo ./doc/LICENCIA en la distribucion. =
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 //= Clase EVENTO_GUI                                                        =
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 //= Funciones especificas de implementacion                                 =
00065 //===========================================================================
00066 
00067 #ifdef X_ENABLED
00068 
00069 //#include <stdio.h>
00070 void
00071 Xkeycode2JEDkeycode( EVENTO_GUI *e, unsigned int code)
00076 {
00077     static int mascara = 0x00;
00078 
00079   //printf("<KEYCODE X> : %u (%X),\t\t", code, code);  fflush(stdout);
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         //case XK_quoteright: e->key_code = JK_QUOTERIGHT; break;
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         //case XK_quoteleft: e->key_code = JK_QUOTELEFT; break;
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         //case XK_script_switch: e->key_code = JK_SCRIPT_SWITCH; break;
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     //printf("<JK:> : %u (%X).\n", e->key_code, e->key_code);  fflush(stdout);
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     // OJO: Estas dos son constantes?
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 // Las siguientes tres funciones tienen el mismo espiritu que la anterior,
00441 // pero esta ves para el manejo generico del mouse.  Notese que en TK la
00442 // mascara contiene un bit para cada boton del mouse (i.e. 2^0, 2^1, ... 2^n)
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     // OJO: Si la variable BUFFER_doble != 0, se esta utilizando una tecnica
00495     // de animacion que evita parpadeos.  Juegue con la opcion "-db".
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 //      case WXK_BACK: e->key_code = JK_BACK; break;
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 //      case WXK_DELETE: e->key_code = JK_DELETE; break;
00635 //      case WXK_START: e->key_code = JK_START; break;
00636 //      case WXK_LBUTTON: e->key_code = JK_LBUTTON; break;
00637 //      case WXK_RBUTTON: e->key_code = JK_RBUTTON; break;
00638       case WXK_CANCEL: e->key_code = JK_CANCEL; break;
00639 //      case WXK_MBUTTON: e->key_code = JK_MBUTTON; break;
00640 //      case WXK_CLEAR: e->key_code = JK_CLEAR; break;
00641 //      case WXK_SHIFT: e->key_code = JK_SHIFT; break;
00642 //      case WXK_ALT: e->key_code = JK_ALT; break;
00643 //      case WXK_CONTROL: e->key_code = JK_CONTROL; break;
00644       case WXK_MENU: e->key_code = JK_MENU; break;
00645       case WXK_PAUSE: e->key_code = JK_PAUSE; break;
00646 //      case WXK_CAPITAL: e->key_code = JK_CAPITAL; break;
00647 //      case WXK_PRIOR: e->key_code = JK_PRIOR; break;
00648 //      case WXK_NEXT: e->key_code = JK_NEXT; break;
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 //      case WXK_SNAPSHOT: e->key_code = JK_SNAPSHOT; break;
00659       case WXK_INSERT: e->key_code = JK_INSERT; break;
00660       case WXK_HELP: e->key_code = JK_HELP; break;
00661 //      case WXK_NUMPAD0: e->key_code = JK_NUMPAD0; break;
00662 //      case WXK_NUMPAD1: e->key_code = JK_NUMPAD1; break;
00663 //      case WXK_NUMPAD2: e->key_code = JK_NUMPAD2; break;
00664 //      case WXK_NUMPAD3: e->key_code = JK_NUMPAD3; break;
00665 //      case WXK_NUMPAD4: e->key_code = JK_NUMPAD4; break;
00666 //      case WXK_NUMPAD5: e->key_code = JK_NUMPAD5; break;
00667 //      case WXK_NUMPAD6: e->key_code = JK_NUMPAD6; break;
00668 //      case WXK_NUMPAD7: e->key_code = JK_NUMPAD7; break;
00669 //      case WXK_NUMPAD8: e->key_code = JK_NUMPAD8; break;
00670 //      case WXK_NUMPAD9: e->key_code = JK_NUMPAD9; break;
00671 //      case WXK_MULTIPLY: e->key_code = JK_MULTIPLY; break;
00672 //      case WXK_ADD: e->key_code = JK_ADD; break;
00673 //      case WXK_SEPARATOR: e->key_code = JK_SEPARATOR; break;
00674 //      case WXK_SUBTRACT: e->key_code = JK_SUBTRACT; break;
00675 //      case WXK_DECIMAL: e->key_code = JK_DECIMAL; break;
00676 //      case WXK_DIVIDE: e->key_code = JK_DIVIDE; break;
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 //      case WXK_F13: e->key_code = JK_F13; break;
00690 //      case WXK_F14: e->key_code = JK_F14; break;
00691 //      case WXK_F15: e->key_code = JK_F15; break;
00692 //      case WXK_F16: e->key_code = JK_F16; break;
00693 //      case WXK_F17: e->key_code = JK_F17; break;
00694 //      case WXK_F18: e->key_code = JK_F18; break;
00695 //      case WXK_F19: e->key_code = JK_F19; break;
00696 //      case WXK_F20: e->key_code = JK_F20; break;
00697 //      case WXK_F21: e->key_code = JK_F21; break;
00698 //      case WXK_F22: e->key_code = JK_F22; break;
00699 //      case WXK_F23: e->key_code = JK_F23; break;
00700 //      case WXK_F24: e->key_code = JK_F24; break;
00701 //      case WXK_NUMLOCK: e->key_code = JK_NUMLOCK; break;
00702 //      case WXK_SCROLL: e->key_code = JK_SCROLL; break;
00703 //      case WXK_PAGEUP: e->key_code = JK_PAGEUP; break;
00704 //      case WXK_PAGEDOWN: e->key_code = JK_PAGEDOWN; break;
00705 //      case WXK_NUMPAD_SPACE: e->key_code = JK_NUMPAD_SPACE; break;
00706 //      case WXK_NUMPAD_TAB: e->key_code = JK_NUMPAD_TAB; break;
00707 //      case WXK_NUMPAD_ENTER: e->key_code = JK_NUMPAD_ENTER; break;
00708 //      case WXK_NUMPAD_F1: e->key_code = JK_NUMPAD_F1; break;
00709 //      case WXK_NUMPAD_F2: e->key_code = JK_NUMPAD_F2; break;
00710 //      case WXK_NUMPAD_F3: e->key_code = JK_NUMPAD_F3; break;
00711 //      case WXK_NUMPAD_F4: e->key_code = JK_NUMPAD_F4; break;
00712 //      case WXK_NUMPAD_HOME: e->key_code = JK_NUMPAD_HOME; break;
00713 //      case WXK_NUMPAD_LEFT: e->key_code = JK_NUMPAD_LEFT; break;
00714 //      case WXK_NUMPAD_UP: e->key_code = JK_NUMPAD_UP; break;
00715 //      case WXK_NUMPAD_RIGHT: e->key_code = JK_NUMPAD_RIGHT; break;
00716 //      case WXK_NUMPAD_DOWN: e->key_code = JK_NUMPAD_DOWN; break;
00717 //      case WXK_NUMPAD_PRIOR: e->key_code = JK_NUMPAD_PRIOR; break;
00718 //      case WXK_NUMPAD_PAGEUP: e->key_code = JK_NUMPAD_PAGEUP; break;
00719 //      case WXK_NUMPAD_NEXT: e->key_code = JK_NUMPAD_NEXT; break;
00720 //      case WXK_NUMPAD_PAGEDOWN: e->key_code = JK_NUMPAD_PAGEDOWN; break;
00721 //      case WXK_NUMPAD_END: e->key_code = JK_NUMPAD_END; break;
00722 //      case WXK_NUMPAD_BEGIN: e->key_code = JK_NUMPAD_BEGIN; break;
00723 //      case WXK_NUMPAD_INSERT: e->key_code = JK_NUMPAD_INSERT; break;
00724 //      case WXK_NUMPAD_DELETE: e->key_code = JK_NUMPAD_DELETE; break;
00725 //      case WXK_NUMPAD_EQUAL: e->key_code = JK_NUMPAD_EQUAL; break;
00726 //      case WXK_NUMPAD_MULTIPLY: e->key_code = JK_NUMPAD_MULTIPLY; break;
00727 //      case WXK_NUMPAD_ADD: e->key_code = JK_NUMPAD_ADD; break;
00728 //      case WXK_NUMPAD_SEPARATOR: e->key_code = JK_NUMPAD_SEPARATOR; break;
00729 //      case WXK_NUMPAD_SUBTRACT: e->key_code = JK_NUMPAD_SUBTRACT; break;
00730 //      case WXK_NUMPAD_DECIMAL: e->key_code = JK_NUMPAD_DECIMAL; break;
00731 //      case WXK_NUMPAD_DIVIDE: e->key_code = JK_NUMPAD_DIVIDE; break;
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     if ( kd->chr == AS_VIRTUAL_KEY ) {
00824         // Pendiente: falta procesar las teclas que se reciban en este caso!
00825         e->key_code = JK_X;
00826         return;
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           //e->key_code = JK_VOID; 
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       case VK_F13: e->key_code = JK_F13; break;
00969       case VK_F14: e->key_code = JK_F14; break;
00970       case VK_F15: e->key_code = JK_F15; break;
00971       case VK_F16: e->key_code = JK_F16; break;
00972       case VK_F17: e->key_code = JK_F17; break;
00973       case VK_F18: e->key_code = JK_F18; break;
00974       case VK_F19: e->key_code = JK_F19; break;
00975       case VK_F20: e->key_code = JK_F20; break;
00976       case VK_F21: e->key_code = JK_F21; break;
00977       case VK_F22: e->key_code = JK_F22; break;
00978       case VK_F23: e->key_code = JK_F23; break;
00979       case VK_F24: e->key_code = JK_F24; break;
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  * VK_L* & VK_R* - left and right Alt, Ctrl and Shift virtual keys.
01041  * Used only as parameters to GetAsyncKeyState() and GetKeyState().
01042  * No other API or message will distinguish left and right keys in this way.
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 //= EOF                                                                     =
01060 //===========================================================================
01061 

Este archivo HTML ha sido generado automáticamente a partir del código fuente AQUYNZA. NO LO EDITE. Para mayor información contacte al autor.