I'm having a problem where if I press any key on my keyboard, and hold it in it will give me both a KEYDOWN event and right after (without me releasing the key on my keyboard) it will give me a KEYUP event.
So, simply it generates both a KEYDOWN and KEYUP event even though I haven't released any key(s).
Here's my ProcessInput function : (so sorry for the switch statements, and the 'probably' bad formatting, had to format it all in browser....)
void Input::ProcessInput()
{
if (initialized = true)
{
while (SDL_PollEvent(&Input::eventHandler))
{
switch (Input::eventHandler.type)
{
case SDL_QUIT:
SDL_Quit();
exit(0);
break;
case SDL_KEYDOWN:
std::cout << "KEYDOWN" << std::endl;
switch (Input::eventHandler.key.keysym.sym && Input::eventHandler.key.repeat == false)
{
case SDLK_UP:
keys.find(SDLK_UP)->second = true;
break;
case SDLK_DOWN:
keys.find(SDLK_DOWN)->second = true;
break;
case SDLK_RIGHT:
keys.find(SDLK_RIGHT)->second = true;
break;
case SDLK_LEFT:
keys.find(SDLK_LEFT)->second = true;
break;
default:
break;
}
case SDL_KEYUP:
std::cout << "KEYUP" << std::endl;
switch (Input::eventHandler.key.keysym.sym && Input::eventHandler.key.repeat == false)
{
case SDLK_UP:
keys.find(SDLK_UP)->second = false;
break;
case SDLK_DOWN:
keys.find(SDLK_DOWN)->second = false;
break;
case SDLK_RIGHT:
keys.find(SDLK_RIGHT)->second = false;
break;
case SDLK_LEFT:
keys.find(SDLK_LEFT)->second = false;
break;
}
}
}
}
else if (initialized == false)
{
Errors::Error("Input isn't initialized, doing it for you...", __FILE__, __LINE__);
InitializeInput();
}
}