Repetição e atraso do SDL 2.0 Key
Estou tendo um problema com a entrada do teclado SDL 2.0 em um jogo parecido com pong. Quando ordeno mover para a esquerda pressionando a seta esquerda, ele é processado por SDL_PollEvents () e responde corretamente se a tecla foi pressionada uma vez. No entanto, se eu mantiver a tecla pressionada, recebo um pequeno atraso (desde que a tecla do Windows repita o atraso) antes de mover continuamente.
Aqui estão os eventos de processamento de funções:
void Event::PlayerEvent (Player &player)
{
while (SDL_PollEvent (&mainEvent))
{
switch (mainEvent.type)
{
case SDL_KEYDOWN :
switch (mainEvent.key.keysym.sym)
{
case SDLK_ESCAPE :
gameRunning = false;
break;
case SDLK_LEFT :
player.moving = player.left;
break;
case SDLK_RIGHT :
player.moving = player.right;
}
break;
case SDL_QUIT :
gameRunning = false;
}
}
}
EDIT: Afinal, eu consegui corrigir esse problema chamando SystemParametersInfo (SPI_SETKEYBOARDDELAY, 0, 0, 0) no início do programa e SystemParametersInfo (SPI_SETKEYBOARDDELAY, 1, 0, 0) no final, para retornar à repetição de chave padrão demora.