Settings: Macros
Macros
Macros allow you to extend keyboard shortcuts and create custom functionality assigned to a shortcut. They can be configured on three hierarchy levels - User Settings, Show Settings and Global Settings - which define their scope and priority.
Macro Hierarchy
Erizos Studio supports a hierarchical macro structure:
| Level | Description | Priority |
|---|---|---|
| User Macros | Defined for the current user. Override any Show-level and Global macros with the same name. Ideal for personal workflow customization. | Highest |
| Show Macros | Defined within a specific show configuration. Used for show-specific actions or triggers. Overrides any Global macros with the same name. | Medium |
| Global Macros | Available system-wide for all users and shows. Typically used for shared operations or maintenance routines. | Lowest |
Creating a Macro
- Go to Settings → Macros (either under the 'User' subsection, or under the 'Show', or in 'Global Settings')
- Click +
- In the Shortcut field, press the key or key combination you want to assign
- Click on the Macro field, press the Edit button, then type the command to be executed (see Macro list below) in the Macro Editor field
- Click Save Settings to apply the changes
Interface of the Macros Tab
| Icon | Action | Description |
|---|---|---|
| Import | Click the Import icon and select a .ezmacros file to import macros |
|
| Export | Click the Export icon and choose a location to save the .ezmacros file |
|
| Filter | Click the Filter icon and type a keyword — the list will display all macros (from all levels) whose names include that word | |
| Duplicate | Duplicate the selected macro within the current tab | |
| Copy | Copy the selected macro to paste it into another level's macros list | |
| Edit | Click to edit one or multiple macros in the current list | |
| Delete | Click to delete the selected macro | |
| Create | Click to create a new Macro |
Macro List
| Action | Description |
|---|---|
TakePage pageID |
Takes (pushes in) a Page by providing its Page ID |
Page Macros Examples
The Api.playlist.createPage and Api.playlist.createPages methods support flexible template referencing. A template can be specified in the following ways:
| Format | Example | Description |
|---|---|---|
| ID | template: '6943b59863e271273a05e137' |
Reference a template directly by its unique ID |
| Name | template: 'MY_COOL_NAME' |
Reference a template by its display name |
| Path | template: '/SOME/AWESOME/PATH' |
Reference a template by its file system path |
| Object | template: { name: '...', layer: '...' } |
Reference a template by name scoped to a specific layer |
| Object with system | template: { path: '...', system: 'COMPOSER' } |
Reference a template by path, filtered by render system |
Using the system field
The system field is useful when templates from different render engines share the same name — for example, a Singular template and a Composer template both named "Weather". By specifying system, the macro first filters by render engine, then matches by name or path, ensuring the correct template is resolved.
Example 1 — Create a single page using a template ID
await Api.playlist.createPage({
template: '6943b59863e271273a05e137',
name: 'CREATED_FROM_MACROS #1',
description: 'Main election results page',
color: '#FF5733',
num: 9999
}, { after: 1005 });
The page is inserted after the page with ID 1005. The template is identified by its unique MongoDB ObjectID.
Example 2 — Create multiple pages using different template reference formats
await Api.playlist.createPages([
{
template: {
name: 'Demo Composition',
layer: '5e7fa753-6160-4b1c-a1bd-0f10e1315609'
},
name: 'CREATED_FROM_MACROS #2',
description: 'Second results breakdown',
color: '#2ECC71',
num: 9998
},
{
template: {
path: '/Users/a1/Desktop/ElectionTable_Ver05_ograf_v1/BlueBook_Ver03_ograf-v1',
system: 'COMPOSER'
},
name: 'CREATED_FROM_MACROS #3',
description: 'Summary page',
color: '#9B59B6',
num: 9997
}
], { before: 1000 });
Both pages are inserted before the page with ID 1000.
- Page #2 uses a template object with
nameandlayer— useful when multiple templates share the same name across different layers. - Page #3 uses a template object with
pathandsystem: 'COMPOSER'— the macro resolves the template exclusively within the Composer render engine.
