1.8 KiB
1.8 KiB
ConfigJson (Import / Export)
Datei: ConfigJson.cs
Format
Menschenlesbares JSON mit System.Text.Json (WriteIndented=true, Enums als Strings via JsonStringEnumConverter).
{
"version": 3,
"profile": 0,
"buttons": [
{
"index": 0,
"action": { "type": "HidKey", "data": 260 },
"led": {
"r": 80,
"g": 40,
"b": 0,
"brightness": 255,
"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 und vier
Encoder des aktuell aktiven Profils vollständig, einschließlich
Per-LED-Helligkeit.
Deserialisierung
ConfigJson.Deserialize(json, cfg):
- Prüft
version– wirftInvalidDataExceptionbei Mismatch - prüft und übernimmt
profileim Bereich0..2 - validiert Actions, LED-Enums und die Mindestperiode für
Pulse - Schreibt in bestehendes
DeviceConfig-Objekt (keinnew) - Fehlende
buttons/encoders-Arrays werden ignoriert (partial import möglich) - Ungültige
index-Werte werden übersprungen
Anmerkungen
MacroTablewird nicht exportiert (kein JSON-Format für Makros definiert)- globale Helligkeit und Encoder-Sensitivität werden nicht exportiert
profilewählt das Zielprofil aus und macht es gleichzeitig zum aktiven Profil; die beiden anderen Profile bleiben unverändertdataenthält denushort-Wert direkt (für HidKey z.B.Keycode | (Modifier << 8))- Die Datei ist kein Binärformat und kann manuell bearbeitet werden
- Ein ungültiger Wert wird vor dem Anwenden mit
InvalidDataExceptionabgelehnt