Guides

A controller for a child on a Mac

Most children know a game controller better than a keyboard. The trouble on a Mac is that much of what they want to play, Minecraft Java, many Roblox experiences, most browser games, listens only to the keyboard and mouse. This guide sets up a Mac so a child can pick up a controller and play: layouts a parent sets once, a stop that is easy to remember, and nothing to buy beyond the controller. I built InputConfig because my own hands do not work well with a keyboard, and the setup that helps me helps a seven-year-old who cannot find W, A, S and D yet.

First, check whether the game needs any help

Pair the controller in System Settings, Bluetooth, open the game and press a button. Games with controller support on the Mac, Apple Arcade games, many Roblox experiences and browser games built for a pad will simply work, and you need nothing else. If a game only needs a button moved, System Settings has a Game Controllers pane in the sidebar that remaps buttons for games that support controllers.

If the character does not move, the game wants a keyboard. That is where a mapper comes in: InputConfig is free on the Mac App Store and turns the controller into the keys and mouse the game already understands.

Download InputConfig on the Mac App StoreInputConfig is free on the Mac App Store. macOS 14 or later, no account, no tracking, open source.

Which controller for small hands

Any controller the Mac supports works; the full list is here. For a child the question is size.

  • A single Joy-Con, held sideways, is the smallest: one stick and four buttons, and it connects to a Mac on its own. If the family has a Switch, there are two already. See Joy-Cons on a Mac.
  • Small 8BitDo pads fit small hands, but the mode they start in decides whether the Mac treats them as a controller. The 8BitDo page explains the modes.
  • A DualSense or Xbox controller suits older children. The DualSense adds a light bar and a speaker, both useful below.

The three things children ask for

  • Minecraft. Java Edition has no controller support. InputConfig's built-in Minecraft preset puts walking on the left stick, looking on the right, mining on the right trigger and placing on the left, jump on A and the inventory on X. See Minecraft with a controller, and Minecraft Education for the school version.
  • Roblox. Many experiences read the pad directly; the ones built for a keyboard need the Roblox layout from the Smart Preset Maker. See Roblox with a controller.
  • Browser games. Poki, CrazyGames and Scratch are mostly keyboard games. One arrow-key layout covers a surprising number of them. See browser games with a controller.

Set it once so it switches by itself

Each preset has an app list under Automation & Gaming Utilities. Add Minecraft to the Minecraft preset and Roblox to the Roblox one, then turn on Automatic preset switching in Settings, Advanced. The right layout turns on when the game comes to the front. A preset with no app list, such as Mouse + Scroll, stays as the fallback for everything else.

In Settings, General, turn on Launch at login so the setup is there every time the Mac starts. The menu bar icon turns green while a preset runs, which is an easy way to see from across the room that it is on.

The stop button, and teaching it

Show your child one thing: hold the small Create, Share, Back or View button, left of centre on the controller (Minus on a Switch pad), for three seconds, and everything stops. It releases every held key and gives the pointer back, and it never deletes anything, so it is safe to press when something goes strange. It works whatever the preset maps that button to. You can change the button and the hold, from one to five seconds, in Settings, General.

At the keyboard, Control Option Command and the full stop does the same, and so does Emergency Stop in the menu bar. More on the emergency stop page.

Two children, one Mac

Pair both controllers. Each gets its own slot, and a preset holds separate bindings for each, so a keyboard-only two-player game can give one child W, A, S, D and the other the arrow keys. The two controllers page has the steps.

For a child who cannot read the buttons yet

Turn on Speak in a row's Options and the Mac says a word when the button fires. Leave the phrase empty and it says the button's name, or type your own: jump, dig, open. On a DualSense, choose Controller and the voice comes quietly from the pad itself. See spoken feedback. A row can also give a short rumble when it fires, and a DualSense or DualShock 4 light bar can glow a different colour for each preset, so green can mean Minecraft and red can mean Roblox.

What it will not do

InputConfig is not parental controls. It does not limit time or block apps; Screen Time in System Settings does that. It has no account, no analytics and no network access, so there is nothing for a child to sign up to and nothing sent anywhere. It is free; the optional tip jar in Settings, About unlocks nothing.

On a Mac managed by a school, installing an app and granting the Accessibility permission it needs may be up to the school's administrator.

Questions

What is the easiest way to let my child play Mac games with a controller?

Pair the controller in System Settings, Bluetooth, and try the game. If it does not respond, install InputConfig, pick the ready layout for that game, and press Activate.

Is InputConfig safe for children?

It has no account, no analytics, no ads and no network access, and nothing in it is paid. It needs the Accessibility permission because it sends keyboard and mouse input for the controller.

What if my child changes a layout by mistake?

Keep a backup: Settings, Advanced, Export Backup. Restore from Backup puts every preset back. Built-in presets can also be downloaded again from their pages on this site.

Can a younger child use one Joy-Con?

Yes. A single Joy-Con held sideways connects to a Mac as its own small controller, with a stick and four buttons.

Related

Download InputConfig on the Mac App StoreFree. macOS 14 or later. No account, nothing leaves your Mac. Open source on GitHub.