DeviceJockey Guide

Swaps and SwapTables

Replace fixed text with named values that can change while your setup is running.

Dynamic runtime values

Change one value without editing every control.

A Swap is a named value. You can insert its name into supported titles, commands, events, paths, payloads, and Scripts. DeviceJockey replaces the placeholder with the Swap’s current value when the property is evaluated.

This is useful whenever several controls should use the same value or when that value needs to change during Live Mode.

SwapA named runtime value such as SceneA = Scene 1.
PlaceholderA reference such as \(SceneA) that is replaced with the current value.
SwapTableA group used to organize related Swaps.
A SwapTable is not another kind of value.

Commands and events use individual Swaps. The SwapTable only keeps related Swaps together so they are easier to find and maintain.

Example

Reuse one OBS scene button.

Fixed value

The command contains one scene name.

sceneName: "Scene 1"

Changing the target means opening and editing the command itself.

Swap

The command contains a placeholder.

sceneName: "\(SceneA)"

If SceneA contains Scene 2, the same command selects Scene 2.

The command configuration stays unchanged.

Only the value stored in SceneA changes. Every supported place using \(SceneA) receives the new value.

Create a Swap

Add a table, then add its Swaps.

1

Open Swap tables

Open the main menu and choose Swap tables, then open Globals.

2

Add a table

Create a table with a clear purpose, such as OBS Scenes, Cameras, or Destinations.

3

Add a Swap

Enter a unique Swap name and its initial value.

4

Use its placeholder

Insert the Swap into a supported field and test the resolved value in Live Mode.

SwapTables belong to the current scene.

The app loads the global SwapTables stored with the active scene. Use consistent names when different scenes should provide equivalent values.

Syntax

Write the name inside \( ).

\(SceneA)

The placeholder starts with a backslash and an opening parenthesis, followed by the exact Swap name and a closing parenthesis. In supported editors, a recognized Swap expression is highlighted.

Inside text

Current scene: \(SceneA) combines normal text with the current Swap value.

Complete value

\(SceneA) lets the Swap provide the entire title, path, payload value, or supported parameter.

Nested value

A Swap value may contain another Swap expression. DeviceJockey can resolve the referenced value where replacement is supported.

Use the placeholder only where replacement is expected.

When a setting asks you to select or name the Swap itself, enter SceneA without \( ).

Change values from a panel

Update Swaps without returning to the table editor.

Set Swap Value

Write a fixed value, use the item title, or open an input window in Live Mode. The current Swap value is shown as the starting input.

Set Swap Range

Map the position of a slider or another continuous item between a configured minimum and maximum and store the result.

Check Swap Value

Compare the current value with a configured value and send the Boolean result to a Local response path.

Panel Check Status is normally useful.

When enabled, items that depend on the changed Swap check their status again. Disable it only when an immediate panel refresh is intentionally unwanted.

Events

Let item state depend on a Swap value.

Swap events compare a selected Swap with a configured value. Depending on the item and event property, the result can update a light, toggle or radio-button state, protection, a default position, or trigger a tap, long press, or touch action.

Visual selection

Light the button whose configured value matches the current Swap.

Item state

Switch a supported toggle or radio button on when the comparison is true.

Conditional interaction

Protect an item or trigger a supported touch action from the comparison result.

Available reactions depend on the item.

DeviceJockey presents only the Swap event variants supported by the selected item and property.

Swaps and Scripts

Use the correct form for each context.

Property replacement

Use the placeholder syntax.

\(mySwap)

Use this form in supported titles, command fields, event fields, addresses, and payloads.

Script variable

Use the Swap name directly.

console.log(mySwap)
mySwap = "New value"

Scripts expose valid Swap names as variables. Built-in function and status names are reserved.

Do not confuse them

Swaps and Shared Values solve different problems.

Swaps

Runtime data.

A Swap stores a named value that commands, events, titles, paths, payloads, and Scripts can use while the scene runs.

Shared Values

An editing view.

Shared Values collect related settings from selected items, commands, and events so they can be edited together.

Open the Shared Values guide →

Troubleshooting

If a Swap is not replaced or does not update the panel.

Check the syntax.

Use exactly \(SwapName), including the backslash and both parentheses.

Check the name.

Names must match exactly. Confirm that the Swap exists in a SwapTable of the active scene.

Check the field.

Not every text field supports replacement. A recognized Swap is highlighted in supported editors.

Distinguish reference from selection.

Enter the plain name when a command asks which Swap to change. Use placeholder syntax when its value should be inserted.

Check reserved names.

Do not use names reserved for Script functions, MIDI values, received values, or item status variables.

Check panel status.

Enable Panel Check Status when dependent lights, labels, protection, or item states should update immediately.

Check nested values.

If one Swap contains another placeholder, confirm that both names exist and that the consuming context resolves nested replacement.