Skip to content

The player's car drives itself after a scripted driver was stopped ​

Symptoms ​

In the next race the player's car accelerates or turns with no input. Positions read from memory show it moving from the countdown.

Cause ​

The driver script holds keys with xdotool keydown and releases them with keyup on its next step. timeout stops it with SIGTERM between the two, so the keys stay down in the X server (observed: xdotool keyup Up Down Left Right stopped the car).

What to do ​

Release every key the driver can hold in a finally block, and turn SIGTERM into a normal exit (signal.signal(signal.SIGTERM, lambda *_: sys.exit(0))). After any killed run, send the keyups by hand before the next race. GameFrame's winput releases every key that its down step holds when it ends, and has a release step for a run that was killed.

Code: Apache 2.0. Content: CC0 1.0. No game material: bring your own copy.