Skip to content

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

  1. Go to Settings → Macros (either under the 'User' subsection, or under the 'Show', or in 'Global Settings')
  2. Click +
  3. In the Shortcut field, press the key or key combination you want to assign
  4. 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
  5. Click Save Settings to apply the changes

Interface of the Macros Tab

Macros

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 name and layer — useful when multiple templates share the same name across different layers.
  • Page #3 uses a template object with path and system: 'COMPOSER' — the macro resolves the template exclusively within the Composer render engine.