Compare commits
No commits in common. "main" and "v0.0.4" have entirely different histories.
63
README.md
63
README.md
@ -1,65 +1,2 @@
|
|||||||
# Stream Deck plugin library for Go
|
|
||||||
|
|
||||||
[](https://pkg.go.dev/github.com/tardisx/streamdeck-plugin)
|
[](https://pkg.go.dev/github.com/tardisx/streamdeck-plugin)
|
||||||
|
|
||||||
You can find fully-formed examples using this library in
|
|
||||||
[streamdeck-plugin-examples](https://github.com/tardisx/streamdeck-plugin-examples)
|
|
||||||
|
|
||||||
## Basic usage
|
|
||||||
|
|
||||||
```go
|
|
||||||
package main
|
|
||||||
|
|
||||||
import (
|
|
||||||
"fmt"
|
|
||||||
"log/slog"
|
|
||||||
"time"
|
|
||||||
|
|
||||||
"github.com/tardisx/streamdeck-plugin"
|
|
||||||
"github.com/tardisx/streamdeck-plugin/events"
|
|
||||||
)
|
|
||||||
|
|
||||||
// keep track of instances we've seen
|
|
||||||
var contexts = map[string]bool{}
|
|
||||||
|
|
||||||
func main() {
|
|
||||||
slog.Info("Starting up")
|
|
||||||
c := streamdeck.New()
|
|
||||||
|
|
||||||
slog.Info("Registering handlers")
|
|
||||||
c.RegisterHandler(func(e events.ERWillAppear) {
|
|
||||||
slog.Info(fmt.Sprintf("action %s appeared, context %s", e.Action, e.Context))
|
|
||||||
contexts[e.Context] = true
|
|
||||||
})
|
|
||||||
c.RegisterHandler(func(e events.ERWillDisappear) {
|
|
||||||
slog.Info(fmt.Sprintf("action %s disappeared, context %s", e.Action, e.Context))
|
|
||||||
delete(contexts, e.Context)
|
|
||||||
})
|
|
||||||
c.RegisterHandler(func(e events.ERKeyDown) {
|
|
||||||
slog.Info(fmt.Sprintf("action %s appeared, context %s", e.Action, e.Context))
|
|
||||||
})
|
|
||||||
|
|
||||||
slog.Info("Connecting web socket")
|
|
||||||
err := c.Connect()
|
|
||||||
if err != nil {
|
|
||||||
panic(err)
|
|
||||||
}
|
|
||||||
|
|
||||||
// update the title once a second, for all "seen" contexts
|
|
||||||
go func() {
|
|
||||||
for {
|
|
||||||
for context := range contexts {
|
|
||||||
c.Send(events.NewESSetTitle(
|
|
||||||
context,
|
|
||||||
time.Now().Format(time.Kitchen),
|
|
||||||
events.EventTargetBoth,
|
|
||||||
0))
|
|
||||||
}
|
|
||||||
time.Sleep(time.Second)
|
|
||||||
}
|
|
||||||
}()
|
|
||||||
|
|
||||||
slog.Info("waiting for the end")
|
|
||||||
c.WaitForPluginExit()
|
|
||||||
}
|
|
||||||
```
|
|
@ -158,12 +158,12 @@ type ESSetImage struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type ESSetImagePayload struct {
|
type ESSetImagePayload struct {
|
||||||
Image string `json:"image"`
|
Image string `json:"title"`
|
||||||
Target EventTarget `json:"target"`
|
Target EventTarget `json:"target"`
|
||||||
State *int `json:"state,omitempty"`
|
State int `json:"state"`
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewESSetImage(context string, imageBase64 string, target EventTarget, state *int) ESSetImage {
|
func NewESSetImage(context string, imageBase64 string, target EventTarget, state int) ESSetImage {
|
||||||
return ESSetImage{
|
return ESSetImage{
|
||||||
ESCommon: ESCommon{
|
ESCommon: ESCommon{
|
||||||
Event: "setImage",
|
Event: "setImage",
|
||||||
|
@ -24,6 +24,6 @@ func ImageToPayload(i image.Image) string {
|
|||||||
|
|
||||||
// SVGToPayload create the string necessary to send an SVG
|
// SVGToPayload create the string necessary to send an SVG
|
||||||
// via a ESSetImage struct
|
// via a ESSetImage struct
|
||||||
func SVGToPayload(svg string) string {
|
func SVGToPayload(context string, svg string) string {
|
||||||
return "data:image/svg+xml;charset=utf8;base64," + base64.StdEncoding.EncodeToString([]byte(svg))
|
return "data:image/svg+xml;charset=utf8," + svg
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user