Skip to content

About

Make an Apple Magic Keyboard's volume, media and brightness keys work on Windows, with no paid driver.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

MagicVolume

Make an Apple Magic Keyboard's top row work on Windows without a paid driver.

On Windows, the Magic Keyboard's F-row sends plain F1–F12, so the printed volume, playback and brightness keys do nothing. MagicVolume is a small background app that turns those keys back into what's printed on them. It needs no admin rights, no kernel driver and no driver signing.

Key Does
F1 / F2 Brightness down / up (hold to ramp)
F3 Task View (Win+Tab)
F4 Search (Ctrl+Shift+S, e.g. PowerToys Run)
F5 Toggle microphone mute (low beep = muted, high beep = live)
F6 Sleep
F7 / F8 / F9 Previous / play-pause / next track
F10 Mute
F11 / F12 Volume down / up (hold to ramp)
Shift + any of them The real function key
Ctrl+Alt+F12 Turn the whole remap on/off (a software fn-lock)

Every key can be remapped in mapping.ini. See Configuration.

Install

Requirements: Windows 10 or 11 (x64). The .NET Framework 4.x runtime it needs is already part of Windows.

  1. Download MagicVolume.zip from the latest release and unzip it somewhere permanent, for example %LOCALAPPDATA%\MagicVolume.

  2. In that folder, run:

    powershell -ExecutionPolicy Bypass -File install.ps1

    This starts MagicVolume and sets it to start every time you log in.

The exe is unsigned, so Windows SmartScreen may warn you the first time. Choose More info → Run anyway, or build it yourself from the source in this repo.

Uninstall

powershell -ExecutionPolicy Bypass -File uninstall.ps1

This stops the app and removes both autostart entries. Then delete the folder.

Build from source

No Visual Studio needed. Windows ships a C# compiler with .NET Framework:

build.cmd        :: MagicVolume.exe + all diagnostic tools
build.cmd app    :: just MagicVolume.exe

Or by hand:

%WINDIR%\Microsoft.NET\Framework64\v4.0.30319\csc.exe -platform:x64 -target:winexe -out:MagicVolume.exe MagicVolume.cs

Why not just use the fn key?

Because Windows throws it away before any normal program can see it. The keyboard does send fn, but Windows' built-in keyboard driver discards it, and the raw keyboard data is locked from normal apps as anti-keylogger protection. Only a signed kernel driver can read it, and that signed driver is what the paid Magic Keyboard utilities charge for. So MagicVolume uses Shift as the modifier instead. Full write-up: How it works.

Docs

Privacy

MagicVolume uses a low-level keyboard hook to see the F-keys. It only acts on bare F1–F12 and the toggle hotkey, and passes everything else through untouched. It never records other keystrokes, and it makes no network connections. magicvolume.log records only startup settings, on/off toggles, mic mute state and errors. It never records which keys you press.

The separate diagnostic tool KeyProbe.exe does print every keypress, because that's its job. Run it only when you're debugging, and don't share its output.

License

MIT

About

Make an Apple Magic Keyboard's volume, media and brightness keys work on Windows, with no paid driver.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages