If you switch keys very fast and hold the last one it doesn't get repeated because the key release of the first key occured after the key press of the second key. Unfortunatly the key release of the first key sets SDL_KeyRepeat.timestamp = 0; causing the the second key not to repeat. This should be always reproducable. I've only checked this on x86-64 X11. To fix this I just added another condition to make sure the sym of the released key matches SDL_KeyRepeat.evt.key.keysym.sym. Reproducible: Always Steps to Reproduce: 1. Get and simple SDL framework or test application. 2. Call SDL_EnableKeyRepeat( SDL_DEFAULT_REPEAT_DELAY, SDL_DEFAULT_REPEAT_INTERVAL ); after init 3. Run the SDL application press a key and hold it 4. switch to another key very fast and release the first one 5. hold the second key Actual Results: The second key won't repeat! Expected Results: The second key should repeat!
Created attachment 47400 [details, diff] patch to fix keyrepeat issues for SDL-1.2.7 Fix for SDL-1.2.7 keyrepeat issues Other versions are very similar to fix
added patch from upstream cvs to 1.2.8 and 1.2.7-r3