As you have discovered, terminal is not really an good environment for games. Its really just that simple. If you pick terminal as your platform, you are intentionally picking a limited platform, and working within those limits is then kinda the point. Having poor input handling is part of those limits. If you just want to make a good game, then just use Wayland (or X11) instead or some wrapper of those.
The Linux terminal is not a good environment for that.
The Windows terminal supports key-up events... as long as I can remember anyway. I think a number of Windows programmers who are looking at Linux's command-line API wonder why its so hard to get something that's common in Windows.