Handling keyboard events correctly in games
❯ xset q Keyboard Control: auto repeat: on ... ... auto repeat delay: 250 repeat rate: 30
This is my keyboard repeat rate. Because it is too fast, many games can’t work correctly with this.
What worked well
- Firefox and web games
- GLFW3 (including raylib)
What worked poorly
- Godot games
- Unity games
- Unity games on Wine
I suspect it is because 1 of 2 reasons.
- Key repeat is recognized as noraml key press. In XInput, the repeat flag of a XIEvent would be set. Ignore those.
- Keyboard state is not calculated correctly.
If possible, I recommending using a game engine that let’s you handle input events as events, not “current state”.