Monitor Switching (3 displays)

I checked the forums, but only found advice on a setup using Spaces for two displays and that solution didn't have enough info for me to implement/modify. I'm admittedly new at this and have a trial copy of KBM to try and see if it solves this particular need of mine.

Is there a way to do this without Spaces or Mission Control, neither of which I use or know how to use?

I have a three-monitor system: a main widescreen monitor in the center and two 4:3 displays, one on each side of the widescreen. This is a DESKTOP Mac Pro (Mojave).

I want to push a button on my mouse that cycles through FOUR positions:

• Center of left display
• Center of left side of center display
• Center of right side of center display
• Center of right display

I don't want to move to a particular WINDOW, just a pre-determined location (like "center" but of course coordinates are fine too if need be) of a particular DISPLAY/MONITOR.

This is to reduce my trackball movements on this wide arrangement and let me shortcut to a location closer to where I need to be.

• I want to move the mouse POINTER, not any particular Window.

See WindowDual A set of Macros for the INTERNAL/EXTERNAL display user for useful background information

I would start using a hotkey to move focus and do the mouse cycling later.

This should be very doable.

First, take a look at SCREEN function in [Keyboard Maestro Wiki]

The SCREEN index can be referenced by either a number OR a name . The Index number can be 0 for the main screen, and then 1 through n are the screens in orientation order from left to right (and top down for screens at the same position).

So, your Screen Numbers will be:

  • Left Display: 1
  • Center Display: 2
  • Right Display: 3

So you just need this formula to determine the X position of the mouse:
SCREEN(Local__Screen, MIdX) + (Local__ScreenArea * SCREEN(Local__Screen, Width))

where Local__ScreenArea can be:

  • 0 for center of the screen
  • -0.25 for center of the LEFT HALF of the screen
  • 0.25 for center of the RIGHT HALF of the screen

Make sense?

Here's the macro:

Below is just an example written in response to your request. You will need to use as an example and/or change to meet your workflow automation needs.

Please let us know if it meets your needs.


MACRO:   Move Mouse to Screen N [Example]

-~~~ VER: 1.0    2020-12-05 ~~~
Requires: KM 8.2.4+   macOS 10.11 (El Capitan)+
(Macro was written & tested using KM 9.0+ on macOS 10.14.5 (Mojave))

DOWNLOAD Macro File:

Move Mouse to Screen N [Example].kmmacros
Note: This Macro was uploaded in a DISABLED state. You must enable before it can be triggered.




  • Move Mouse to Screen N [Example]


  1. First, make sure you have followed instructions in the Macro Setup below.
  2. Trigger this macro.


  • Carefully review the Release Notes and the Macro Actions
    • Make sure you understand what the Macro will do.
    • You are responsible for running the Macro, not me. ??
      Make These Changes to this Macro
  1. Assign a Trigger to this macro.
  2. Move this macro to a Macro Group that is only Active when you need this Macro.
  3. ENABLE this Macro, and the Macro Group it is in.
    (all shown in the magenta color)
    • TBD
      • DESC


  1. KM 9.0+ (may work in KM 8.2+ in some cases)
  2. macOS 10.11.6 (El Capitan)+



  • Any Action in magenta color is designed to be changed by end-user


  • To facilitate the reading, customizing, and maintenance of this macro,
    key Actions are colored as follows:
  • GREEN -- Key Comments designed to highlight main sections of macro
  • MAGENTA -- Actions designed to be customized by user
  • YELLOW -- Primary Actions (usually the main purpose of the macro)
  • ORANGE -- Actions that permanently destroy Variables or Clipboards,
    OR IF/THEN and PAUSE Actions


  • While I have given this a modest amount of testing, and to the best of my knowledge will do no harm, I cannot guarantee it.
  • If you have any doubts or questions:
    • Ask first
    • Turn on the KM Debugger from the KM Status Menu, and step through the macro, making sure you understand what it is doing with each Action.