# BrightnessControl > BrightnessControl is a free macOS menu bar app for Apple Silicon Macs. It sets the brightness of the built-in display and of external monitors over DDC/CI (real backlight, not an overlay), and it switches the F1–F12 keys between media keys and standard function keys with fn + Esc or one click in the menu bar. - Homepage: https://brightness.softleb.de/ - Download (latest DMG): https://brightness.softleb.de/download - Download (latest ZIP): https://brightness.softleb.de/download/zip - Source code, releases and changelog: https://gitlab.softleb.de/softleb/brightnessControl - Price: free, no account, no ads, no tracking - Requirements: Apple Silicon Mac (M1 or newer), macOS 14 Sonoma or later. Intel Macs are not supported. - Current version: 0.3.1 (October 2026) - Made by softleb (Simon Leber), https://softleb.de ## What it does - One brightness slider per display: the built-in MacBook panel and every external monitor, labelled with the monitor's own name. - External monitors are controlled over DDC/CI, the same channel as the monitor's hardware buttons. The slider range is the maximum each monitor reports. - A link button moves every display to the same percentage. - Function keys: switches the system setting "Use F1, F2, etc. keys as standard function keys" (an fn lock). Works from a card in the popover, an optional one-click fn icon in the menu bar, and the global shortcut fn + Esc. The change applies immediately and stays in sync with System Settings. - Rescans automatically when a monitor is plugged in or removed. No Dock icon. ## Install 1. Download the DMG from https://brightness.softleb.de/download. 2. Open it and drag BrightnessControl into Applications. 3. On first launch, if macOS can't verify the developer: System Settings › Privacy & Security › Open Anyway. 4. Optional, for fn + Esc: click "Allow…" on the Function keys card and enable BrightnessControl in System Settings › Privacy & Security › Accessibility. 5. Optional: add it under System Settings › General › Login Items. ## Common questions - How do I change an external monitor's brightness on a Mac? macOS has no built-in control for most external monitors. Install BrightnessControl, click the sun icon in the menu bar and move that monitor's slider. - How do I toggle F1–F12 / fn lock on a Mac? With BrightnessControl running, press fn + Esc anywhere or click the fn menu bar icon. - Why is a monitor shown as "Brightness not readable"? DDC/CI is off in the monitor's menu, or a dock, hub or HDMI adapter blocks DDC. Use USB-C, Thunderbolt or DisplayPort directly. - Why does fn + Esc need Accessibility access? macOS only lets apps with that permission see key presses in other apps. The app only reacts to fn + Esc. Sliders and the menu bar icon work without it. ## How it works (technical) - Built-in display: private DisplayServices framework (DisplayServicesGetBrightness / DisplayServicesSetBrightness), loaded with dlopen. - External displays: private IOAVService I2C functions on DCPAVServiceProxy services, sending standard DDC/CI Get/Set VCP Feature (VCP 0x10, luminance) to I2C address 0x37. Same approach as m1ddc and MonitorControl. - Function keys: IOHIDSetParameter with kIOHIDFKeyModeKey for an immediate change, plus the global preference com.apple.keyboard.fnState and the com.apple.keyboard.fnstatedidchange notification. - fn + Esc: a session CGEventTap on key-down events that matches key code 53 with the secondary-fn flag and swallows that keystroke. - Written in Swift and SwiftUI, in a borderless panel under the menu bar icon. Uses private APIs, so a macOS update could break it. ## Alternatives MonitorControl and Lunar also control external monitor brightness over DDC on macOS. BrightnessControl is smaller and adds the function key switch in the same menu bar app.