diff --git a/engine/client/keys.c b/engine/client/keys.c index 3ed787ee..c0088ad3 100644 --- a/engine/client/keys.c +++ b/engine/client/keys.c @@ -856,11 +856,12 @@ void GAME_EXPORT Key_ClearStates( void ) int i; // don't clear keys during changelevel - if( cls.changelevel ) return; + if( cls.changelevel ) + return; for( i = 0; i < 256; i++ ) { - if( keys[i].down ) + if( keys[i].down && i < K_MOUSE1 && i > K_MOUSE5 ) Key_Event( i, false ); keys[i].down = 0; @@ -868,6 +869,9 @@ void GAME_EXPORT Key_ClearStates( void ) keys[i].gamedown = 0; } + for( i = K_MOUSE1; i < K_MOUSE5; i++ ) // from K_MOUSE1 to K_MOUSE5 + IN_MouseEvent( i - K_MOUSE1, false ); + if( clgame.hInstance ) clgame.dllFuncs.IN_ClearStates(); }