Difference between revisions of "Apple Keyboard"
(→Function keys do not work) |
(→Function keys do not work) |
||
(One intermediate revision by the same user not shown) | |||
Line 21: | Line 21: | ||
Place whatever option worked for you in {{ic|/etc/modprobe.d/hid_apple.conf}} to make the setting permanent. | Place whatever option worked for you in {{ic|/etc/modprobe.d/hid_apple.conf}} to make the setting permanent. | ||
− | |||
− | |||
− | |||
− | |||
− | |||
===If the above doesn't work for your wireless keyboard=== | ===If the above doesn't work for your wireless keyboard=== |
Revision as of 03:57, 18 February 2013
Contents
More Information
For background information see this page: https://help.ubuntu.com/community/AppleKeyboard
tee
like so
$ echo 0 | sudo tee /sys/module/hid_apple/parameters/iso_layout
Function keys do not work
If your Template:Keypress keys do not work, this is probably because the kernel driver for the keyboard has defaulted to using the media keys and requiring you to use the Template:Keypress key to get to the Template:Keypress keys. To change this behaviour, you have to change the driver setting. Do the following as root:
# echo 2 > /sys/module/hid_apple/parameters/fnmode
If it tells you that the file doesn't exist, you probably have an older kernel and will have to do the following instead:
# echo 2 > /sys/module/hid/parameters/pb_fnmode
Place whatever option worked for you in /etc/modprobe.d/hid_apple.conf
to make the setting permanent.
If the above doesn't work for your wireless keyboard
If hid_apple/parameters
and/or hid/parameters/pb_fnmode
is missing in a recent Apple Bluetooth keyboard model and kernel 3.4.
First thing: identify your keyboard. Execute as root (hidd
is part of package bluez from the official repositories):
# hidd --show
You should see something like:
40:CA:EC:32:85:AB Apple Wireless Keyboard [05ac:0255] connected
So with the vendor (05ac) and device (0255) ID it's easier to find out if the current kernel has support for it.
Actually, the above device is listed in the linux kernel 3.4. If you check drivers/hid/hid-ids.h
you should see the following line:
#define USB_DEVICE_ID_APPLE_ALU_WIRELESS_2011_ANSI 0x0255
But support for the Function Key is missing.
In order to fix it rebuild your kernel from abs with the following patch: http://pastebin.com/CvFJz3Fn
This bug is already reported upstream https://bugzilla.kernel.org/show_bug.cgi?id=43135 and part of the vanilla kernel since 3.5
< and > have changed place with § and ½
If the < and > are switched with the § and ½ keys, run the following command in your graphical environment:
$ setxkbmap -option apple:badmap
Place that command into ~/.bashrc
file to have it run automatically when you log in.
You can also apply the change system-wide by creating (or editing) /etc/X11/xorg.conf.d/10-keymap.conf
as such:
Section "InputClass" Identifier "keyboard catchall" MatchIsKeyboard "true" Driver "evdev" Option "XkbOptions" "apple:badmap" EndSection
If the above approach doesn't seem to work, you can add these two lines to your ~/.Xmodmap
file:
keycode 49 = less greater less greater bar brokenbar keycode 94 = section degree section degree notsign notsign
If you use a Canadian multilingual layout (where the "ù" and the "/" is switch) use this :
keycode 94 = slash backslash slash backslash bar brokenbar keycode 49 = ugrave Ugrave ugrave Ugrave notsign notsign
Then run xmodmap ~/.Xmodmap
. This command can also go into ~/.bashrc
.
< and > have changed place with ^ and °
With German layout, circumflex/degree symbol and 'smaller than'/'bigger than' are exchanged.
The new way:
First, try if the new method works for you (you have to be root)
# echo 0 > /sys/module/hid_apple/parameters/iso_layout
To make the changes permanent add the following line to /etc/modprobe.d/hid_apple.conf
:
options hid_apple iso_layout=0
To fix this the old way, do the following:
$ xmodmap -e 'keycode 49 = less greater less greater bar brokenbar bar' -e 'keycode 94 = dead_circumflex degree dead_circumflex degree U2032 U2033 U2032'
Now try your keys. When it works, you may want the change permanently. So execute this:
$ xmodmap -pke | grep " 49" >> ~/.Xmodmap $ xmodmap -pke | grep " 94" >> ~/.Xmodmap
Media Keys
The evdev driver should produce keycodes that map to the appropriate keysyms for your media keys by default. You can confirm that by running xev
in a console window and watching the console output as you press your media keys.
For these keys to have any effect, you will have to assign actions to them. Refer to Extra Keyboard Keys in Xorg for more about that.
If you have confirmed that your media keys are not producing the correct keycodes, create or edit the ~/.Xmodmap
file so that it includes these lines:
keycode 160 = XF86AudioMute keycode 176 = XF86AudioRaiseVolume keycode 174 = XF86AudioLowerVolume keycode 144 = XF86AudioPrev keycode 162 = XF86AudioPlay keycode 153 = XF86AudioNext keycode 101 = XF86MonBrightnessDown keycode 212 = XF86MonBrightnessUp keycode 204 = XF86Eject
and then run xmodmap ~/.Xmodmap
. Place that command in the ~/.bashrc
file to have it run automatically when you log in.
PrintScreen and SysRq
Apple Keyboards have an Template:Keypress key instead of a Template:Keypress/Template:Keypress key. This means that Alt+SysRq sequences do not work, and application actions associated with Template:Keypress (such as taking screenshots in many games that work under Wine) do not work. Both issues can be addressed by installing keyfuzzAUR from the Arch User Repository.
With keyfuzz installed, run the following command:
echo "458856 99" | /usr/sbin/keyfuzz -s -d /dev/input/by-id/usb-Apple__Inc_Apple_keyboard-event-kbd
458856 (0x070068) is the scancode of Template:Keypress, and 99 is the keycode of Template:Keypress/Template:Keypress. You can determine the scancode of a particular key with getscancodesAUR from the AUR, and the keycode from /usr/include/linux/input.h
.
Other versions of the Apple Aluminum Keyboard may require a slightly different device path, so adjust it as needed. You can make this change permanent by putting the command in /etc/rc.local
.
Treating Apple Keyboards Like Regular Keyboards
If you want to use your Apple keyboard like a regular US-layout keyboard, with Template:Keypress on the left side of Template:Keypress, you can use the AUR package un-apple-keyboardAUR. Currently it only works for the aluminium USB model. The package does the following things:
- Adds a
/etc/modprobe.d/hid_apple.conf
file which enables the Template:Keypress keys by default, as above. - Uses keyfuzz to remap Template:Keypress to Template:Keypress/Template:Keypress, Template:Keypress, and Template:Keypress, respectively
- Swaps the ordering of the Template:Keypress and Template:Keypress (Template:Keypress) keys to match all other keyboards, again using keyfuzz.
- Applies these changes automatically when you plug in your keyboard, with a udev rule.
You will need to add /etc/modprobe.d/hid_apple.conf
to FILES in mkinitcpio.conf. Otherwise if you boot your computer with the Apple keyboard plugged in, the F keys will not be the default.