Adding a delay to the Robot should solve your problem. You can either call robot.delay() manually or you can set the autoDelay for the robot to a given period (via robot.setAutoDelay()). 10ms works OK for me, but I'm sure you can have lots of fun playing around to find the optimal value.
package tester;
import java.awt.AWTException;
import java.awt.Robot;
import java.awt.event.KeyEvent;
public class LFSRobotTest {
public static void main(String[] args) {
try {
Robot robot = new Robot();
robot.setAutoDelay(10);
robot.delay(5000);
robot.keyPress(KeyEvent.VK_I);
robot.keyRelease(KeyEvent.VK_I);
} catch (AWTException e) {
e.printStackTrace();
}
}
}
If you run LFS windowed with the above example you can run the example and switch to the LFS window and see the ignition toggle. Obviously there's a ~5 second delay between running the program and the 'i' KeyPress.