Problem connected with Shift and Ctrl in animation

Hey
I came across very strange problem while writing my game and can’t manage to solve it :|. I guess that it happens in most of games written in SDL but the authors just don’t know about it.
When I move my character, hold shift and press quickly ctrl like:
RSHIFT-RCTRL-RCTRL-RCTRL-RCTRL
the animation lags. Shift and ctrl have no function in my game so what might be the problem and how to solve it? I would be very grateful for any help ^^
Greetings
Edit: Here I attach link to this game(the sprites are not made by me, they are just for try). Check if that lags for your computers also when quickly pushing shift and ctrl: http://lockerz-go.netai.net/game.rar

It seems that the problem occurs only when we use Opengl and SDL in our game… still haven’t solved it

I attach a sample code, in which you can check if the bug exists for you also. (Hold right arrow to start an animation and press quickly shift and ctrl multiple times. The animation should lag):
#include <gl/gl.h>
#include <sdl/sdl.h>
#include <sdl/sdl_opengl.h>

void Run();
void ProcessEvents();
void Draw();

int ScrWidth = 800, ScrHeight = 450;
SDL_Surface * Screen;
SDL_Event event;
Uint8 * key = SDL_GetKeyState( NULL );
bool End;
int pos_x = 200;
bool right = false, left = false;

int main( int argc, char * argv[] )
{
    Run();
}

void ProcessEvents()
{
    if( End ) return;
   
    while( SDL_PollEvent( & event ) && event.type != SDL_MOUSEMOTION ) {
        if( event.type == SDL_QUIT ) {
            End = true;
            break;
        }
    }
}

void Run()
{
    SDL_Init( SDL_INIT_EVERYTHING );
    Screen = SDL_SetVideoMode( ScrWidth, ScrHeight, 32, SDL_OPENGL | SDL_HWSURFACE | SDL_GL_MULTISAMPLEBUFFERS );
    SDL_GL_SetAttribute( SDL_GL_DOUBLEBUFFER, 1 );
   
    glClearColor( 0, 0, 0, 0 );
    glViewport( 0, 0, ScrWidth, ScrHeight );
    glMatrixMode( GL_PROJECTION );
    glLoadIdentity();
    glOrtho( 0, ScrWidth, ScrHeight, 0, - 1, 1 );
    glMatrixMode( GL_MODELVIEW );
    glLoadIdentity();
   
    while( !End )
    {
        ProcessEvents();
        Draw();
    }
    SDL_FreeSurface( Screen );
}

void Draw()
{
    glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );
    if( key[ SDLK_LEFT ] ) pos_x -= 1;
   
    if( key[ SDLK_RIGHT ] ) pos_x += 1;
   
    glBegin( GL_QUADS );
    glColor3f( 1, 0, 0 ); glVertex3f( 0, 0, 0 );
    glColor3f( 1, 1, 0 ); glVertex3f( pos_x, 0, 0 );
    glColor3f( 1, 0, 1 ); glVertex3f( pos_x, 100, 0 );
    glColor3f( 1, 1, 1 ); glVertex3f( 0, 100, 0 );
    glEnd();
   
    SDL_GL_SwapBuffers();
}

It turned out that its window’s fault when the user has sticky keys switched off…