Так что проблема, которая у меня возникла
кажется, ошибка, которая возникает только
в Linux
Да, это проблема Linux.
В Windows при удержании клавиши вы получаете несколько событий KeyPressed, но только одно событие KeyReleased.
Этот вопрос часто задают, и я никогда не видел хорошего решения.
Но я думаю, что основой решения является использование таймера. Когда клавиша нажата, вы запускаете таймер. Когда вы получаете еще одну клавишу, вы перезапускаете таймер. Таким образом, пока интервал таймера больше, чем частота повторения клавиатуры, таймер будет постоянно сбрасываться при удерживании клавиши. Когда keyPresses перестают генерироваться, таймер сработает, поэтому вы предполагаете, что ключ был отпущен. Это означает, что у вас будет задержка при обработке keyReleased.