test/testwm.c
changeset 3634 1e31a24c41a6
parent 3545 6d91cff0ec79
child 4942 c127755eebee
equal deleted inserted replaced
3633:81dde1b00bf1 3634:1e31a24c41a6
   173     printf("Posting internal quit request\n");
   173     printf("Posting internal quit request\n");
   174     event.type = SDL_USEREVENT;
   174     event.type = SDL_USEREVENT;
   175     SDL_PushEvent(&event);
   175     SDL_PushEvent(&event);
   176 }
   176 }
   177 
   177 
       
   178 
       
   179 static void
       
   180 print_modifiers(void)
       
   181 {
       
   182     int mod;
       
   183     printf(" modifiers:");
       
   184     mod = SDL_GetModState();
       
   185     if(!mod) {
       
   186         printf(" (none)");
       
   187         return;
       
   188     }
       
   189     if(mod & KMOD_LSHIFT)
       
   190         printf(" LSHIFT");
       
   191     if(mod & KMOD_RSHIFT)
       
   192         printf(" RSHIFT");
       
   193     if(mod & KMOD_LCTRL)
       
   194         printf(" LCTRL");
       
   195     if(mod & KMOD_RCTRL)
       
   196         printf(" RCTRL");
       
   197     if(mod & KMOD_LALT)
       
   198         printf(" LALT");
       
   199     if(mod & KMOD_RALT)
       
   200         printf(" RALT");
       
   201     if(mod & KMOD_LMETA)
       
   202         printf(" LMETA");
       
   203     if(mod & KMOD_RMETA)
       
   204         printf(" RMETA");
       
   205     if(mod & KMOD_NUM)
       
   206         printf(" NUM");
       
   207     if(mod & KMOD_CAPS)
       
   208         printf(" CAPS");
       
   209     if(mod & KMOD_MODE)
       
   210         printf(" MODE");
       
   211 }
       
   212 
       
   213 static void PrintKey(const SDL_keysym *sym, int pressed)
       
   214 {
       
   215     /* Print the keycode, name and state */
       
   216     if ( sym->sym ) {
       
   217         printf("Key %s:  %d-%s ", pressed ?  "pressed" : "released",
       
   218                     sym->sym, SDL_GetKeyName(sym->sym));
       
   219     } else {
       
   220         printf("Unknown Key (scancode = %d) %s ", sym->scancode,
       
   221                     pressed ?  "pressed" : "released");
       
   222     }
       
   223 
       
   224     /* Print the translated character, if one exists */
       
   225     if ( sym->unicode ) {
       
   226         /* Is it a control-character? */
       
   227         if ( sym->unicode < ' ' ) {
       
   228             printf(" (^%c)", sym->unicode+'@');
       
   229         } else {
       
   230 #ifdef UNICODE
       
   231             printf(" (%c)", sym->unicode);
       
   232 #else
       
   233             /* This is a Latin-1 program, so only show 8-bits */
       
   234             if ( !(sym->unicode & 0xFF00) )
       
   235                 printf(" (%c)", sym->unicode);
       
   236             else
       
   237                 printf(" (0x%X)", sym->unicode);
       
   238 #endif
       
   239         }
       
   240     }
       
   241     print_modifiers();
       
   242     printf("\n");
       
   243 }
       
   244 
       
   245 
   178 static int (SDLCALL * old_filterfunc) (void *, SDL_Event *);
   246 static int (SDLCALL * old_filterfunc) (void *, SDL_Event *);
   179 static void *old_filterdata;
   247 static void *old_filterdata;
   180 
   248 
   181 int SDLCALL
   249 int SDLCALL
   182 FilterEvents(void *userdata, SDL_Event * event)
   250 FilterEvents(void *userdata, SDL_Event * event)
   228                event->motion.xrel, event->motion.yrel);
   296                event->motion.xrel, event->motion.yrel);
   229 #endif
   297 #endif
   230         return (0);
   298         return (0);
   231 
   299 
   232     case SDL_KEYDOWN:
   300     case SDL_KEYDOWN:
       
   301         PrintKey(&event->key.keysym, 1);
   233         if (event->key.keysym.sym == SDLK_ESCAPE) {
   302         if (event->key.keysym.sym == SDLK_ESCAPE) {
   234             HotKey_Quit();
   303             HotKey_Quit();
   235         }
   304         }
   236         if ((event->key.keysym.sym == SDLK_g) &&
   305         if ((event->key.keysym.sym == SDLK_g) &&
   237             (event->key.keysym.mod & KMOD_CTRL)) {
   306             (event->key.keysym.mod & KMOD_CTRL)) {
   244         if ((event->key.keysym.sym == SDLK_RETURN) &&
   313         if ((event->key.keysym.sym == SDLK_RETURN) &&
   245             (event->key.keysym.mod & KMOD_ALT)) {
   314             (event->key.keysym.mod & KMOD_ALT)) {
   246             HotKey_ToggleFullScreen();
   315             HotKey_ToggleFullScreen();
   247         }
   316         }
   248         return (0);
   317         return (0);
       
   318 
       
   319 	case SDL_KEYUP:
       
   320 		PrintKey(&event->key.keysym, 0);
       
   321 		return(0);
   249 
   322 
   250         /* Pass the video resize event through .. */
   323         /* Pass the video resize event through .. */
   251     case SDL_VIDEORESIZE:
   324     case SDL_VIDEORESIZE:
   252         return (1);
   325         return (1);
   253 
   326 
   353 
   426 
   354     /* Set an event filter that discards everything but QUIT */
   427     /* Set an event filter that discards everything but QUIT */
   355     SDL_GetEventFilter(&old_filterfunc, &old_filterdata);
   428     SDL_GetEventFilter(&old_filterfunc, &old_filterdata);
   356     SDL_SetEventFilter(FilterEvents, NULL);
   429     SDL_SetEventFilter(FilterEvents, NULL);
   357 
   430 
   358     /* Ignore key up events, they don't even get filtered */
       
   359     SDL_EventState(SDL_KEYUP, SDL_IGNORE);
       
   360 
       
   361     /* Loop, waiting for QUIT */
   431     /* Loop, waiting for QUIT */
   362     while (SDL_WaitEvent(&event)) {
   432     while (SDL_WaitEvent(&event)) {
   363         switch (event.type) {
   433         switch (event.type) {
   364         case SDL_VIDEORESIZE:
   434         case SDL_VIDEORESIZE:
   365             printf("Got a resize event: %dx%d\n",
   435             printf("Got a resize event: %dx%d\n",