diff --git a/cmd/streamdeck/config.go b/cmd/streamdeck/config.go index 7a23c74..d5fa860 100644 --- a/cmd/streamdeck/config.go +++ b/cmd/streamdeck/config.go @@ -11,9 +11,9 @@ type page struct { } type keyDefinition struct { - Display dynamicElement `yaml:"display"` - Action dynamicElement `yaml:"action"` - On string `yaml:"on"` + Display dynamicElement `yaml:"display"` + Actions []dynamicElement `yaml:"actions"` + On string `yaml:"on"` } type dynamicElement struct { diff --git a/cmd/streamdeck/main.go b/cmd/streamdeck/main.go index 66ae88c..3457a23 100644 --- a/cmd/streamdeck/main.go +++ b/cmd/streamdeck/main.go @@ -125,8 +125,10 @@ func togglePage(page string) error { } func triggerAction(kd keyDefinition) error { - if kd.Action.Type != "" { - return callAction(kd) + for _, a := range kd.Actions { + if a.Type != "" { + return callAction(a) + } } return nil diff --git a/cmd/streamdeck/registry.go b/cmd/streamdeck/registry.go index e9b72a6..d2867bd 100644 --- a/cmd/streamdeck/registry.go +++ b/cmd/streamdeck/registry.go @@ -36,15 +36,15 @@ func registerDisplayElement(name string, handler displayElement) { registeredDisplayElements[name] = reflect.TypeOf(handler) } -func callAction(kd keyDefinition) error { - t, ok := registeredActions[kd.Action.Type] +func callAction(a dynamicElement) error { + t, ok := registeredActions[a.Type] if !ok { - return errors.Errorf("Unknown action type %q", kd.Action.Type) + return errors.Errorf("Unknown action type %q", a.Type) } inst := reflect.New(t).Interface().(action) - return inst.Execute(kd.Action.Attributes) + return inst.Execute(a.Attributes) } func callDisplayElement(idx int, kd keyDefinition) error {