Multi-device support, dynamic grid adaptation, keyboard action

- Multi-device: OpenAllDecks(), GET /api/decks, per-deck PageManagers
- Dynamic grid: frontend adapts to connected device layout
- Keyboard action: new action type for sending key combos via wtype/xdotool
- Key recorder UI: click-based modifier toggles + single key capture
- Config: remove hardcoded maxKey validation
- Screensaver and auto-switch sync across all decks
This commit is contained in:
Maksim Totmin
2026-06-16 22:51:39 +07:00
parent a187e2b268
commit e536f97b18
8 changed files with 214 additions and 51 deletions
-4
View File
@@ -160,14 +160,10 @@ func (c *Config) Validate() error {
pageNames[p.Name] = true
seenKeys := make(map[int]bool)
maxKey := 31
for _, k := range p.Keys {
if k.Index < 0 {
return fmt.Errorf("page %s: key index must be >= 0", p.Name)
}
if k.Index > maxKey {
return fmt.Errorf("page %s: key index %d exceeds max %d", p.Name, k.Index, maxKey)
}
if seenKeys[k.Index] {
return fmt.Errorf("page %s: duplicate key index %d", p.Name, k.Index)
}