Added doc
This commit is contained in:
@@ -0,0 +1,48 @@
|
||||
# ConfigJson (Import / Export)
|
||||
|
||||
**Datei:** `ConfigJson.cs`
|
||||
|
||||
## Format
|
||||
|
||||
Menschenlesbares JSON mit `System.Text.Json` (`WriteIndented=true`, Enums als Strings via `JsonStringEnumConverter`).
|
||||
|
||||
```json
|
||||
{
|
||||
"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
|
||||
Reference in New Issue
Block a user