[SDL] Arghhh, this is driving me crazy (SDL_EnableKeyRepeat)

Manuel García Cabrera manugarciac5 at yahoo.com.ar
Sat Jun 9 11:30:42 PDT 2007


Yes! Thank you man, I had to do the while(PollEvent)

Jonathan Dearborn escribió:
> Hey there,
>  
> Ah, I think I just figured it out.  You probably should enclose your
> switch so it doesn't get run unless SDL_PollEvent() returns true.  You
> can see that in the code I've included.
>  
> If you're trying to do something with repeatable input (like text), you
> might want to use this line:
> SDL_EnableKeyRepeat(SDL_DEFAULT_REPEAT_DELAY, SDL_DEFAULT_REPEAT_INTERVAL);
>  
> When I'm making a game, I use this next line to turn off the repeat:
> SDL_EnableKeyRepeat(0, SDL_DEFAULT_REPEAT_INTERVAL);
>  
> Here's some code that might help you figure out how to check keys with
> SDL.  This is generally what I do for games...
> 
>     SDL_Event event;
>     Uint8* keystates;  // This is for checking the state of keys.
>                               // Polling events only checks CHANGES in
> state.
>     keystates = SDL_GetKeyState(0);
> 
>     bool done = 0;
>     while (!done)
>     {
>         while (SDL_PollEvent(&event))
>         {
>             if (event.type == SDL_QUIT)
>                 exit(0);
> 
>             if (event.type == SDL_KEYDOWN)
>             {
>                 if (event.key.keysym.sym == SDLK_ESCAPE)
>                     exit(0);
>  
>                 if (event.key.keysym.sym == SDLK_SPACE)
>                 {
>                     // jump or something (only once)
>                 }
>             } // END if keydown
>         }  // END while(pollevent)
> 
>        
> 
>         if (keystates[SDLK_LEFT])
>         {
>             // move left continuously
>         }
>         else if (keystates[SDLK_RIGHT])
>         {
>             // move right continuously
>         }
> 
>         // draw, flip, etc.
>  
>     } // END while(!done)
> 
> 
> Jonny D
>  
>  
>  
>  
>  
> ------------------------------------------------------------------------
> 
>> Date: Sat, 9 Jun 2007 13:38:38 -0300
>> From: manugarciac5 at yahoo.com.ar
>> To: sdl at lists.libsdl.org
>> Subject: [SDL] Arghhh, this is driving me crazy (SDL_EnableKeyRepeat)
>>
>> Ok, I want to do something when a key is pressed. I'm looping an
>> SDL_PollEvent to do this, and among others asking for a SDL_KEYDOWN
>> event in a switch. Well, I noticed that the code inside that case
>> executes many times if I press a key once, so I want it to wait a bit
>> before two consecutive KEYDOWN events. I actually managed to do this,
>> but the code turned out to be quite ugly. Then, I found a function that
>> seems to do exactly what I want: SDL_EnableKeyRepeat. But I can't get it
>> to work! This is what I'm doing:
>>
>>
>> ...
>>
>> SDL_EnableKeyRepeat(200, 200);
>>
>> while (some_condition){
>>
>> SDL_PollEvent(&event);
>>
>> switch(event.type){
>> case SDL_KEYDOWN:
>> ... //EXECUTE SOME CODE
>> break;
>> }
>> }
>>
>> ...
>>
>>
>> Is there something wrong with that? It behaves exactly the same when I
>> comment the EnableKeyRepeat line or use zero's as its arguments.
>> _______________________________________________
>> SDL mailing list
>> SDL at lists.libsdl.org
>> http://lists.libsdl.org/listinfo.cgi/sdl-libsdl.org
> 
> 
> ------------------------------------------------------------------------
> Play free games, earn tickets, get cool prizes! Join Live Search Club.  
> Join Live Search Club!
> <http://club.live.com/home.aspx?icid=CLUB_wlmailtextlink>
> 
> 
> ------------------------------------------------------------------------
> 
> _______________________________________________
> SDL mailing list
> SDL at lists.libsdl.org
> http://lists.libsdl.org/listinfo.cgi/sdl-libsdl.org


More information about the SDL mailing list