Space Hijack

Sometimes you may wish to hijack the space bar so that when you use it to GO, you can execute some other actions in addition to the normal GO command. This might include logging a timestamp for the go, or some custom cue list behavior.

We’ll show two examples in this chapter. The first example will create a behavior that skips disarmed cues in a simple linear cue list. The second example, which only works in QLab 4, creates visible cue announcements when cues are run.

Skip Disarmed

Here it is in action:

How it works

First, un-assign the space bar in Workspace Settings → Key Map

Key map

Next, create a Script cue and assign the space bar as its hotkey. If you use a MIDI device to trigger QLab, assign the message for your device’s GO button as the MIDI trigger for the Script cue as well:


Here’s the script for the Script cue. Be sure to un-check the box marked “Run in separate process”:

set skip to true

tell application id "com.figure53.qlab.3" to tell front workspace
  repeat until skip is false
    set thecue to last item of (selected as list)
    if the armed of thecue is false then
      set skip to false
    end if
  end repeat
end tell

Cue 16 in this workspace is quite interesting; it doesn’t run the auto-continue from the disarmed cue. This might or might not be what you want.

It’s worth noting that all but the most simple workspaces will encounter issues like cue 16. If you’re interested in a more robust method for skipping blocks of cues, check out the Skip A Cue chapter.

Cue Announcer (QLab 4.0 or later)

This example uses OSC queries in QLab to display the name and number of each triggered cue and the next selected cue. This could be useful for a backstage or stage manager’s display, for example.

Please note that this example requires the playhead and the selection to be locked together.

Here’s a screen recording of it in action, best viewed full screen:

How it works

The spacebar is hijacked as in the above example by deselecting it in Workspace Settings → Key Map. In a second cue list, a Group cue set to “start all children simultaneously” is added:

Cue announcer

This Group cue is triggered by the space bar and optionally by a MIDI trigger. It contains two Text cues, which will display the desired information, and two Network cues to set the contents of those Text cues using OSC queries.

When the Group is triggered, it first stops cue Line1. Then, it sets the text of that cue using a Network cue with this command:

/cue/Line1/text "Cue #/cue/selected/number# • #/cue/selected/listName# Triggered"

Let’s parse that out:

/cue/Line1/text sets the text of cue Line1 to the stuff contained in the following quotation marks.

#/cue/selected/number# is an OSC query which gets the number of the currently selected cue.

#/cue/selected/listName# is an OSC query which gets the list name of the currently selected cue. The list name of a cue is the name which is displayed in the cue list, which could be its automatically generated name or a name that was manually entered. name would only return a manually generated name, and so would return nothing if the selected cue was not manually named.

The next cue in the Group triggers the selected cue with an OSC /go message. This advances the selection, meaning that the selected cue will now be the cue standing by to be triggered. Another Network cue then sets the second text cue, numbered Line2, using another OSC command containing queries, very similar to the previous one:

/cue/Line2/text "Next Cue: #/cue/selected/number# • #/cue/selected/listName#"

Finally, the two Text cues display their text. Be sure to set up a video surface or open the Audition Window to see this in action.

Cue Announcer output