The situation is, I used to have a Power Mac G5 and with it a used an Apple Aluminium USB keyboard, but the ISO variant MB110D/A (german). The keyboard is very nice, quite expensive, but I love it. It is non-standard in some ways though, and sadly it is missing the Insert key – it featues a laptop-like Fn (Function) key instead.
The standard (as Apple wanted it) would be to have direct access to the media keys and Fn keys, without pressing Fn. So you'd get easy access to brighness, Dashboard and Exposé, and Play/Stop/Next/Previous as well as volume control. But you'd have to use Fn to get F1 though F12.
For a Linux guy like me this is not what I want.
So, there are three issues to be fixed for this keyboard:
- Use a german keyboard layout
- F1-F12 keys without Fn
- Swap dead circumflex (^)/degree (°) and less (<)/greater (>)/bar (|) – because it is simply swapped with the default layout
- Make the Fn key be an Insert key
Setting the keyboard to german in /etc/conf.d/keymaps with KEYMAP="de-latin1" makes it mostly work for non-X11. (I'll explain a little adjustment I made later).
In X11 I simply use Option "XkbLayout" "de". Additionally, Option "XkbModel" "apple_aluiso" should make it work out-of-the-box – but it doesn't. (Read on.)
F1-F12 keys without Fn
The kernel easily fixes this issue, simply add hid_apple.fnmode=2 to the kernel command line.
Sadly, I haven't found a way yet to set this in a sysctl way after the kernel has started, AND with hid_apple compiled into the kernel (not as a module, in which case this option could be added to modprobe.d – /etc/modprobe.d/applehid.conf as I named it).
The importaint thing is: it works.
Swap dead circumflex (^)/degree (°) and less (<)/greater (>)/bar (|)
Now, my problem – which seems to be a commen one btw – is, that the ^° (which should be top left, below the Escape key) and <|> (which should be right next to the left Shift) keys are swapped. I don't know why this is, but it is for all german Apple Aluminium ISO keyboards.
In the console, I simply altered /usr/share/keymaps/i386/qwertz/de-latin1.map.gz. To be more transparent, I made a new map de-AppleAluISO.map.gz and changed to KEYMAP="de-AppleAluISO":
Code: Select all
# de-AppleAluISO.map: German keymap for Apple Alu ISO USB keyboard (MB110D/A)
include "de-latin1.map"
# swap keycodes 86 and 41 to correspond with the actual layout
keycode 86 = dead_circumflex degree Meta_asciicircum Control_asciicircum
keycode 41 = less greater barFor X11, I used the global Xmodmap /etc/X11/xinit/Xmodmap which makes it work, but is not very clean since it applys the changes to all keyboards. Again, it is very uncommon to connect more than one keyboard, but regardless I don't like this too much.
Code: Select all
! Xmodmap
! Apple Aluminium USB keyboard tweaks
!
! set this right:
!
keycode 49 = less greater less greater bar brokenbar bar
keycode 94 = dead_circumflex degree dead_circumflex degree U2032 U2033 U2032Now comes the big problem:
For X11, until now I used a HAL .fdi file that I found here: http://damienciabrini.blogspot.com/2009 ... board.html (a great blog about how to get the ISO Alu keyboard working right in Linux)
It changes the Fn keycode 464 (Fn key) to 110 (Insert key) in a very uncommon way (the HAL way).
Until now this all worked well. Since the update this hack isn't available anymore which is quite obvious.
So, does anyone know how to get this solution back to working?
Last but not least, I used to have some special unicode keys at different places. E.g. Alt-Gr+- gave – (en dash). Now it is something I've never seen before : ̣. I also miss the dots … a lot, used to be AltGr+., now it gives ·. All the quotation marks (e.g. “”) as well as the mathematical signs (e.g. ÷) also changed position. It seems like everything has changed, but I don't know how and why. These keys are even then changed when don't configure at all, i.e. when I leave all xorg.conf empty – I then get the english keyboard layout, with all the wrong keys (<>/^° and unicode keys).
This is very annoying. Help is most appreciated. Also, I don't know exactly where which unicode sign used to be, so I cannot make a hack mapping for them. I simply want the old behaviour back.
Thanks in advance,
A.


