Workflow

Windows and Spaces from a game controller

Download InputConfig on the Mac App StoreThe Window Management layout is built into InputConfig, free on the Mac App Store. You don't have to make an account, there are no subscriptions, and nothing is locked. Optimized for Apple silicon.

On a Mac: Sends the standard macOS window and Spaces shortcuts, so it works in every app. If you changed those shortcuts in System Settings, change the matching rows' outputs too.

Yes, you can manage windows on a Mac from a game controller: Mission Control on the big button, Command Tab on another, Spaces left and right on the D-pad. The app layouts handle the apps. This one is for the space between them, switching, hiding, and finding the window you lost. Most people add a few of these rows to every preset they make.

The layout, control by control

Click a control. Labels:

How the layout thinks

  • See everything. Mission Control (Control Up Arrow) on the bottom face button, the current app's windows (Control Down Arrow) on the right.
  • Switch and hide. The app switcher (Command Tab) on the left face button, hide (Command H) on the top.
  • Spaces. Left and right (Control Left and Right Arrow) on the D-pad.
  • Window size. Full screen (Control Command F) on the left bumper, minimize (Command M) on the right.
  • Pick a window. The left stick is the pointer and the right trigger clicks, once Mission Control is open.

Add these rows to every preset

  • Command Tab that walks the list. A single Command Tab jumps to the last app. Hold Command with a row set to Toggle, tap a Tab row, and the arrow keys move through the switcher. The App Switcher page has the steps.
  • Quit and close. Command Q and Command W on the stick clicks, deliberately away from the face buttons.
  • Tiling. Rectangle's and the built-in tiling keys are in the Window Tiling layout.
  • Stage Manager. It has its own layout, if you use it.

Mission Control on one button is the fastest way back to a lost window.

Get it in two clicks

  1. Get InputConfig free on the Mac App Store, open it, and click Smart Preset Maker on the welcome screen.
  2. Search for Window Management and pick it. The layout is created as a preset in your sidebar, named and ready.
  3. Press Activate. Every row can be changed afterwards: the editor's Scan button rebinds any control the moment you touch it.

Every binding, as a table

The Window Management preset in InputConfig, drawn on a DualSense Edge with each control labeled with the key or action it sends.
Figure 1. The Window Management preset drawn on a DualSense Edge in InputConfig's Live Visualizer. For example, A / Cross is labeled Mission Control (Ctrl+Up), and B / Circle is labeled App windows (Ctrl+Down). Any other controller shows the same layout on its own drawing.
ControllerSendsWhat it does
A / CrossCtrl (Left), UpMission Control (Ctrl+Up)
B / CircleCtrl (Left), DownApp windows (Ctrl+Down)
X / SquareCommand (Left), TabSwitch app (Cmd+Tab)
Y / TriangleCommand (Left), HHide app (Cmd+H)
D-pad leftCtrl (Left), LeftSpace left (Ctrl+Left)
D-pad rightCtrl (Left), RightSpace right (Ctrl+Right)
LB / L1Command (Left), Ctrl (Left), FToggle fullscreen
RB / R1Command (Left), MMinimize (Cmd+M)
Left stick leftMouse motion left (speed 16)Cursor left
Left stick rightMouse motion right (speed 16)Cursor right
Left stick upMouse motion up (speed 16)Cursor up
Left stick downMouse motion down (speed 16)Cursor down
Right triggerLeft clickClick

Button names follow the Xbox / PlayStation pair shown in the editor, so A / Cross is the bottom face button on either pad. On a Switch Pro Controller the bottom button is labeled B; the mapping still fires on position.

Questions

Why do some of these not work?

Mission Control and Spaces shortcuts can be changed in System Settings, Keyboard, Keyboard Shortcuts. If yours differ, change the row's output to your shortcut.

Download InputConfig on the Mac App StoreCompletely free. You don't have to make an account, there are no subscriptions, and nothing is locked. Optimized for Apple silicon. Open source on GitHub.

Updated