I noticed a strange thing and wondered if it’s a SDL bug : when my app have the focus, I press a key, then while keeping this key pressend, I move the window. Now, the state for this key is always stuck to 1, and I didnt found a way to stop it.
My event code isn’t special, I just do :
int keystate = SDL_GetKeyboardState(NULL);
at the game initialization, then i retrieve the key state with keystate[code]…
The only way i found to reset a stuck key is to make the window lose then gain its focus.
This code will force focus change if a key was pressed while the window was moved, thus correcting the stucked key glitch
Code:
while (SDL_PollEvent(&e)) {
switch (e.type){
if (e.window.event == SDL_WINDOWEVENT_MOVED) {
// check if a key was already pressed
int sdl_bug = 0;
for (int i = 0; i < 7; i++){ // the 7 keyboard keys i use in my game
if (keys[i]){
sdl_bug = 1;
}
}
if (sdl_bug){ // hack
SDL_MinimizeWindow(window);
SDL_RestoreWindow(window);
}
}
}
}
Hacks are ugly, it’d be nice if some investigation could be done