streamdeck

package module
v0.2.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 8, 2022 License: MIT Imports: 13 Imported by: 6

README

streamdeck

Latest Release Software License Build Status Go ReportCard Go Doc

A CLI application and Go library to control your Elgato Stream Deck on Linux.

If you're looking for a complete Linux service to control your StreamDeck, check out Deckmaster, which is based on this library.

Installation

Make sure you have a working Go environment (Go 1.12 or higher is required). See the install instructions.

To install streamdeck, simply run:

go get github.com/muesli/streamdeck

Configuration

On Linux you need to set up some udev rules to be able to access the device as a regular user. Edit /etc/udev/rules.d/99-streamdeck.rules and add these lines:

SUBSYSTEM=="usb", ATTRS{idVendor}=="0fd9", ATTRS{idProduct}=="0060", MODE:="666", GROUP="plugdev"
SUBSYSTEM=="usb", ATTRS{idVendor}=="0fd9", ATTRS{idProduct}=="0063", MODE:="666", GROUP="plugdev"
SUBSYSTEM=="usb", ATTRS{idVendor}=="0fd9", ATTRS{idProduct}=="006c", MODE:="666", GROUP="plugdev"
SUBSYSTEM=="usb", ATTRS{idVendor}=="0fd9", ATTRS{idProduct}=="006d", MODE:="666", GROUP="plugdev"
SUBSYSTEM=="usb", ATTRS{idVendor}=="0fd9", ATTRS{idProduct}=="0080", MODE:="666", GROUP="plugdev"
SUBSYSTEM=="usb", ATTRS{idVendor}=="0fd9", ATTRS{idProduct}=="0090", MODE:="666", GROUP="plugdev"

Make sure your user is part of the plugdev group and reload the rules with sudo udevadm control --reload-rules. Unplug and replug the device and you should be good to go.

Usage

Control the brightness, in percent between 0 and 100:

streamdeck-cli brightness 50

Set an image on the first key (from the top-left):

streamdeck-cli image 0 image.png

Clear all images:

streamdeck-cli clear

Reset the device:

streamdeck-cli reset

Feedback

Got some feedback or suggestions? Please open an issue or drop me a note!

Documentation

Index

Constants

View Source
const (
	VID_ELGATO              = 0x0fd9
	PID_STREAMDECK          = 0x0060
	PID_STREAMDECK_V2       = 0x006d
	PID_STREAMDECK_MK2      = 0x0080
	PID_STREAMDECK_MINI     = 0x0063
	PID_STREAMDECK_MINI_MK2 = 0x0090
	PID_STREAMDECK_XL       = 0x006c
)

Stream Deck Vendor & Product IDs.

Variables

This section is empty.

Functions

This section is empty.

Types

type Device

type Device struct {
	Columns uint8
	Rows    uint8
	Keys    uint8
	Pixels  uint
	DPI     uint
	Padding uint
	// contains filtered or unexported fields
}

Device represents a single Stream Deck device.

func Devices

func Devices() ([]Device, error)

Devices returns all attached Stream Decks.

func (*Device) Asleep

func (d *Device) Asleep() bool

Asleep returns true if the device is asleep.

func (*Device) Clear

func (d *Device) Clear() error

Clears the Stream Deck, setting a black image on all buttons.

func (*Device) Close

func (d *Device) Close() error

Close the connection with the device.

func (*Device) ConvertImage added in v0.2.0

func (d *Device) ConvertImage(img image.Image) (*ImageData, error)

func (*Device) Fade

func (d *Device) Fade(start uint8, end uint8, duration time.Duration) error

Fade fades the brightness in or out.

func (*Device) FirmwareVersion

func (d *Device) FirmwareVersion() (string, error)

FirmwareVersion returns the firmware version of the device.

func (*Device) Open

func (d *Device) Open() error

Open the device for input/output. This must be called before trying to communicate with the device.

func (*Device) ReadKeys

func (d *Device) ReadKeys() (chan Key, error)

ReadKeys returns a channel, which it will use to emit key presses/releases.

func (*Device) Reset

func (d *Device) Reset() error

Resets the Stream Deck, clears all button images and shows the standby image.

func (*Device) SetBrightness

func (d *Device) SetBrightness(percent uint8) error

SetBrightness sets the background lighting brightness from 0 to 100 percent.

func (*Device) SetConvertedImage added in v0.2.0

func (d *Device) SetConvertedImage(index uint8, imageData *ImageData) error

func (*Device) SetImage

func (d *Device) SetImage(index uint8, img image.Image) error

SetImage sets the image of a button on the Stream Deck. The provided image needs to be in the correct resolution for the device. The index starts with 0 being the top-left button.

func (*Device) SetSleepFadeDuration

func (d *Device) SetSleepFadeDuration(t time.Duration)

SetSleepFadeDuration sets the duration of the fading animation when the device is put to sleep or wakes up.

func (*Device) SetSleepTimeout

func (d *Device) SetSleepTimeout(t time.Duration)

SetSleepTimeout sets the time after which the device will sleep if no key events are received.

func (*Device) Sleep

func (d *Device) Sleep() error

Sleep puts the device asleep, waiting for a key event to wake it up.

func (*Device) Wake

func (d *Device) Wake() error

Wake wakes the device from sleep.

type ImageData added in v0.2.0

type ImageData struct {
	// contains filtered or unexported fields
}

ImageData allows to access raw image data in a byte array through pages of a given size.

type Key

type Key struct {
	Index   uint8
	Pressed bool
}

Key holds the current status of a key on the device.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL