PS: just for yor understanding: When you interfer in the Message Loop, you will not have any problems with multiple keystrokes in one frame anymore, as the MessageHandler will be called IN the engine frame, and allows you to store ANY key stroke, no matter how you like it.
Example:
Normal behaviour:
//your code
....
...
START_ENGINE_FRAME() (wait(1);
...
... KEYSTROKE
...
...
END_ENGINE_FRAME();
//your code
//you are informed HERE about the keystroke
overloading message loop:
//your code
...
...
START_ENGINE_FRAME()
...
...KEYSTROKE()
//your code in message loop
...
...KEYSTROKE
//your code in message loop
...
END_ENGINE_FRAME()
//your code
you are already defined about the keystroke when your normal lite-c code is resumed after the wait(1) again :)