Reputation: 987
There used to be a function named SDL_EnableKeyRepeat()
in SDL, but not anymore in SDL2.
I searched around in SDL2-wiki but failed to locate anything relevant.
Any ideas?
Upvotes: 23
Views: 20904
Reputation: 1093
When handling a keyboard event, just filter out any events that are repeat events, i.e. check the repeat
field of the SDL_KeyboardEvent
of the SDL_Event
union.
For example:
SDL_Event event;
while (SDL_PollEvent(&event)) {
if (event.type == SDL_QUIT) {
quit = true;
}
if (event.type == SDL_KEYDOWN && event.key.repeat == 0) {
if (event.key.keysym.sym == SDLK_d)
debug = debug ? false : true;
// ... handle other keys
}
}
See https://wiki.libsdl.org/SDL_KeyboardEvent
Upvotes: 43
Reputation: 41797
You may be better served by the SDL_GetKeyboardState function which tells you all the keys that are pressed. You can also just check the repeat
flag in the event and ignore when repeat is true.
Upvotes: 6
Reputation: 756
You can do it yourself, by adding your "down" key into a list and removing them when you catch a KEY_UP and at each frames you can iterate your list to know which key is still down.
Upvotes: 1