anchor.diff:      function CanShowAllies: Boolean;
       procedure UpdateMessageImages;
       procedure UpdateReplayBar;
  +
  +    function CanHandleKey(Key: Word; Shift: TShiftState): Boolean;
  +    function SpeedChangeAllowedInMP: Boolean;
     protected
       Sidebar_Top: TKMImage;
       Sidebar_Middle: TKMImage;
  
positive.code: end;
  
  
  // Note: we deliberately don't pass any Keys to MyControls when game is not running
  // thats why MyControls.KeyUp is only in gsRunning clause
  // Ignore all keys if game is on 'Pause'
  procedure TKMGamePlayInterface.KeyUp(Key: Word; Shift: TShiftState; var aHandled: Boolean);
  
    function SpeedChangeAllowedInMP: Boolean;
    begin
      Result := MULTIPLAYER_SPEEDUP
                or gGame.CanMPPlayerChangeSpeed;
    end;
  
    function GameOnPause: Boolean;
    begin
      Result := False;
      if not gGame.IsPaused then Exit(False);
  
      case fUIMode of
        umSP, umReplay:   Result := True;
        umMP, umSpectate: Result := SpeedChangeAllowedInMP or (PAUSE_GAME_BEFORE_TICK <> -1);
      end;
    end;
  var
    selectId: Integer;
    specPlayerIndex: ShortInt;
  
negative.code:     Exit;
    end;
  
    keyHandled := False;
    inherited KeyDown(Key, Shift, keyHandled);
    if keyHandled then Exit;
  
  