VersaGUI/doc/06_config_json.md
2026-03-30 19:51:38 +02:00

1.3 KiB
Raw Blame History

ConfigJson (Import / Export)

Datei: ConfigJson.cs

Format

Menschenlesbares JSON mit System.Text.Json (WriteIndented=true, Enums als Strings via JsonStringEnumConverter).

{
  "version": 2,
  "buttons": [
    {
      "index": 0,
      "action": { "type": "HidKey", "data": 260 },
      "led": { "r": 80, "g": 40, "b": 0, "anim": "ColorCycle", "period_ms": 4000 }
    },
    ...
  ],
  "encoders": [
    {
      "index": 0,
      "sw":  { "type": "None", "data": 0 },
      "cw":  { "type": "None", "data": 0 },
      "ccw": { "type": "None", "data": 0 }
    },
    ...
  ]
}

Serialisierung

ConfigJson.Serialize(cfg) → JSON-String. Exportiert alle 20 Buttons + 4 Encoder vollständig.

Deserialisierung

ConfigJson.Deserialize(json, cfg):

  • Prüft version wirft InvalidDataException bei Mismatch
  • Schreibt in bestehendes DeviceConfig-Objekt (kein new)
  • Fehlende buttons/encoders-Arrays werden ignoriert (partial import möglich)
  • Ungültige index-Werte werden übersprungen

Anmerkungen

  • MacroTable wird nicht exportiert (kein JSON-Format für Makros definiert)
  • data enthält den ushort-Wert direkt (für HidKey z.B. Keycode | (Modifier << 8))
  • Die Datei ist kein Binärformat und kann manuell bearbeitet werden