Stream Deck configuration
The Stream Deck device configuration is described in this section
See the corresponding External Devices > Stream Deck section for the user feature description.
A single setting configures the Stream Deck device:
streamdeck.profile
This setting must be exposed as object, which brings the JSON-notation editor:
The configuration is made of layouts. A layout allows defining the keys and folders to display on the Stream Deck device, such as in this example:
{
"Enabled": true,
"Layouts": [
{
"Name": "Small Deck",
"KeyCountX": 5,
"KeyCountY": 3,
"Folders": [
{
"Name": "Home",
"IsDefault": true,
"Rows": [
[
{
"Type": "slot",
"Slot": "100@alphacomsolution.com"
},
{
"Type": "slot",
"Slot": "101@alphacomsolution.com"
},
{
"Type": "slot",
"Slot": "102@alphacomsolution.com"
},
{},
{
"Type": "folder",
"Folder": "Home"
}
],
[
{
"Type": "slot",
"Slot": "200@alphacomsolution.com"
},
{
"Type": "slot",
"Slot": "201@alphacomsolution.com"
},
{
"Type": "slot",
"Slot": "202@alphacomsolution.com"
},
{},
{
"Type": "folder",
"Folder": "Calls"
}
],
[
{},
{},
{},
{
"Type": "callstatus"
},
{
"Type": "focus"
}
]
]
},
{
"Name": "Calls",
"Rows": [
[
{
"Type": "callbox",
"CallBox": "C1.1"
},
{
"Type": "callbox",
"CallBox": "C1.2"
},
{
"Type": "callbox",
"CallBox": "C1.3"
},
{},
{
"Type": "folder",
"Folder": "Home"
}
],
[
{
"Type": "callbox",
"CallBox": "C2.1"
},
{
"Type": "callbox",
"CallBox": "C2.2"
},
{
"Type": "callbox",
"CallBox": "C2.3"
},
{},
{
"Type": "folder",
"Folder": "Calls"
}
],
[
{},
{},
{},
{},
{
"Type": "focus"
}
]
]
}
]
}
]
}
A layout is made of one or multiple folders, one of them being marked as the default folder. A folder is made of multiple rows (from top to bottom) of keys (from left to right). Empty keys can be configured with and empty node {}
.
While a single layout is enough to use the Stream Deck, one can configure multiple layouts so that the system adapts to different Stream Deck setups (Mini, MK.2, XL, etc.): a layout that does specify a deck dimension (KeyCountX
& KeyCountY
) that matches is used preferably, while Nomad tries to use one that does not specify any when no matching dimension is found.
Additional properties are available to configure the Streamdeck behaviour, such as the MinFontSize
and MaxFontSize
, for example, allowing to automatically adjust the font size to fit more text within the keys.
A more complex example (with more key types) is available here: streamdeck_config_sample.json.
This sample can be used (after update to use the system slots/keys/etc) as the default value for the setting streamdeck.profile
The Stream Deck layout configuration fine tuning for each profile is done through the CAS. A section dedicated to its configuration is available in user profiles and templates > Stream Deck Fine Tuning.
The setting's value must comply with the following JSON schema, that can be specified when creating the setting:
{
"properties": {
"Enabled": {
"description": "Enable the Stream Deck device",
"type": "boolean"
},
"Layouts": {
"description": "Keyboard layouts; the most appropriate is selected, based on its KeyCountX and KeyCountY properties",
"type": "array",
"items": {
"type": "object",
"properties": {
"Name": {
"description": "The layout name",
"type": "string"
},
"KeyCountX": {
"description": "Number of keys horizontal; when specified, Nomad uses this layout only if the keyboard's KeyCountX matches",
"type": "number"
},
"KeyCountY": {
"description": "Number of keys vertical; when specified, Nomad uses this layout only if the keyboard's KeyCountY matches",
"type": "number"
},
"Folders": {
"description": "Folders (i.e. layers of keys; adding multiple layers allows accessing more keys than phycically available",
"type": "array",
"items": {
"type": "object",
"properties": {
"Name": {
"description": "The folder name",
"type": "string"
},
"IsDefault": {
"description": "Marks the folder as default; the one that is initially displayed",
"type": "boolean"
},
"KeyGroupId": {
"description": "An optional Key Group Id (from CAS) that is attached to this folder. Keys from the group are displayed in all the available Stream Deck keys. Defining other keys (especially keys.next & keys.previous) is possible.",
"type": "string"
},
"Rows": {
"description": "Rows of keys, stacked vertically",
"type": "array",
"items": {
"description": "Keys, stacked horizontally",
"type": "array",
"items": {
"description": "Key. Use an empty object {} to define an empty key.",
"type": "object",
"properties": {
"Type": {
"description": "The key type",
"type": "string",
"enum": [
"slot",
"callbox",
"callbox.hold",
"callbox.end",
"callfocus",
"callfocus.hold",
"callfocus.end",
"callstatus",
"audiodevice",
"volume.down",
"volume.up",
"dialpad",
"focus",
"folder",
"keys.previous",
"keys.next",
"silencetones"
]
},
"Slot": {
"description": "The slot SipId; required when the type is slot",
"type": "string"
},
"Callbox": {
"description": "The callbox entry name (such as C1.4); required when the type is callbox, callbox.hold, callbox.end, volume.down or volume.up",
"type": "string"
},
"Callfocus": {
"description": "The callfocus entry name (such as C1.4); required when the type is callfocus, callfocus.hold or callfocus.end",
"type": "string"
},
"Folder": {
"description": "The folder name; required when the type is folder",
"type": "string"
},
"AudioSources": {
"description": "Audio source names; optional when the type is dialpad. All the available Audio Sources are used by default.",
"type": "array",
"items": {
"description": "Audio source name, such as C1, C2, F1, etc.",
"type": "string"
}
},
"Audiosource": {
"description": "The audio source (such as F1) associated with the audio device and volume control buttons; required when the type is audiodevice, volume.down or volume.up.",
"type": "string"
}
}
}
}
}
},
"required": [
"Name"
]
}
}
}
},
"minItems": 1
},
"IsShowDialpadOnScreen": {
"description": "Shows the dialpad on the desktop screen interface when the Dial Pad button is pressed on Streamdeck.",
"type": "boolean"
},
"MinFontSize": {
"description": "The minimum font size to use. Default is 10.",
"type": "interger"
},
"MaxFontSize": {
"description": "The maximum font size to use. Default is 20.",
"type": "interger"
},
"IsFlashOnPTTIn": {
"description": "Flashes the Callbox keys on radio PTT In conversation state.",
"type": "boolean"
},
"IsFlashOnVAD": {
"description": "Flashes the Callbox keys on VAD events.",
"type": "boolean"
}
},
"required": [
"Enabled",
"Layouts"
]
}