Skip to content

Dials & Touch Strip

Fresh

Overview

Encoders on Stream Deck + combine a physical dial with a touch strip area for rich interaction and visual feedback through layouts.

Built-in Layouts

Layout IDNameDescription
$X1IconTitle and icon placeholders
$A0CanvasFull and partial canvas areas
$A1ValueTitle, icon, and numeric value
$B1IndicatorAdds a bar to the $A1 design
$B2GradientColor-mapped bar visualization
$C1DoubleDual-value display

Custom Layouts

Create custom JSON layouts within a 200x100 pixel canvas per action:

json
{
  "$schema": "https://schemas.elgato.com/streamdeck/plugins/layout.json",
  "id": "my-layout",
  "items": [
    {
      "key": "title",
      "type": "text",
      "rect": [0, 0, 200, 30],
      "text": "Volume",
      "alignment": "center"
    },
    {
      "key": "level",
      "type": "bar",
      "rect": [10, 40, 180, 20],
      "subtype": 0
    }
  ]
}

Validation

Use the CLI validation tool to check that layout items stay within the 200x100 bounds.

Events

EventTrigger
onDialDownUser presses the dial
onDialUpUser releases the dial
onDialRotateUser rotates the dial
onTouchTapUser taps the touch strip
typescript
@action({ UUID: "com.example.volume" })
export class VolumeAction extends SingletonAction {
  override onDialRotate(ev: DialRotateEvent): void {
    const { ticks } = ev.payload;
    // ticks > 0 = clockwise, ticks < 0 = counter-clockwise
  }

  override onTouchTap(ev: TouchTapEvent): void {
    // Handle touch strip tap
  }
}

Commands

CommandDescription
setFeedbackLayout(layout)Assign layout to action
setFeedback(feedback)Update layout item values
setTriggerDescription(desc)Configure interaction descriptions
setImage(image?)Set action image
setTitle(title)Set action title
setSettings(settings)Persist settings

Updating Layout Values

typescript
await ev.action.setFeedback({
  title: "Volume",
  level: { value: 75 }
});

Reserved Keys

The title and icon keys can be overridden by user customization in Stream Deck preferences, taking precedence over plugin-defined values.

See Also