static TCOD_key_t TCOD_sys_SFMLtoTCOD(sfEvent *ev, int flags) { static TCOD_key_t ret; ret.vk=TCODK_NONE; ret.c=0; ret.pressed=0; switch (ev->Type) { case sfEvtClosed : TCOD_console_set_window_closed(); break; case sfEvtKeyReleased : { TCOD_key_t tmpkey; switch(ev->Key.Code) { case sfKeyLAlt : ret.lalt=0; break; case sfKeyRAlt : ret.ralt=0; break; case sfKeyLControl : ret.lctrl=0; break; case sfKeyRControl : ret.rctrl=0; break; case sfKeyLShift : ret.shift=0; break; case sfKeyRShift : ret.shift=0; break; default : break; } TCOD_sys_convert_event(ev,&tmpkey); key_status[tmpkey.vk]=false; if ( flags & TCOD_KEY_RELEASED ) { ret.vk=tmpkey.vk; ret.c=tmpkey.c; ret.pressed=0; } } break; case sfEvtKeyPressed : { TCOD_key_t tmpkey; switch(ev->Key.Code) { case sfKeyLAlt : ret.lalt=1; break; case sfKeyRAlt : ret.ralt=1; break; case sfKeyLControl : ret.lctrl=1; break; case sfKeyRControl : ret.rctrl=1; break; case sfKeyLShift : ret.shift=1; break; case sfKeyRShift : ret.shift=1; break; default : break; } TCOD_sys_convert_event(ev,&tmpkey); key_status[tmpkey.vk]=true; if ( flags & TCOD_KEY_PRESSED ) { ret.vk=tmpkey.vk; ret.c=tmpkey.c; ret.pressed=1; } } break; case sfEvtTextEntered : { } break; default : break; } return ret; }
static TCOD_key_t TCOD_sys_SDLtoTCOD(SDL_Event *ev, int flags) { static TCOD_key_t ret; ret.vk=TCODK_NONE; ret.c=0; ret.pressed=0; switch (ev->type) { case SDL_QUIT : TCOD_console_set_window_closed(); break; case SDL_VIDEOEXPOSE : TCOD_sys_console_to_bitmap(screen,TCOD_console_get_width(NULL),TCOD_console_get_height(NULL),consoleBuffer,prevConsoleBuffer); break; case SDL_MOUSEBUTTONDOWN : { SDL_MouseButtonEvent *mev=&ev->button; switch (mev->button) { case 1 : mousebl=true; break; case 2 : mousebm=true; break; case 3 : mousebr=true; break; } } break; case SDL_MOUSEBUTTONUP : { SDL_MouseButtonEvent *mev=&ev->button; switch (mev->button) { case 1 : if (mousebl) mouse_force_bl=true; mousebl=false; break; case 2 : if (mousebm) mouse_force_bm=true; mousebm=false; break; case 3 : if (mousebr) mouse_force_br=true; mousebr=false; break; } } break; case SDL_KEYUP : { SDL_KeyboardEvent *kev=&ev->key; TCOD_key_t tmpkey; switch(kev->keysym.sym) { case SDLK_LALT : ret.lalt=0; break; case SDLK_RALT : ret.ralt=0; break; case SDLK_LCTRL : ret.lctrl=0; break; case SDLK_RCTRL : ret.rctrl=0; break; case SDLK_LSHIFT : ret.shift=0; break; case SDLK_RSHIFT : ret.shift=0; break; default:break; } TCOD_sys_convert_event(ev,&tmpkey); key_status[tmpkey.vk]=false; if ( flags & TCOD_KEY_RELEASED ) { ret.vk=tmpkey.vk; ret.c=tmpkey.c; ret.pressed=0; } } break; case SDL_KEYDOWN : { SDL_KeyboardEvent *kev=&ev->key; TCOD_key_t tmpkey; switch(kev->keysym.sym) { case SDLK_LALT : ret.lalt=1; break; case SDLK_RALT : ret.ralt=1; break; case SDLK_LCTRL : ret.lctrl=1; break; case SDLK_RCTRL : ret.rctrl=1; break; case SDLK_LSHIFT : ret.shift=1; break; case SDLK_RSHIFT : ret.shift=1; break; default : break; } TCOD_sys_convert_event(ev,&tmpkey); key_status[tmpkey.vk]=true; if ( flags & TCOD_KEY_PRESSED ) { ret.vk=tmpkey.vk; ret.c=tmpkey.c; ret.pressed=1; } } break; } return ret; }