Это не ошибка, а небольшое недоразумение события keydown с вашей стороны ... Поведение события keydown лучше всего описать как то, что вы ожидаете увидеть при вводе текстового процессора или блокнота. если вы задержите ключ I, вы увидите, что я набрал, а затем после небольшой задержки, быстрое повторение I. Затем, дополнительно удерживая J во время этого, вы прекратите набирать Is, введите J, затем после очередной небольшой задержки , быстрое повторение J.
Вместо этого вы должны сделать одно событие смены ключа, установить внутреннюю переменную в true, возможно, назовите ее чем-то вроде дроссельной заслонки, рулевого управления и т. д. ... тогда когда для этого ключа запускается событие keyup, установите его значение false. иметь маневр автомобиля на основе истинных / ложных состояний этих переменных.