Pressing and holding down a key was not producing events with the repeat flag set. It produced pairs of keydown & pressed - keyup & released events without the repeat flag set. These events continued to be send long after the key was physically released. Reproducible: Always Steps to Reproduce: 1. Write a game that uses SDL2 to get keyboard input 2. Push some keys on your keyboard Actual Results: TS: 4238 KeyUp: 0 KeyDwn: 1 Pressed: 1 Release: 0 Repeat: 1 TS: 4238 KeyUp: 1 KeyDwn: 0 Pressed: 0 Release: 1 Repeat: 0 TS: 4238 KeyUp: 0 KeyDwn: 1 Pressed: 1 Release: 0 Repeat: 0 TS: 4265 KeyUp: 1 KeyDwn: 0 Pressed: 0 Release: 1 Repeat: 0 TS: 4266 KeyUp: 0 KeyDwn: 1 Pressed: 1 Release: 0 Repeat: 0 TS: 4305 KeyUp: 0 KeyDwn: 1 Pressed: 1 Release: 0 Repeat: 1 TS: 4305 KeyUp: 1 KeyDwn: 0 Pressed: 0 Release: 1 Repeat: 0 TS: 4305 KeyUp: 0 KeyDwn: 1 Pressed: 1 Release: 0 Repeat: 0 TS: 4332 KeyUp: 1 KeyDwn: 0 Pressed: 0 Release: 1 Repeat: 0 TS: 4332 KeyUp: 0 KeyDwn: 1 Pressed: 1 Release: 0 Repeat: 0 TS: 4372 KeyUp: 0 KeyDwn: 1 Pressed: 1 Release: 0 Repeat: 1 TS: 4372 KeyUp: 1 KeyDwn: 0 Pressed: 0 Release: 1 Repeat: 0 TS: 4372 KeyUp: 0 KeyDwn: 1 Pressed: 1 Release: 0 Repeat: 0 TS: 4399 KeyUp: 1 KeyDwn: 0 Pressed: 0 Release: 1 Repeat: 0 TS: 4399 KeyUp: 0 KeyDwn: 1 Pressed: 1 Release: 0 Repeat: 0 TS: 4439 KeyUp: 0 KeyDwn: 1 Pressed: 1 Release: 0 Repeat: 1 TS: 4439 KeyUp: 1 KeyDwn: 0 Pressed: 0 Release: 1 Repeat: 0 TS: 4439 KeyUp: 0 KeyDwn: 1 Pressed: 1 Release: 0 Repeat: 0 TS: 4467 KeyUp: 1 KeyDwn: 0 Pressed: 0 Release: 1 Repeat: 0 TS: 4467 KeyUp: 0 KeyDwn: 1 Pressed: 1 Release: 0 Repeat: 0 TS: 4467 KeyUp: 1 KeyDwn: 0 Pressed: 0 Release: 1 Repeat: 0 TS: 4506 KeyUp: 0 KeyDwn: 1 Pressed: 1 Release: 0 Repeat: 0 TS: 4533 KeyUp: 1 KeyDwn: 0 Pressed: 0 Release: 1 Repeat: 0 TS: 4567 KeyUp: 0 KeyDwn: 1 Pressed: 1 Release: 0 Repeat: 0 TS: 4606 KeyUp: 1 KeyDwn: 0 Pressed: 0 Release: 1 Repeat: 0 TS: 4640 KeyUp: 0 KeyDwn: 1 Pressed: 1 Release: 0 Repeat: 0 TS: 4667 KeyUp: 1 KeyDwn: 0 Pressed: 0 Release: 1 Repeat: 0 TS: 4700 KeyUp: 0 KeyDwn: 1 Pressed: 1 Release: 0 Repeat: 0 TS: 4739 KeyUp: 1 KeyDwn: 0 Pressed: 0 Release: 1 Repeat: 0 TS: 4772 KeyUp: 0 KeyDwn: 1 Pressed: 1 Release: 0 Repeat: 0 TS: 4800 KeyUp: 1 KeyDwn: 0 Pressed: 0 Release: 1 Repeat: 0 TS: 4833 KeyUp: 0 KeyDwn: 1 Pressed: 1 Release: 0 Repeat: 0 TS: 4873 KeyUp: 1 KeyDwn: 0 Pressed: 0 Release: 1 Repeat: 0 TS: 4906 KeyUp: 0 KeyDwn: 1 Pressed: 1 Release: 0 Repeat: 0 TS: 4933 KeyUp: 1 KeyDwn: 0 Pressed: 0 Release: 1 Repeat: 0 TS: 4967 KeyUp: 0 KeyDwn: 1 Pressed: 1 Release: 0 Repeat: 0 TS: 5005 KeyUp: 1 KeyDwn: 0 Pressed: 0 Release: 1 Repeat: 0 TS: 5039 KeyUp: 0 KeyDwn: 1 Pressed: 1 Release: 0 Repeat: 0 TS: 5066 KeyUp: 1 KeyDwn: 0 Pressed: 0 Release: 1 Repeat: 0 Expected Results: TS: 5383 KeyUp: 0 KeyDwn: 1 Pressed: 1 Release: 0 Repeat: 0 TS: 5885 KeyUp: 0 KeyDwn: 1 Pressed: 1 Release: 0 Repeat: 1 TS: 5919 KeyUp: 0 KeyDwn: 1 Pressed: 1 Release: 0 Repeat: 1 TS: 5952 KeyUp: 0 KeyDwn: 1 Pressed: 1 Release: 0 Repeat: 1 TS: 5985 KeyUp: 0 KeyDwn: 1 Pressed: 1 Release: 0 Repeat: 1 TS: 6018 KeyUp: 0 KeyDwn: 1 Pressed: 1 Release: 0 Repeat: 1 TS: 6051 KeyUp: 0 KeyDwn: 1 Pressed: 1 Release: 0 Repeat: 1 TS: 6084 KeyUp: 0 KeyDwn: 1 Pressed: 1 Release: 0 Repeat: 1 TS: 6118 KeyUp: 0 KeyDwn: 1 Pressed: 1 Release: 0 Repeat: 1 TS: 6151 KeyUp: 0 KeyDwn: 1 Pressed: 1 Release: 0 Repeat: 1 TS: 6184 KeyUp: 0 KeyDwn: 1 Pressed: 1 Release: 0 Repeat: 1 TS: 6217 KeyUp: 0 KeyDwn: 1 Pressed: 1 Release: 0 Repeat: 1 TS: 6250 KeyUp: 0 KeyDwn: 1 Pressed: 1 Release: 0 Repeat: 1 TS: 6285 KeyUp: 0 KeyDwn: 1 Pressed: 1 Release: 0 Repeat: 1 TS: 6317 KeyUp: 0 KeyDwn: 1 Pressed: 1 Release: 0 Repeat: 1 TS: 6350 KeyUp: 0 KeyDwn: 1 Pressed: 1 Release: 0 Repeat: 1 TS: 6383 KeyUp: 0 KeyDwn: 1 Pressed: 1 Release: 0 Repeat: 1 TS: 6417 KeyUp: 0 KeyDwn: 1 Pressed: 1 Release: 0 Repeat: 1 TS: 6450 KeyUp: 0 KeyDwn: 1 Pressed: 1 Release: 0 Repeat: 1 TS: 6483 KeyUp: 0 KeyDwn: 1 Pressed: 1 Release: 0 Repeat: 1 TS: 6516 KeyUp: 0 KeyDwn: 1 Pressed: 1 Release: 0 Repeat: 1 TS: 6551 KeyUp: 0 KeyDwn: 1 Pressed: 1 Release: 0 Repeat: 1 TS: 6584 KeyUp: 0 KeyDwn: 1 Pressed: 1 Release: 0 Repeat: 1 TS: 6617 KeyUp: 0 KeyDwn: 1 Pressed: 1 Release: 0 Repeat: 1 TS: 6650 KeyUp: 0 KeyDwn: 1 Pressed: 1 Release: 0 Repeat: 1 TS: 6683 KeyUp: 0 KeyDwn: 1 Pressed: 1 Release: 0 Repeat: 1 TS: 6717 KeyUp: 0 KeyDwn: 1 Pressed: 1 Release: 0 Repeat: 1 TS: 6751 KeyUp: 0 KeyDwn: 1 Pressed: 1 Release: 0 Repeat: 1 TS: 6785 KeyUp: 0 KeyDwn: 1 Pressed: 1 Release: 0 Repeat: 1 TS: 6818 KeyUp: 0 KeyDwn: 1 Pressed: 1 Release: 0 Repeat: 1 TS: 6851 KeyUp: 0 KeyDwn: 1 Pressed: 1 Release: 0 Repeat: 1 TS: 6885 KeyUp: 0 KeyDwn: 1 Pressed: 1 Release: 0 Repeat: 1 TS: 6918 KeyUp: 0 KeyDwn: 1 Pressed: 1 Release: 0 Repeat: 1 TS: 6952 KeyUp: 1 KeyDwn: 0 Pressed: 0 Release: 1 Repeat: 0 This is affecting at least versions libsdl2 versions 2.0.4 and 2.0.5. This is a known problem upstream and a patch has been released https://bugzilla-attachments.libsdl.org/attachment.cgi?id=2594 I have tested this patch locally on my system and can confirm it works, as shown in "Expected Results." Please update and distribute this patch downstream ASAP.
Created attachment 464466 [details, diff] Fix double event and key repeat flag without fcitx or ibus headers
CORRECTION - bug is only effecting v2.0.5 :P
should be fixed in 2.0.7