# HG changeset patch # User Ryan C. Gordon # Date 1263147904 0 # Node ID 1e31a24c41a6e3173fa6f017c91a447e33796b35 # Parent 81dde1b00bf18ae47ec66067898b2e67a64999c6 Merged r4874:4875 from branches/SDL-1.2: testwm keyboard debug output. diff -r 81dde1b00bf1 -r 1e31a24c41a6 test/testwm.c --- a/test/testwm.c Sun Jan 10 18:19:35 2010 +0000 +++ b/test/testwm.c Sun Jan 10 18:25:04 2010 +0000 @@ -175,6 +175,74 @@ SDL_PushEvent(&event); } + +static void +print_modifiers(void) +{ + int mod; + printf(" modifiers:"); + mod = SDL_GetModState(); + if(!mod) { + printf(" (none)"); + return; + } + if(mod & KMOD_LSHIFT) + printf(" LSHIFT"); + if(mod & KMOD_RSHIFT) + printf(" RSHIFT"); + if(mod & KMOD_LCTRL) + printf(" LCTRL"); + if(mod & KMOD_RCTRL) + printf(" RCTRL"); + if(mod & KMOD_LALT) + printf(" LALT"); + if(mod & KMOD_RALT) + printf(" RALT"); + if(mod & KMOD_LMETA) + printf(" LMETA"); + if(mod & KMOD_RMETA) + printf(" RMETA"); + if(mod & KMOD_NUM) + printf(" NUM"); + if(mod & KMOD_CAPS) + printf(" CAPS"); + if(mod & KMOD_MODE) + printf(" MODE"); +} + +static void PrintKey(const SDL_keysym *sym, int pressed) +{ + /* Print the keycode, name and state */ + if ( sym->sym ) { + printf("Key %s: %d-%s ", pressed ? "pressed" : "released", + sym->sym, SDL_GetKeyName(sym->sym)); + } else { + printf("Unknown Key (scancode = %d) %s ", sym->scancode, + pressed ? "pressed" : "released"); + } + + /* Print the translated character, if one exists */ + if ( sym->unicode ) { + /* Is it a control-character? */ + if ( sym->unicode < ' ' ) { + printf(" (^%c)", sym->unicode+'@'); + } else { +#ifdef UNICODE + printf(" (%c)", sym->unicode); +#else + /* This is a Latin-1 program, so only show 8-bits */ + if ( !(sym->unicode & 0xFF00) ) + printf(" (%c)", sym->unicode); + else + printf(" (0x%X)", sym->unicode); +#endif + } + } + print_modifiers(); + printf("\n"); +} + + static int (SDLCALL * old_filterfunc) (void *, SDL_Event *); static void *old_filterdata; @@ -230,6 +298,7 @@ return (0); case SDL_KEYDOWN: + PrintKey(&event->key.keysym, 1); if (event->key.keysym.sym == SDLK_ESCAPE) { HotKey_Quit(); } @@ -247,6 +316,10 @@ } return (0); + case SDL_KEYUP: + PrintKey(&event->key.keysym, 0); + return(0); + /* Pass the video resize event through .. */ case SDL_VIDEORESIZE: return (1); @@ -355,9 +428,6 @@ SDL_GetEventFilter(&old_filterfunc, &old_filterdata); SDL_SetEventFilter(FilterEvents, NULL); - /* Ignore key up events, they don't even get filtered */ - SDL_EventState(SDL_KEYUP, SDL_IGNORE); - /* Loop, waiting for QUIT */ while (SDL_WaitEvent(&event)) { switch (event.type) {