Tuesday, 19 October 2010

Apple Aluminium Keyboard on Linux

Since I'm a sucker for shiny things, and since I got used to the lovely keyboard on my Macbook, it only seemed right to get a new brushed aluminium keyboard for my non-Macbook computer. Well, that and a hand injury requiring me to have a keyboard with less than 1/16th of an inch key travel ...

I previously used it on Windows and getting it to work with Bootcamp was pretty easy. I even wrote instructions on my old blog. I've since started using it as my primary keyboard on my desktop machine with Ubuntu, and setting it up on there was even easier. There is a built-in keyboard map for it, and everything just works. I use the US layout because I'm more likely to type # than £, but altgr+3 produces the £ so all is good.

Unfortunately there are two things that irk me about this keyboard. First is that there is no insert key. Second is that you have to hold down Fn, which is where the insert key should be, to make the F keys work. Fortunately a bit of magic can make everything OK.

Building A New Insert

I decided to use F13, which is located directly above Fn, as a replacement insert key. I used xev to determine that the scan code of F13 is 191 (the others following on in a linear fashion). Making it into insert is just a bit of xmodmap magic, so put this line into .Xmodmap in your home directory.

    keycode 191 = Insert

That's it. It will be enabled when you log in. If you want to enable it immediately, type this:

    $ xmodmap .Xmodmap

Magic. You now have an insert key.

Fn-less F Keys

I found many, many blog posts by other people trying to figure out how to convert the media keys into standard F keys. Most of them spent time with xev trying to map the scan code of the F keys to the X11 function key mappings. This is a long winded and entirely unnecessary task if you have a 2.6.x kernel. Add this line to /etc/rc.local:

    echo 2 > /sys/modules/hid_apple/parameters/fnmode

On reboot, you will have standard function keys. The media keys are still accessible by holding down Fn, so it's the best of both worlds. If you are running Compiz, you could map the exposé keys to that. Of course, enabling it without a reboot is as simple as running that command as root.

No comments:

Post a Comment