i haven't scripted with GS2 yet but for the most part i understand what you are trying to do.
but, I think you might also have to check for the keypressed if you want to check for the keydown2, not do them at different times and use a timeout and check the the this. to tell if to check if the key is pressed.
I've never had the problem you're having with keypressed.
example in newfeatures:
NPC Code:
if (keypressed) {
code = strtofloat(#p(0));
if (code==keycode(1,false)) message on;
else if (code==keycode(2,false)) message off;
}
i know it's keycode, but it might be of some use to you too?