comparison test/testwm.c @ 4257:14195cfdb66e SDL-1.2

Added keyboard output for debugging bug #659
author Sam Lantinga <slouken@libsdl.org>
date Mon, 28 Sep 2009 07:04:25 +0000
parents 67fc81efcfc3
children
comparison
equal deleted inserted replaced
4256:ba587a51f899 4257:14195cfdb66e
166 printf("Posting internal quit request\n"); 166 printf("Posting internal quit request\n");
167 event.type = SDL_USEREVENT; 167 event.type = SDL_USEREVENT;
168 SDL_PushEvent(&event); 168 SDL_PushEvent(&event);
169 } 169 }
170 170
171 static void print_modifiers(void)
172 {
173 int mod;
174 printf(" modifiers:");
175 mod = SDL_GetModState();
176 if(!mod) {
177 printf(" (none)");
178 return;
179 }
180 if(mod & KMOD_LSHIFT)
181 printf(" LSHIFT");
182 if(mod & KMOD_RSHIFT)
183 printf(" RSHIFT");
184 if(mod & KMOD_LCTRL)
185 printf(" LCTRL");
186 if(mod & KMOD_RCTRL)
187 printf(" RCTRL");
188 if(mod & KMOD_LALT)
189 printf(" LALT");
190 if(mod & KMOD_RALT)
191 printf(" RALT");
192 if(mod & KMOD_LMETA)
193 printf(" LMETA");
194 if(mod & KMOD_RMETA)
195 printf(" RMETA");
196 if(mod & KMOD_NUM)
197 printf(" NUM");
198 if(mod & KMOD_CAPS)
199 printf(" CAPS");
200 if(mod & KMOD_MODE)
201 printf(" MODE");
202 }
203
204 static void PrintKey(const SDL_keysym *sym, int pressed)
205 {
206 /* Print the keycode, name and state */
207 if ( sym->sym ) {
208 printf("Key %s: %d-%s ", pressed ? "pressed" : "released",
209 sym->sym, SDL_GetKeyName(sym->sym));
210 } else {
211 printf("Unknown Key (scancode = %d) %s ", sym->scancode,
212 pressed ? "pressed" : "released");
213 }
214
215 /* Print the translated character, if one exists */
216 if ( sym->unicode ) {
217 /* Is it a control-character? */
218 if ( sym->unicode < ' ' ) {
219 printf(" (^%c)", sym->unicode+'@');
220 } else {
221 #ifdef UNICODE
222 printf(" (%c)", sym->unicode);
223 #else
224 /* This is a Latin-1 program, so only show 8-bits */
225 if ( !(sym->unicode & 0xFF00) )
226 printf(" (%c)", sym->unicode);
227 else
228 printf(" (0x%X)", sym->unicode);
229 #endif
230 }
231 }
232 print_modifiers();
233 printf("\n");
234 }
235
171 int SDLCALL FilterEvents(const SDL_Event *event) 236 int SDLCALL FilterEvents(const SDL_Event *event)
172 { 237 {
173 static int reallyquit = 0; 238 static int reallyquit = 0;
174 239
175 switch (event->type) { 240 switch (event->type) {
215 event->motion.xrel, event->motion.yrel); 280 event->motion.xrel, event->motion.yrel);
216 #endif 281 #endif
217 return(0); 282 return(0);
218 283
219 case SDL_KEYDOWN: 284 case SDL_KEYDOWN:
285 PrintKey(&event->key.keysym, 1);
220 if ( event->key.keysym.sym == SDLK_ESCAPE ) { 286 if ( event->key.keysym.sym == SDLK_ESCAPE ) {
221 HotKey_Quit(); 287 HotKey_Quit();
222 } 288 }
223 if ( (event->key.keysym.sym == SDLK_g) && 289 if ( (event->key.keysym.sym == SDLK_g) &&
224 (event->key.keysym.mod & KMOD_CTRL) ) { 290 (event->key.keysym.mod & KMOD_CTRL) ) {
230 } 296 }
231 if ( (event->key.keysym.sym == SDLK_RETURN) && 297 if ( (event->key.keysym.sym == SDLK_RETURN) &&
232 (event->key.keysym.mod & KMOD_ALT) ) { 298 (event->key.keysym.mod & KMOD_ALT) ) {
233 HotKey_ToggleFullScreen(); 299 HotKey_ToggleFullScreen();
234 } 300 }
301 return(0);
302
303 case SDL_KEYUP:
304 PrintKey(&event->key.keysym, 0);
235 return(0); 305 return(0);
236 306
237 /* Pass the video resize event through .. */ 307 /* Pass the video resize event through .. */
238 case SDL_VIDEORESIZE: 308 case SDL_VIDEORESIZE:
239 return(1); 309 return(1);
344 } 414 }
345 415
346 /* Set an event filter that discards everything but QUIT */ 416 /* Set an event filter that discards everything but QUIT */
347 SDL_SetEventFilter(FilterEvents); 417 SDL_SetEventFilter(FilterEvents);
348 418
349 /* Ignore key up events, they don't even get filtered */
350 SDL_EventState(SDL_KEYUP, SDL_IGNORE);
351
352 /* Loop, waiting for QUIT */ 419 /* Loop, waiting for QUIT */
353 while ( SDL_WaitEvent(&event) ) { 420 while ( SDL_WaitEvent(&event) ) {
354 switch (event.type) { 421 switch (event.type) {
355 case SDL_VIDEORESIZE: 422 case SDL_VIDEORESIZE:
356 printf("Got a resize event: %dx%d\n", 423 printf("Got a resize event: %dx%d\n",