anchor.diff:      WideSameText(GetTag(ALine), '(') and
       IsSystemStoreName(GetTag(ALine)) and
       WideSameText(GetTag(ALine), ')') and
  -    GetXStr(ALine, s);
  +    ParseKeyOrXStr(ALine, s);
   
     if not Result then
     begin
  
positive.code:     FValue: WideString;
      procedure SetValue(Value: WideString);
      class function IsSystemStoreName(Value: WideString): Boolean;
    protected
      procedure InitLine(ALine: WideString); override;
    public
  
negative.code:   Result := SystemStoreFromName(Value) <> ssNone;
  end;
  
  class function TKeyboardParser_SystemStore.ParseKeyOrXStr(ALine: WideString; var Output: WideString): Boolean;
  var
    t, ALine2: WideString;
    FShift: TExtShiftState;
    FVKey: Integer;
  begin
    ALine2 := ALine;
    t := GetTag(ALine);
    if t = '[' then
    begin
      Result := ParseKey(ALine2, FVKey, FShift);
      if Result then
      begin
        // We'll wrap the hotkey in quotes and treat it like a
        Output := '['+ExtShiftStateToString(FShift)+VKeyNames[FVKey]+']';
      end;
    end
    else
      Result := GetXStr(ALine2, Output); // it should be an xstring
  end;
  
  class function TKeyboardParser_SystemStore.IsType(ALine: WideString): Boolean;
  var
    t, s: WideString;
  