Frustrations with an Apple Keyboard on Windows

May 29, 2012 —

A while back I bought an Apple Keyboard (wired) to make working with a Hackintosh better. They're not really too expensive (considering I was thinking of getting a good mechanical keyboard if not this), the quality is good and to be honest now that I've been using it for a while, I think I've grown to prefer the "chiclet" style keys.

However, since I don't run with Apple hardware (other then the keyboard now), the support in Windows is a bit lacking. Which is funny considering it was the other way around when I started the whole Hackintosh thing. On an Apple keyboard, the media keys and other special function keys are shared with the standard F1-F12 keys. With the default Windows driver, Windows will just treat them as F keys and you will be unable to use the special functions at all.

As I found out for myself with my new Macbook Air, if you install Windows on Apple hardware via BootCamp, then you solve this problem by using the BootCamp drivers and service which lets you use the Fn key as you can in OS X to get both the F keys and special function keys. Complete with OSD icons too!

At first I figured I would just copy the driver from the BootCamp files and install that on my PC. This only seemed to get me half-way there. Fn + F7 through F9 worked. But nothing else did. And the OSD icons were notably absent. I guess the BootCamp service handles the volume control and OSD stuff. And of course that won't install on a regular old PC from what I could see.

Searching for a while I came across a bunch of "sort-of" solutions like using SharpKeys which I didn't particularly like too much. SharpKeys for example, wouldn't recognize some F keys. Maybe with some driver trickery it might, I don't really know.

Then I came across AppleWirelessKeyboard which seemed perfect: easy toggling of F keys / special functions, OSD, minimal install and fussing about.

Then I realized that it was unable to read the state of the ‘Fn' key even though the website specifically says ‘Fn' key combinations work with it. I figured that maybe it was just a matter of the author only checking that it worked with the wireless keyboard and not testing it with a wired one, so I downloaded the source code and played around with it for a bit. Well sure enough, I couldn't figure out a way to read the ‘Fn' key state either, but I'm hardly anywhere close to being considered knowledgeable when it comes to interfacing with input device drivers in Windows.

However, I did notice that the Eject key state could be read, albeit, only when using a slightly different method then the existing code was doing for the wireless keyboard. This is good, because out-of-the-box, AppleWirelessKeyboard is supposed to be able to use the Eject key to toggle between F keys and special functions for F1-F12. Just it wasn't working for wired keyboards apparently.

Anyway, a couple hours later, and I came up with this: AppleWirelessKeyboard for Wired Keyboards.

It's not perfect, but for me it's as close as it seems I'm going to get to perfect. The Fn key remains unreadable which is unfortunate, but not the end of the world.

And now, finally, I can rest easy knowing that my media keys and volume control keys work more-or-less consistently across all my installed OS's.