User manual – KeyShowX 2.2 (Web Version)

KeyShowX 2.2

Initial configuration

KeyShowX is a simple, yet powerful, tool for making multi-screen presentations, shows and digital signage. It is a companion product for Apple Keynote and Microsoft PowerPoint. Consider it as a universal, flexible and scriptable remote control unit for simultaneous execution and synchronisation of multiple presentations running on different computers. In addition you can also control Apple DVD Player and QuickTime Player.

KeyShowX consists of two different applications: Controller and Client. Controller application is your command center and remote control unit. You should launch Client application on all Macs where you are planning to run the actual Keynote or PowerPoint slideshows. There are no limitations on how many remote presentations you can control at the same time – it can be even several hundreds. From the Controller application you can command remote Macs to start or close Keynote or PowerPoint applications, load presentations, advance slideshows, jump between slides and so on. Controller application sends commands to all Client computers simultaneously or individually, based on your needs.

Both KeyShowX applications (Controller and Client) are self-signed. In order to avoid your macOS security settings blocking KeyShowX, you should right-click application icon and select Open menu:


Confirm in security dialog that you allow opening KeyShowX:


KeyShowX Client

You should copy KeyShowX Client application to all Macs, which you intend to control.

KeyShowX Client 2.2

KeyShowX Client 2.2 Settings

There are only few configurable options in the Client application:

Screen ID: Consider it as an identification number for your screen. It is very useful, if you are planning to send commands to individual screens from the Controller application. It is recommended to assign a unique number for each individual presentation machine. It gives greater flexibility if you are planning complex presentation queues.

Listen on UDP Port: KeyShowX uses UDP for communications. Both Client and Controller applications must use the same port number, by default 7777. However, it is freely reconfigurable. If you are using firewall on your Mac, remember to allow UDP communications on the selected port. Usually, when the Client application receives its first command, Mac OS X should automatically ask the user whether communication on the specific port should be allowed.

Media folder: Allows you to specify the default folder on the client computer for presentations, video files and DVD images. When KeyShowX Client receives a command to open a presentation, first, it checks this folder for the received file name. This is a convenience setting that allows the Controlling Mac to only specify the needed file name, without the full path.


KeyShowX Controller

Main Window

KeyShowX Controller 2.2

Section Remote KeyShowX Clients

UDP Port: KeyShowX uses UDP for communications. Both Client and Controller applications must use the same port number, which is by default 7777. However, it is freely reconfigurable. If you are using firewall on your Mac, remember to allow UDP communications on the selected port.

Broadcast: Use this option if all KeyShowX Clients are located in the same subnet with the Controller application. All controlling messages will be broadcasted to the network and delivered to Clients at the same time. It’s the best option and requires zero configurations.

Weak network: Remember, the best option is to use a wired network for reliability. However, if you expect quality issues with the connection, especially when using Wi-Fi, try this option. KeyShowX will use redundant extra control messages.

IP List: If your show setup requires using computers located in different networks, you must specify IP addresses of the KeyShowX Clients. This button brings up a dialog where you can specify the list of addresses. You can use a combination of the Broadcast option along with such a list of individual IP addresses.

KeyShowX Controller 2.2 IP List Editor

Section Controllers

Buttons Presentations, QuickTime and DVD Player make visible windows of the corresponding controllers. Use them for the direct control of the slideshows or media playback.

Keyboard: Enables direct reconfigurable keyboard control. With this option enabled, you can assign any KeyShowX command to any keystroke. It is very useful if you have a wireless remote control unit, which issues unusual keystrokes. Another potential scenario is KeyShowX automation with AppleScript. It is possible to send keystrokes from another application and execute predefined KeyShowX commands. Use the Edit button to create a list of custom commands and associate them with the dedicated keystrokes. You can read more in the Key Action Editor chapter. Remember, in order to use the keyboard control, KeyShowX must be the active foreground application in Mac OS X. When KeyShowX receives a keystroke, it displays the key code and it’s visual representation in Last key. It is important to use those key codes when making a list of custom commands.

Section Show Commands and Scripting

KeyShowX Controller application communicates with Clients by sending plain text commands over the UDP. Every KeyShowX controlling action has an associated command, whether it’s advancing to the next slide of a presentation or launching the QuickTime player. Every command can be targeted to all or dedicated Clients. Such system makes it very easy to build scripting capabilities around it. You can create a sequence of pre-defined commands to control an entire multiscreen show.

Show Console: Brings up a window with a history of the last 100 commands, which were sent by the Controller application. Helps you to understand and explore KeyShowX commands. It is also possible to select a single command from the history list and execute it again.

KeyShowX Controller 2.2 Show Console

New, Open, History: Allows you to create or open a previously saved KeyShowX show script. It is a very flexible and powerful feature. You can bundle together several commands and execute them one by one conveniently from a single scripting window, instead of using multiple windows with controllers for dedicated applications. For example, say, you would like to open ten different presentation files on ten remote show computers. Of course, you could use dedicated Presentation Controller window, type in the file names and open them one by one, every time specifying a different target screen. And, you would have to repeat that every time you have the same show. Or, alternatively, you could create a single script where all opening operations will be bundled together once and ready for later reuse as many times as required, without the need for retyping.


Key Actions Editor

In the Key Action Editor window you can associate keystrokes with specific KeyShowX commands. Each keystroke should start from a new line, for example:

39 0 keynote/nextslide
74 1,3 keynote/jumpto 10

The first command means: When right arrow is pressed (keycode 39), send to all screens (0) command to advance Keynote to the next slides. Second command means: force Keynote jump to slide 10 on screens 1 and 3 when the key “J” is pressed (keycode 74). There are no limitations on how many keystrokes you can pre-program.

KeyShowX Controller 2.2 KeyActions Editor

Full list of KeyShowX commands and their syntax is available at the end of this document.

There is one very powerful feature that allows greater show control automation – scripts. You can create a script consisting of many KeyShowX commands, save it as file and then, execute it with single keystroke. Scripts are simple plain text files and it is possible to use any of your preferred text editors to create or edit them. However, it is recommended to use the embedded Show Script Editor. Use Show Commands and Scripting section of main KeyShowX window to create new or open existing scripts with the editor. KeyShowX script editor gives you the possibility to debug and execute any parts or individual commands of the script, on the fly.

Once you have a functional script saved as a file, you can associate it with a keystroke. It is done in a similar manner as associating individual commands, except using the special keyword script, for example:

75 script /users/show/concert_january.kshx

meaning that script concert_january.kshx located in folder /users/show will be started once key “K” (keycode 75) is pressed.

All commands from the script are going to be executed sequentially with minimal delay (~ 10 ms) between each command. It is possible to have custom delays for the commands. It is done with special wait command described at the end of this document. Please note that loop command is ignored when the script is executed from a keyboard shortcut.


Presentation Controller

With the Presentation Controller you can control Keynote or PowerPoint presentations.

KeyShowX 2.2 Presentation Controller

Most of the presentation controls are self explanatory, like Next, Previous, Start Show etc. Following elements with an additional explanation might be useful for the users who are not familiar with KeyShowX.

Control Screens: You can choose which screen will receive control messages. From the drop down list you can select All, individual screens from 1 to 10, or Custom. This option requires that KeyShowX Clients will have specified unique Screen IDs. There are no limitations, how many screens you can control. Numbers from 1 to 10 in the drop down list are just for quick convenience. Use Custom option where you can specify single or multiple screens (KeyShowX Clients). If you are planning to use multiple screen IDs, separate them with commas, without spaces.

Open presentation file remotely: In certain cases you can open presentations manually on an every remote Mac. However, it is much more convenient to do it programmatically. With this option, you can specify the full path to a presentation on a remote Mac. Remember, this is the path, which is local for the remote KeyShowX Client. If you have specified Media Folder on remote KeyShowX client, then, you can use just presentation file names, without the path.

PowerPoint mode: By default, the Presentation Controller uses Keynote as the target. By selecting this option, you can use PowerPoint.

Keyboard control: Use this option to control the presentation from your keyboard. There are several pre-defined keyboard shortcuts:

Next Slide – Right arrow, Space, Page Down, N;

Previous Slide – Left arrow, Page Up, P;

Black Slide – B;

First Slide – Home;

Last Slide – End;

Stop Show – Esc.

Remember, you can completely customise the keyboard control (including complex scripting) from the main window even without ever opening the Presentation Controller.


QuickTime Controller

QuickTime Controller allows you to control the QuickTime Player.

Options for selecting remote screens and opening media files are the same as with Presentation Controller.

KeyShowX 2.2 QuickTime Controller

Name of the window for all commands: this option is specific to how QuickTime Player works – you always must specify QuickTime Player window name that will receive control messages. In most cases, name of the window is the same with file name. However, in some media files, window name will be picked app from files meta-data. In this case, you will have to type window name manually.


DVD Player Controller

You can control the Apple DVD Player with any DVD media or VIDEO_TS folder.

KeyShowX 2.2 DVD Player Controller

Apple DVD Player remembers the last used media, so in many cases you don’t have to explicitly open a VIDEO_TS folder.

DVD Player Controller replicates full controls for DVD menu navigation. In addition, you can jump to a specific Title, Chapter or Time (must be in seconds from the beginning of the title).


Show Script Editor

Scripting commands is the most powerful way to control your shows with KeyShowX. Absolutely every button in controllers has an associated scripting command.

KeyShowX 2.2 Show Script Editor

The full list of commands is available at the end of this document. Command syntax is very simple:

<screen ID> <command> <argument>

where screen ID can be 0 for targeting all screens or a comma separated number list (without spaces). For example:

0 keynote/open /Users/slides/Show.key

opens file /Users/slides/Show.key on all remote Macs with Keynote.

1,3,5 keynote/jumpto 5

Jumps to slide 5 on screens 1, 3 and 5.

You can edit the script just like simple text file in the Edit tab. In the Control mode you should double click on a command and then use the Run Step button for step-by-step execution of the script. For the automatic full script execution use the Run All button. Please note, in the automatic execution all commands are executed sequentially with minimal delay (~ 10 ms). For controlling delay between commands use special command wait followed by amount of milliseconds. For example, consider the following sequence of commands:

0 keynote/nextslide
wait 3000
0 keynote/nextslide

there will be three seconds delay (3000 ms) between advancing to the next slide.

Another special command is loop for an unconditional jump to the beginning of the script.


KeyShowX Commands

Special commands
wait <milliseconds> Stops execution of the script for specified amount of milliseconds
loop Unconditional jump to the beginning of script


Keynote commands
keynote/open Open Keynote presentation
keynote/startshowreset Start presentation from the beginning
keynote/startshow Start presentation
keynote/stopshow Stop presentation
keynote/close Close all open presentations
keynote/quit Quit Keynote
keynote/nextslide Next slide
keynote/prevslide Previous slide
keynote/firstslide Jump to first slide
keynote/lastslide Jump to last slide
keynote/blackslide Show black slide
keynote/jumpto <slide number> Jump to specified slide number
keynote/bringtofront Bring Keynote as front most application


PowerPoint commands
powerpoint/open Open PowerPoint presentation
powerpoint/startshowreset Start presentation from the beginning
powerpoint/startshow Start presentation
powerpoint/stopshow Stop presentation
powerpoint/close Close all open presentations
powerpoint/quit Quit PowerPoint
powerpoint/nextslide Next slide
powerpoint/prevslide Previous slide
powerpoint/firstslide Jump to first slide
powerpoint/lastslide Jump to last slide
powerpoint/blackslide Show black slide
powerpoint/jumpto <slide number> Jump to specified slide number
powerpoint/bringtofront Bring PowerPoint as front-most application


Apple DVD Player commands
dvd/open <VIDEO_TS folder> Open VIDEO_TS folder and go to full screen mode
dvd/quit Quit DVD Player
dvd/start Start DVD Player and go to full screen mode
dvd/tofront Bring Apple DVD Player as front-most application
dvd/menu Jump to DVD main menu
dvd/title Jump to DVD title menu
dvd/prev Previous chapter
dvd/next Next chapter
dvd/left DVD navigation left button
dvd/up DVD navigation up button
dvd/right DVD navigation right button
dvd/ok DVD navigation Ok button
dvd/down DVD navigation down button
dvd/begdisc Jump to beginning of the DVD disc
dvd/play Play
dvd/pause Pause
dvd/stop Stop
dvd/jumptitle <number> Jump to specified title
dvd/jumpchapter <number> Jump to specified chapter
dvd/jumptime <seconds> Jump to specified time (in seconds)


QuickTime Player commands
quicktime/open Open media file with QuickTime Player
quicktime/quit Quit QuickTime Player
quicktime/tofront Bring QuickTime Player as front-most application
quicktime/rewind Rewind media frame back
quicktime/fsplay Play media full screen
quicktime/pause Pause media
quicktime/play Play media
quicktime/close Close media
quicktime/enablelooping Enable media looping
quicktime/disablelooping Disable media looping