anchor.diff:    end;
   end;
   
  +function TfmCommands.DoFindDupKeys: boolean;
  +var
  +  i, j: integer;
  +  item1, item2: TATKeymapItem;
  +begin
  +  Result:= false;
  +  for i:= 0 to keymap.Count-1 do
  +    for j:= i+1 to keymap.Count-1 do
  +    begin
  +      item1:= keymap.Items[i];
  +      item2:= keymap.Items[j];
  +      if KeyArraysEqualNotEmpty(item1.Keys1, item2.Keys1) or
  +         KeyArraysEqualNotEmpty(item1.Keys2, item2.Keys2) or
  +         KeyArraysEqualNotEmpty(item1.Keys1, item2.Keys2) or
  +         KeyArraysEqualNotEmpty(item1.Keys2, item2.Keys1) then
  +        begin
  +          MsgBox('Commands have same shortcuts:'#13+item1.Name+#13+item2.Name,
  +            MB_OK or MB_ICONWARNING);
  +          Result:= true;
  +          Exit
  +        end;
  +    end;
  +end;
  +
   end.
   
  
positive.code:   finally
      Free
    end;
  end;
  
  procedure TfmCommands.DoResetKey(K: TATKeymapItem);
  
negative.code:     keymapList: TList;
      procedure DoConfigKey(Cmd: integer);
      procedure DoFilter;
      function DoFindDupKeys: boolean;
      procedure DoResetKey(K: TATKeymapItem);
      function GetResultCmd: integer;
      function IsFiltered(Item: TATKeymapItem): boolean;
  