Hotkey HUB

Config

Root configuration schema that defines the entire setup including remote PCs, shortcuts, RGB settings, and macros. All sections must follow their respective schemas strictly.

Object containing the following properties:

Property Description Type Default
ips (*) Maps PC names to IP addresses or host names. If port is omited default is usedExample value: {“PC1”: “192.168.1.100”, “PC2”: “domain.name”, “PC3:”domain.or.ip:5000"} Each key identifies a remote PC, value is its IP/Domain. The address must be accessible from this PC. For internet access, use VPN or tunneling (e.g. ngrok.com). Ips
clientPort HTTPS port for secure client PC connections. Must be accessible and not blocked by firewalls. Default is 5000 if not specified. number 5000
rgb RGB keyboard lighting for shortcut feedback. Changes key colors during execution. You need to run openrgb server for it, which you can download from https://openrgb.org. Run the application, go to the SDK server tab and click on Start server. Needs OpenRGB server and compatible keyboard, the supported keyboards are here: https://openrgb.org/devices.html. For Linux just install openrgb via your package manager and run the openrgb from root with you default service manager like systemd Rgb
name Name of this schema to print in logs string
combinations (*) Array of shortcut definitions that map keyboard combinations to command sequences. Each shortcut must have a unique key combination. This is the main configuration that defines what happens when specific keys are pressed. Shortcuts
delays Global delays config between commands. If ommited commands will run instantly after each other GlobalDelay
macros A map of macros where a key is the macro name and value is its body MacrosList

(*) Required.

Ips

Maps PC names to IP addresses or host names. If port is omited default is usedExample value: {“PC1”: “192.168.1.100”, “PC2”: “domain.name”, “PC3:”domain.or.ip:5000"} Each key identifies a remote PC, value is its IP/Domain. The address must be accessible from this PC. For internet access, use VPN or tunneling (e.g. ngrok.com).

Object record with dynamic keys:

Shortcut

This allows to bind a shortcut to a commands list and define execution behaviour. E.g. press alt+1 on local PC to send a mouseClick on a remote one

Object containing the following properties:

Property Description Type Default
delayAfter Delay (ms) after each command. Ensures commands have time to complete. number
delayBefore Delay (ms) before each command. Helps coordinate timing between different shortcuts. number
name (*) Name shown during startup. Helps identify the shortcut’s purpose. string
shortCut (*) Keyboard shortcut format: Modifier+Key (e.g., Alt+1, Ctrl+Shift+A). Needs at least one modifier. Max 3 modifiers (e.g., Ctrl+Alt+Shift+S). string
commands (*) Commands to run when shortcut triggered. Executes in order unless parallel execution specified. Array of UnknownCommand items
behaviour Controls the the behaviour of the process when you press again the shortcut and the old process is still running. 'stacking' \| 'pausable' \| 'restart' or BehaviourObject 'stacking'

(*) Required.

UnknownCommand

A command that would be executed on this machine

Union of the following possible types:

RemoteCommand

One of the commands that would be sent to a remote machine specified in destination property

Union of the following possible types:

KeyboardCommands

Keyboard-related remote commands

Union of the following possible types:

MouseCommands

Mouse-related remote commands

Union of the following possible types:

ProcessCommands

Process-related remote commands

Union of the following possible types:

WindowCommands

Window-related remote commands

Union of the following possible types:

LocalCommand

A local command that would be executed on this machine

Union of the following possible types:

ExceptionLocalCommand

Allows to execute statements in try block and fail silently by keeping next commands after this command executing

Object containing the following properties:

Property Description Type
try (*) Commands to execute if the condition is true Array of UnknownCommand items
catch Execute this commands on catch block. If catch is omited, commands in the try block will fail silently Array of UnknownCommand items
finally Execute this command after try block, whether it fails/succeed Array of UnknownCommand items

(*) Required.

ExpressionLocalCommand

Allows to create/assign a variable by expression.

Object containing the following properties:

Property Description Type
assignVariable (*) Name of the variable to store the expression result. This variable can be referenced in subsequent commands using {{variableName}} syntax. string
expression (*) JS like expression that evaluates to some values. E.g. x*2. string

(*) Required.

IfLocalCommand

Conditional execution of commands based on a boolean condition. If the condition is true, executes the “then” commands, otherwise executes the “else” commands if they exist.

Object containing the following properties:

Property Description Type
if (*) JS like expression that evaluates to some values. E.g. x*2. string
then (*) Commands to execute if the condition is true Array of UnknownCommand items
else Optional commands to execute if the condition is false Array of UnknownCommand items

(*) Required.

LoopLocalCommand

Allow to run same commands multiple time or in iteration or loop

Object containing the following properties:

Property Description Type
commands (*) Sequence of commands to repeat in the loop. Each iteration will execute all commands in order. Array of UnknownCommand items
loop (*) Number of times to repeat the commands sequence. Positive number: Executes that many iterations. Negative number: Runs indefinitely until manually stopped. If the parent command is pausable, pressing the shortcut again will exit the loop.If string is passed evaluated that string as expresssion and repeat the loop while it’s true number \| string

(*) Required.

MacroLocalCommand

Executes a predefined macro, which is a reusable sequence of commands. Similar to a function call, macros can accept parameters through variables. This helps avoid duplicating complex command sequences and makes configurations more maintainable.

Object containing the following properties:

Property Description Type
macro (*) Name of the macro to execute, which must match a key defined in the macros section. Macros help reduce configuration repetition by reusing command sequences. string
variables Variables to pass to the macro. Object where keys are variable names and values are their values. Values can be strings or numbers and must match the types defined in the macro’s variables section. MacroLocalCommandVariables
delayAfter Delay (ms) after command completes, before next command. Ensures command has time to take effect. VariableValue or number
delayBefore Delay (ms) before executing command. Helps create precisely timed sequences. VariableValue or number

(*) Required.

PrintLocalCommand

Print the expressions to log

Object containing the following properties:

Property Description Type
print (*) JS like expression that evaluates to some values. E.g. x*2. string

(*) Required.

ReloadConfigLocalCommand

Reloads config or loads config from a new place

Union of the following possible types:

ShuffleLocalCommand

Allow to run same commands in specific order

Object containing the following properties:

Property Description Type
commands (*) Sequence of commands to repeat in the loop. Each iteration will execute all commands in order. Array of UnknownCommand items
shuffle (*) Random = shuffle array so it takes next element randomly. Reverse = each time it changes the order from first to last, then from last to first. Straight = Default order from first to last 'random' \| 'reverse' \| 'straight'

(*) Required.

ThreadsLocalCommand

Allows to execute commands in parallel. Or in threads.

Object containing the following properties:

Property Description Type
threads (*) Command sequences to run in parallel. Each thread runs sequentially while threads run simultaneously. Array of ThreadLocal items

(*) Required.

TransactionLocalCommand

Run commands in a transaction. Prevents concurrent transactions with same name. Uses PC name for remote commands. Ensures atomic execution.

Object containing the following properties:

Property Description Type
commands (*) Commands to execute atomically in this transaction. All commands either succeed or fail together. Array of UnknownCommand items
transaction (*) Unique name for the transaction. Helps with logging and debugging transaction execution.If transaction is null, all commands in this block would run despite other commands on the destination pc VariableValue, string or null

(*) Required.

GetInfoCommand

Allows to execute getRequest on remote schema and assign it to a variable

Union of the following possible types:

GetMonitorCommands

Allows to get information about display and its windows

Union of the following possible types:

GetProcessCommands

Handles processes

Union of the following possible types:

GetWindowCommands

Allows to get information about windows, transform and move them

Union of the following possible types:

PingCommand

Pings this client to test whether it’s working

Object containing the following properties:

Property Description Type
destination (*) Remote PC from ips or aliases section to send this command to VariableValue or string
get (*) 'ping'
assignVariable (*) Assign result to a variable. If array is passsed then the result is gonna be destruted into corresponding variable. E.g. if result is [1,2] and assignVariable = [“a”,“b”], then a = 1, b = 2. If array length missmatch, an exception is thrown Array<string> \| string

(*) Required.

FocusProcessWindowRemoteCommand

Brings a window to front and gives it focus by process ID. Useful for window automation and ensuring windows are active.

Object containing the following properties:

Property Description Type
destination (*) Remote PC from ips or aliases section to send this command to VariableValue or string
delayAfter Delay (ms) after command completes, before next command. Ensures command has time to take effect. VariableValue or number
delayBefore Delay (ms) before executing command. Helps create precisely timed sequences. VariableValue or number
performOnRemote (*) 'focusProcessWindow'
variables (*) FocusProcessWindowRemoteCommandVariable

(*) Required.

FocusProcessWindowRemoteCommandVariable

Object containing the following properties:

Property Description Type
pid (*) Process ID (PID) of the window to focus. Can be obtained from findPidsByName command or launch command with assignId. number or VariableValue

(*) Required.

FocusWindowRemoteCommand

Brings a window to the foreground and gives it focus based on its window ID. Window IDs can be retrieved using findProcessWindows or findProcessesWindows commands.

Object containing the following properties:

Property Description Type
destination (*) Remote PC from ips or aliases section to send this command to VariableValue or string
delayAfter Delay (ms) after command completes, before next command. Ensures command has time to take effect. VariableValue or number
delayBefore Delay (ms) before executing command. Helps create precisely timed sequences. VariableValue or number
performOnRemote (*) 'focusWindow'
variables (*) FocusWindowRemoteCommandVariable

(*) Required.

FocusWindowRemoteCommandVariable

Object containing the following properties:

Property Description Type
wid (*) Window ID to focus. Can be obtained from findProcessWindows or findProcessesWindows commands. number or VariableValue

(*) Required.

KeyPressRemoteCommand

Simulates keyboard input on the remote PC by sending key press events. Supports single keys, key combinations, and modifier keys with customizable timing and randomness. Use this for automating keyboard input or triggering keyboard shortcuts.

Object containing the following properties:

Property Description Type
destination (*) Remote PC from ips or aliases section to send this command to VariableValue or string
delayAfter Delay (ms) after command completes, before next command. Ensures command has time to take effect. VariableValue or number
delayBefore Delay (ms) before executing command. Helps create precisely timed sequences. VariableValue or number
performOnRemote (*) 'keyPress'
variables (*) KeyPressRemoteCommandVariable

(*) Required.

KeyPressRemoteCommandVariable

Object containing the following properties:

Property Description Type Default
key (*) Key(s) to press. Can be a single key or array of keys for multiple presses. Key or Array of Key items or VariableValue
duration How long to hold the key down in milliseconds. Recommended minimum 50ms to ensure reliable key registration. number (≥50) or VariableValue
durationDeviation Adds randomness to key press duration. Value is the maximum +/- deviation in milliseconds. Useful for simulating human-like input patterns. number (≥0) or VariableValue 0
holdKeys Modifier keys to hold (e.g., Alt for Alt+1, Ctrl+Shift for Ctrl+Shift+A). Can be a key or key array. Key or Array of Key items or VariableValue

(*) Required.

KillExeByNameRemoteCommand

Terminates all processes with the specified executable name. Use with caution - kills all instances of the program.

Object containing the following properties:

Property Description Type
destination (*) Remote PC from ips or aliases section to send this command to VariableValue or string
delayAfter Delay (ms) after command completes, before next command. Ensures command has time to take effect. VariableValue or number
delayBefore Delay (ms) before executing command. Helps create precisely timed sequences. VariableValue or number
performOnRemote (*) 'killExeByName'
variables (*) KillExeByNameRemoteCommandVariable

(*) Required.

KillExeByNameRemoteCommandVariable

Object containing the following properties:

Property Description Type
name (*) Name of the executable file to terminate. Example: “Chrome.exe”. Case-sensitive on some operating systems. string or VariableValue

(*) Required.

KillExeByPidRemoteCommand

Terminates a specific process by its PID on the remote PC. More precise than killByName as it targets a single specific process.

Object containing the following properties:

Property Description Type
destination (*) Remote PC from ips or aliases section to send this command to VariableValue or string
delayAfter Delay (ms) after command completes, before next command. Ensures command has time to take effect. VariableValue or number
delayBefore Delay (ms) before executing command. Helps create precisely timed sequences. VariableValue or number
performOnRemote (*) 'killExeByPid'
variables (*) KillExeByPidRemoteCommandVariable

(*) Required.

KillExeByPidRemoteCommandVariable

Object containing the following properties:

Property Description Type
pid (*) Process ID (PID) of the process to terminate. Example: 1234. Must be a valid running process ID. number or VariableValue

(*) Required.

LaunchExeRemoteCommand

Starts a program on a remote PC.

Object containing the following properties:

Property Description Type
destination (*) Remote PC from ips or aliases section to send this command to VariableValue or string
delayAfter Delay (ms) after command completes, before next command. Ensures command has time to take effect. VariableValue or number
delayBefore Delay (ms) before executing command. Helps create precisely timed sequences. VariableValue or number
performOnRemote (*) 'launchExe'
assignVariable If provided, would assign launched process id to this variable string or VariableValue
variables (*) LaunchExeRemoteCommandVariable

(*) Required.

LaunchExeRemoteCommandVariable

Object containing the following properties:

Property Description Type Default
path (*) Full absolute path to the executable file to run on the remote PC. string or VariableValue
arguments Command-line arguments to pass to the executable. Each array element is a separate argument. Array<string> or VariableValue []
waitTillFinish Blocks current execution context until this timeout passes or process is finished, whichever comes first. boolean or VariableValue false
waitTimeout Awaits this timeout to pass to get processs id. If waitTillFinish is true, awaits maxium of this timeout. If process failed to finish before it, throws error. number or VariableValue 300

(*) Required.

LeftMouseClickRemoteCommand

Performs a left mouse click at the current cursor position without moving the mouse. Use when cursor is already positioned.

Object containing the following properties:

Property Description Type
destination (*) Remote PC from ips or aliases section to send this command to VariableValue or string
delayAfter Delay (ms) after command completes, before next command. Ensures command has time to take effect. VariableValue or number
delayBefore Delay (ms) before executing command. Helps create precisely timed sequences. VariableValue or number
performOnRemote (*) 'leftMouseClick'

(*) Required.

MouseClickRemoteCommand

Performs a left mouse click at the current cursor position without moving the mouse. Use when cursor is already positioned.

Object containing the following properties:

Property Description Type
destination (*) Remote PC from ips or aliases section to send this command to VariableValue or string
delayAfter Delay (ms) after command completes, before next command. Ensures command has time to take effect. VariableValue or number
delayBefore Delay (ms) before executing command. Helps create precisely timed sequences. VariableValue or number
performOnRemote (*) 'mouseClick'
variables (*) MouseClickRemoteCommandVariables

(*) Required.

MouseClickRemoteCommandVariables

Object containing the following properties:

Property Description Type
button (*) Identifier of a mouse button 'LEFT' \| 'RIGHT' \| 'MIDDLE' or VariableValue

(*) Required.

MouseMoveClickRemoteCommand

Moves mouse cursor to specified screen coordinates and performs a left-click. Combines movement and clicking into one action.

Object containing the following properties:

Property Description Type
destination (*) Remote PC from ips or aliases section to send this command to VariableValue or string
delayAfter Delay (ms) after command completes, before next command. Ensures command has time to take effect. VariableValue or number
delayBefore Delay (ms) before executing command. Helps create precisely timed sequences. VariableValue or number
performOnRemote (*) 'mouseMoveLeftClick'
variables (*) MouseMoveClickRemoteCommandVariable

(*) Required.

MouseMoveClickRemoteCommandVariable

Object containing the following properties:

Property Description Type Default
x (*) X coordinate for mouse cursor. number or VariableValue
y (*) Y coordinate for mouse cursor. number or VariableValue
pixelsPerIteration Pixels to move per iteration for smooth movement. number or VariableValue 20

(*) Required.

MouseMoveRemoteCommand

Moves mouse cursor to specified screen coordinates.

Object containing the following properties:

Property Description Type
destination (*) Remote PC from ips or aliases section to send this command to VariableValue or string
delayAfter Delay (ms) after command completes, before next command. Ensures command has time to take effect. VariableValue or number
delayBefore Delay (ms) before executing command. Helps create precisely timed sequences. VariableValue or number
performOnRemote (*) 'mouseMove'
variables (*) MouseMoveClickRemoteCommandVariable

(*) Required.

SetKeyboardLayoutRemoteCommand

Simulates keyboard input on the remote PC by sending key press events. Supports single keys, key combinations, and modifier keys with customizable timing and randomness. Use this for automating keyboard input or triggering keyboard shortcuts.

Object containing the following properties:

Property Description Type
destination (*) Remote PC from ips or aliases section to send this command to VariableValue or string
delayAfter Delay (ms) after command completes, before next command. Ensures command has time to take effect. VariableValue or number
delayBefore Delay (ms) before executing command. Helps create precisely timed sequences. VariableValue or number
performOnRemote (*) 'setKeyboardLayout'
variables (*) KeyboardLayoutCommandVariable

(*) Required.

SetWindowBoundsRemoteCommand

Sets window width height and x y position

Object containing the following properties:

Property Description Type
destination (*) Remote PC from ips or aliases section to send this command to VariableValue or string
delayAfter Delay (ms) after command completes, before next command. Ensures command has time to take effect. VariableValue or number
delayBefore Delay (ms) before executing command. Helps create precisely timed sequences. VariableValue or number
performOnRemote (*) 'setWindowBounds'
variables (*) SetWindowBoundsRemoteCommandVariable

(*) Required.

SetWindowBoundsRemoteCommandVariable

Object containing the following properties:

Property Description Type
wid (*) Window id number or VariableValue
bounds (*) WindowPropertiesVariable or VariableValue

(*) Required.

TypeTextRemoteCommand

Types text on the remote PC.

Object containing the following properties:

Property Description Type
destination (*) Remote PC from ips or aliases section to send this command to VariableValue or string
delayAfter Delay (ms) after command completes, before next command. Ensures command has time to take effect. VariableValue or number
delayBefore Delay (ms) before executing command. Helps create precisely timed sequences. VariableValue or number
performOnRemote (*) 'typeText'
variables (*) TypeTextRemoteCommandVariable

(*) Required.

TypeTextRemoteCommandVariable

Object containing the following properties:

Property Description Type Default
text (*) Any string to type string or VariableValue
keyDelay Delay between keystroke in milliseconds. By default types as fast as possible, around 40ms per char number or VariableValue 100
keyDelayDeviation Deviation for randomness of delay. E.g if keyDelay = 100 and deviation = 0.2. Then value would be 80-120ms number (>0) or VariableValue 0.1

(*) Required.

MacroLocalCommandVariables

Variables to pass to the macro. Object where keys are variable names and values are their values. Values can be strings or numbers and must match the types defined in the macro’s variables section.

Object record with dynamic keys:

GetActiveWindowCommand

Get information about current active window

Object containing the following properties:

Property Description Type
destination (*) Remote PC from ips or aliases section to send this command to VariableValue or string
get (*) 'getActiveWindow'
assignVariable (*) Assign result to a variable. If array is passsed then the result is gonna be destruted into corresponding variable. E.g. if result is [1,2] and assignVariable = [“a”,“b”], then a = 1, b = 2. If array length missmatch, an exception is thrown Array<string> \| string

(*) Required.

GetMonitorInfoCommand

Get monitor info

Object containing the following properties:

Property Description Type
destination (*) Remote PC from ips or aliases section to send this command to VariableValue or string
get (*) 'getMonitorInfo'
assignVariable (*) Assign result to a variable. If array is passsed then the result is gonna be destruted into corresponding variable. E.g. if result is [1,2] and assignVariable = [“a”,“b”], then a = 1, b = 2. If array length missmatch, an exception is thrown Array<string> \| string
variables (*) MonitorVariablesCommand

(*) Required.

GetMonitorsCommand

List monitors

Object containing the following properties:

Property Description Type
destination (*) Remote PC from ips or aliases section to send this command to VariableValue or string
get (*) 'getMonitors'
assignVariable (*) Assign result to a variable. If array is passsed then the result is gonna be destruted into corresponding variable. E.g. if result is [1,2] and assignVariable = [“a”,“b”], then a = 1, b = 2. If array length missmatch, an exception is thrown Array<string> \| string

(*) Required.

GetPidsByNameCommand

Gets list of process ids that match criteria

Object containing the following properties:

Property Description Type
destination (*) Remote PC from ips or aliases section to send this command to VariableValue or string
get (*) 'getPidsByName'
assignVariable (*) Assign result to a variable. If array is passsed then the result is gonna be destruted into corresponding variable. E.g. if result is [1,2] and assignVariable = [“a”,“b”], then a = 1, b = 2. If array length missmatch, an exception is thrown Array<string> \| string
variables (*) GetPidsByNameCommandVariables

(*) Required.

GetPidsByNameCommandVariables

Object containing the following properties:

Property Description Type
name (*) Name of the executable file to search for. Example: “Chrome.exe”. Case-sensitive on some operating systems. string or VariableValue

(*) Required.

GetProcessInfoCommand

Get process’s main window

Object containing the following properties:

Property Description Type
destination (*) Remote PC from ips or aliases section to send this command to VariableValue or string
get (*) 'getProcessInfo'
assignVariable (*) Assign result to a variable. If array is passsed then the result is gonna be destruted into corresponding variable. E.g. if result is [1,2] and assignVariable = [“a”,“b”], then a = 1, b = 2. If array length missmatch, an exception is thrown Array<string> \| string
variables (*) GetProcessInfoCommandVariables

(*) Required.

GetProcessInfoCommandVariables

Object containing the following properties:

Property Type
pid (*) number (int, >0) or VariableValue

(*) Required.

GetWindowCommand

Get information about window with specified window id

Object containing the following properties:

Property Description Type
destination (*) Remote PC from ips or aliases section to send this command to VariableValue or string
get (*) 'getWindow'
assignVariable (*) Assign result to a variable. If array is passsed then the result is gonna be destruted into corresponding variable. E.g. if result is [1,2] and assignVariable = [“a”,“b”], then a = 1, b = 2. If array length missmatch, an exception is thrown Array<string> \| string
variables (*) WindowIdVariablesCommand

(*) Required.

GetWindowsIdByMultiplePidsCommandVariables

Object containing the following properties:

Property Type
pids (*) Array<number (_int, >0_)> or VariableValue

(*) Required.

GetWindowsIdByMutliplePidsCommand

Get all windows with their IDs for a concrete process id

Object containing the following properties:

Property Description Type
destination (*) Remote PC from ips or aliases section to send this command to VariableValue or string
get (*) 'getWindowsIdByMultiplePids'
assignVariable (*) Assign result to a variable. If array is passsed then the result is gonna be destruted into corresponding variable. E.g. if result is [1,2] and assignVariable = [“a”,“b”], then a = 1, b = 2. If array length missmatch, an exception is thrown Array<string> \| string
variables (*) GetWindowsIdByMultiplePidsCommandVariables

(*) Required.

GetWindowsIdByPidCommand

Get all windows with their IDs for a concrete process id

Object containing the following properties:

Property Description Type
destination (*) Remote PC from ips or aliases section to send this command to VariableValue or string
get (*) 'getWindowsIdByPid'
assignVariable (*) Assign result to a variable. If array is passsed then the result is gonna be destruted into corresponding variable. E.g. if result is [1,2] and assignVariable = [“a”,“b”], then a = 1, b = 2. If array length missmatch, an exception is thrown Array<string> \| string
variables (*) GetWindowsIdByPidCommandVariables

(*) Required.

GetWindowsIdByPidCommandVariables

Object containing the following properties:

Property Type
pid (*) number (int, >0) or VariableValue

(*) Required.

BehaviourObject

Object containing the following properties:

Property Description Type
groupWith If type is “restart” or “pausable” then groupWith will restart/pause all shortcuts with the same name string
type (*) Stacking = Current process will keep running and new one will spawn as well. Since all executable items run in transaction by default.The next iteration will wait until current is finished. The default behaviour
Pausable = Current process will stop running and new one won’t start.
Restart = Current process will stop running and new one will start
'stacking' \| 'pausable' \| 'restart'

(*) Required.

GlobalDelay

Global delays config between commands. If ommited commands will run instantly after each other

Object containing the following properties:

Property Description Type Default
beforeCommand Base delay (in milliseconds) before each command. Can be randomized using standardDeviation. number 0
afterCommand Base delay (in milliseconds) after each command. Can be randomized using standardDeviation. number 0
standardDeviation Controls randomness of global before/after delays.Final delay = base ± (base * standardDeviation). E.g. 0.2 with 1000ms delay gives random delay between 800ms and 1200ms. number (>0, ≤1) 0
commandDeviation Controls randomness of delays before/after on each command. This doesn’t affect global delays, only if a command has its own delayBefore or delayAfter property.Final delay = base ± (base * standardDeviation). E.g. 0.2 with 1000ms delay gives random delay between 800ms and 1200ms. number (>0, ≤1) 0
randomHugeDelayDeviation Deviation factor for huge delay. Applied only when randomHugeDelayChance is triggered. Final delay = base ± (base * standardDeviation) + (hugeDelay ± (hugeDelay * randomHugeDelayDiviation)). number (>0, ≤1) 0
randomHugeDelay Extra delay (in milliseconds) added on top of standard delays. Only applies when randomHugeDelayChance is triggered. number (>0) 0
randomHugeDelayChance Probability (0 to 1) of applying a random huge delay after the standard delay. number (>0, ≤1) 0

All properties are optional. (optional)

Key

One of the keyboard keys.

Enum, one of the following possible values:

Expand for full list of 139 values

KeyboardLayoutCommandVariable

Object containing the following properties:

Property Description Type
layout (*) Keyboard layout KeyboardLayoutValue or VariableValue

(*) Required.

KeyboardLayoutValue

Keyboard layout

Enum, one of the following possible values:

Expand for full list of 164 values

MacroArrayVariableType

Union of the following possible types:

MacroDefinition

A reusable command sequence that can accept variables. Similar to a function that runs a predefined set of commands.

Object containing the following properties:

Property Description Type
commands (*) Set of commands for this macro Array of UnknownCommand items
variables Set of variables descriptors for macro MacroVariablesDescription

(*) Required.

MacroObjectVariableType

Object record with dynamic keys:

MacroPrimitiveVariableType

Union of the following possible types:

MacroVariableType

To validate the type, or cast from env variables

Union of the following possible types:

MacroVariableValue

Variable description for macro

Object containing the following properties:

Property Description Type
type (*) To validate the type, or cast from env variables MacroVariableType
optional If set to true, the key is be removed is var is not passed boolean
default Default value if value is not passed. Optional should be set to true any

(*) Required.

MacroVariablesDescription

Set of variables descriptors for macro

Object record with dynamic keys:

MacrosList

A map of macros where a key is the macro name and value is its body

Object record with dynamic keys:

MonitorVariablesCommand

Object containing the following properties:

Property Type
mid (*) number (int, ≥0) or VariableValue

(*) Required.

Rgb

RGB keyboard lighting for shortcut feedback. Changes key colors during execution. You need to run openrgb server for it, which you can download from https://openrgb.org. Run the application, go to the SDK server tab and click on Start server. Needs OpenRGB server and compatible keyboard, the supported keyboards are here: https://openrgb.org/devices.html. For Linux just install openrgb via your package manager and run the openrgb from root with you default service manager like systemd

Object containing the following properties:

Property Description Type Default
deviceName (*) Device name of the keyboard. You can extract it with “openrgb –list-devices” command. Select the name after number. Also you can check in openrgb UI in Devices Tab. string
clientName Name of this client when connecting to openrg string 'RPC'
serverPort Port of the openrgb server number 6742
serverAddr Address of the openrgb server string 'localhost'
keyMapFn Mapping of openRGB provided keyboard “key” schema. In other words input: openRgb keyboard provider key name. Output should be a string a type of “key” schema.This should be a JS expression that accept variable “x” and evaluates to a string. Allows to properly setup mapping in order to avoid exceptions like “key XXX is not present in keymap”. Default value works for keyboard brand HyperX string 'x.toLowerCase().replace(" arrow", "").replace("pause/break", "pause").replace("key: ", "").replace(" (ansi)", "").replace(" ", "_")'

(*) Required. (optional)

Shortcuts

Array of shortcut definitions that map keyboard combinations to command sequences. Each shortcut must have a unique key combination. This is the main configuration that defines what happens when specific keys are pressed.

Array of Shortcut items.

ThreadLocal

Object containing the following properties:

Property Description Type
name (*) name of the thread, required for req-id log, string (max length: 10, min length: 1)
commands (*) list of commands in this thread Array of UnknownCommand items

(*) Required.

VariableValue

Reference to a variable from a variables definition section. The value will be replaced at runtime with either: 1. A matching variable from variables.json 2. A matching environment variable 3. A variable created during execution (e.g., from assignId or expression commands)

Object containing the following properties:

Property Type
$ref (*) string

(*) Required.

Variables

Variable definitions for configuration. Values can be any type (numeric strings auto-convert to integers). Use {{varName}} to reference.

Object record with dynamic keys:

WindowIdVariablesCommand

Object containing the following properties:

Property Type
wid (*) number (int, >0) or VariableValue

(*) Required.

WindowProperties

Definition of window location and size

Object containing the following properties:

Property Description Type
x (*) x position number
y (*) y position number
width (*) width number
height (*) height number

(*) Required.

WindowPropertiesVariable

Object containing the following properties:

Property Description Type
x (*) x position number or VariableValue
y (*) y position number or VariableValue
width (*) width number or VariableValue
height (*) height number or VariableValue

(*) Required.