Mac function keys not working on an external keyboard: every cause, in order
Two people can type "mac function keys not working external keyboard" into Google and mean opposite things. One presses F5 in a text editor and the keyboard brightness goes up. The other presses F1 expecting the screen to dim and gets nothing at all. Same search, same keyboard, opposite complaints — because the F-row on a Mac is decided in three different places, and only one of them is in System Settings.
Here is how to work out which layer is wrong, in the order that costs you the least time.
First, which of the three keyboards is on your desk?
This is the step every troubleshooting list skips, and it decides whether any of the fixes below can possibly apply to you.
| Keyboard | What the top row sends by default | Does the macOS toggle affect it? |
|---|---|---|
| Apple keyboard (built-in or Magic Keyboard) | Brightness, Mission Control, volume | Yes |
| Third-party board with a Mac mode (Keychron, Logitech, Nuphy…) | Depends on the mode switch and its own fn-lock | Sometimes |
| Generic PC keyboard | Plain F1–F12, nothing else | Often not — there may be no toggle at all |
A generic PC keyboard has no brightness key to send. It emits F1 and macOS receives F1. If you were expecting the screen to dim, nothing is broken — the hardware never had that function. Apple's own guidance for this case is to build the shortcuts you're missing yourself, or accept that those keys simply aren't there.
Fix 1: the macOS toggle, and the trap inside it
The setting lives at System Settings → Keyboard → Keyboard Shortcuts… → Function Keys, and it is one checkbox: Use F1, F2, etc. keys as standard function keys.
- On — the top row sends F1–F12. Hold
fn(or Globe) to get brightness and volume back. - Off — the top row does brightness and volume. Hold
fnto send a real F5.
Apple also notes that on a keyboard with no fn key at all, holding
Control while pressing a function key does the same job.
The trap: this checkbox is global. Unlike Modifier Keys, one screen away in the same pane, which has a Select keyboard dropdown and remembers a different mapping per device, the function-key setting applies to every keyboard attached to your Mac at once. So the very common setup — external board for F-keys, laptop keyboard for brightness — is not expressible in System Settings. You get one answer for both.
If you genuinely need both behaviours, that is the one case here where
Karabiner-Elements earns its
install: turn the global setting on, then add a rule conditioned on
is_built_in_keyboard that maps the laptop's F-row back to media keys.
Fix 2: if the checkbox does nothing, it's the firmware
Third-party keyboards decide their own top row before macOS ever sees it. A key that leaves the keyboard as "volume up" arrives at your Mac as volume up, and no macOS checkbox can turn it back into F12.
That layer is usually toggled on the keyboard itself:
- Keychron — hold
Fn+X+Lfor about four seconds to flip between function keys and multimedia keys. Also check the physical Mac / Windows slider: in Mac mode the board activates its Mac layer, and the layer you edit in Keychron Launcher has to be the one actually in use — remapping layer 2 while the board sits in Mac mode changes nothing you can feel. - Logitech —
Fn+esctoggles F-keys and media keys on most MX boards, and Logi Options+ carries the same switch as Use F1–F12 as standard function keys.
Two consequences worth internalising. First, a firmware toggle and the macOS checkbox can cancel each other out — set both and you're back where you started, which is why "I already tried that" is so common in these threads. Change one at a time. Second, a keyboard-level setting lives in the keyboard, so it follows the board to another machine and survives a clean install of macOS.
Fix 3: it broke right after a macOS update
If the F-row worked yesterday and today it doesn't, suspect permissions before hardware. macOS routinely drops the Input Monitoring grant for keyboard utilities across an update, and every remapper — Karabiner, vendor tools, hotkey daemons — goes quiet without saying why.
Check System Settings → Privacy & Security → Input Monitoring and re-enable the app. No reinstall, no config reset. If the toggle looks correct but nothing changes, log out and back in so macOS re-reads it.
Still nothing? Boot into safe mode and test there. If the keys behave in safe mode, the culprit is a login item or a background app grabbing the keys, not the keyboard — and the same hunt applies as with any shortcut conflict.
The per-app exception that doesn't exist
The Function Keys pane has a + button and a list of apps, which looks exactly like a per-app override. It isn't. That list controls which apps show F-keys on the Touch Bar — it does nothing on a Mac without one, and nothing for an external keyboard.
macOS has no built-in "always send real F-keys in this app" switch. What you have instead is whatever the app itself offers in its own shortcut settings, or a device- and app-conditioned rule in Karabiner. Knowing this saves an afternoon of clicking + and wondering why it changed nothing.
The wider point: don't hang a workflow on the F-row
Everything above exists because the top row is contested territory — Apple wants it, your keyboard's firmware wants it, the vendor app wants it, and each of them can win on a different day. Shortcuts built on plain modifiers never enter that fight.
That's a design choice, not an accident, in the tools we build.
Let's Tile puts a grid over the focused window on ⌘ ↵; you
steer with the arrow keys and press return. Let's Switch
flips through your windows most-recent-first on ⌥ ⇥ — the physical
Alt-Tab chord, which does nothing natively on a Mac and so is free to
take. Neither needs fn, neither needs Globe, and neither cares what
mode your keyboard's slider is in. Both are rebindable, both have a free
tier that is a real tool rather than a trial, and Pro is $9.99 once, no
account and no subscription.
If your keyboard came from the PC side of the fence, the companion piece to this one is using a Windows keyboard on a Mac, which covers the modifier translation and the Globe key macOS's own tiling shortcuts depend on.
Frequently asked questions
Why do my function keys work on the MacBook but not the external keyboard?
Because the external board is deciding its own top row in firmware before macOS sees it. The macOS checkbox is global and can't disagree with a keyboard that has already sent "volume up". Look for a fn-lock combination or a mode switch on the keyboard itself.
Can I set function keys differently per keyboard?
Not in System Settings. Modifier Keys is per-keyboard; Use F1, F2, etc. keys as standard function keys is not. Karabiner-Elements can do it with a rule conditioned on the device.
Why don't the brightness keys work on my external keyboard?
Most likely the keyboard never sends a brightness event — generic PC boards don't have one. On Apple keyboards, brightness control also depends on the built-in display being the main one, so a clamshell or external-display setup can make those keys look broken when they aren't.
Do I have to press fn every time?
No — that's what the checkbox chooses. Whichever behaviour you make the
default, fn (or Control, on keyboards without one) gets you the other
one on demand.