Using an Apple Keyboard with Xubuntu
# 7 August 2019This is how I got my external Apple Keyboard (pictured) to work with Xubuntu in a similar way to how it works with OSX on my Macbook at work. It’s not perfect, but it does avoid a lot of frustration from trying to use muscle memory OSX keyboard shortcuts on Linux. I am using a British layout keyboard so these changes might need to be adjusted depending on your locale.
Key re-mapping
I used XKB to change the following mappings of ‘real’ keys on the left to ‘perceived’ keys in the OS:
- Swap Cmd <-> Left Ctrl
- Left Ctrl -> Super/Menu/“Windows” key
- Caps Lock -> Left Ctrl (I find this much more comfortable to use on a Mac keyboard, however here we have swapped Cmd and Ctrl anyway so it’s not so useful).
- Left Alt+3 -> Hash (
#
) - Swap
±
and`
(the default keymap appeared to have them the wrong way around)
I followed a useful guide to XKB to learn how to make the necessary modifications.
I made the following change to /usr/share/X11/xkb/symbols/gb
:
diff -ur usr/share/X11/xkb/symbols/gb /usr/share/X11/xkb/symbols/gb
--- usr/share/X11/xkb/symbols/gb 2018-10-25 12:10:20.000000000 +0100
+++ /usr/share/X11/xkb/symbols/gb 2019-05-21 22:31:21.540369459 +0100
@@ -167,10 +167,10 @@
key <AE02> { [ 2, at, EuroSign ] };
key <AE03> { [ 3, sterling, numbersign ] };
- key <TLDE> { [ section, plusminus ] };
- key <LSGT> { [ grave, asciitilde ] };
+ key <LSGT> { [ section, plusminus ] };
+ key <TLDE> { [ grave, asciitilde ] };
- include "level3(ralt_switch)"
+ include "level3(lalt_switch)"
include "level3(enter_switch)"
};
NB: Changing files in /usr/share
is not generally encouraged (your changes will affect other users on the system and can be overwritten by software upgrades) but I found this to be the most expedient solution at the time. Make a backup of /usr/share/X11/xkb/symbols/gb
first by running:
cp /usr/share/X11/xkb/symbols/gb{,.bak}
I then edited /etc/default/keyboard
to contain the following:
# Only XKBVARIANT and XKBOPTIONS needed to be changed
XKBMODEL="pc105"
XKBLAYOUT="gb"
XKBVARIANT="mac"
XKBOPTIONS="ctrl:swap_lwin_lctl,ctrl:nocaps"
BACKSPACE="guess"
Window Switching
Open the Xfce Settings manager -> Window Manager -> Keyboard:
- Switch window for same application: ctrl +
`
(reality is Cmd +`
) - Cycle windows: Ctrl + tab (reality is Cmd + tab)
- Cycle windows (reverse): Ctrl + shift + tab (reality is Cmd + shift + tab)
Spotlight
Open the “Keyboard -> Application Shortcuts” settings menu in Xfce. set xfce4-popup-whiskermenu
to Ctrl + space (on your keyboard this will actually be Cmd + space)
Screenshots
I commonly take screenshots of an area of the screen with Cmd + Ctrl + Shift + 4 on OSX. You can achieve similar functionality by adding an Application Shortcut (like in the last step) in Xfce for xfce4-screenshooter -r -c
as Ctrl + shift + super + 4
Changing fn
key mode
I prefer to swap the fn
key mode so that F
keys do not activate their media functions unless the fn
key is depressed.
This can be done by editing /etc/modprobe.d/hid_apple.conf
to contain the following:
options hid_apple fnmode=2
Reboot for the change to take effect.
Changing mouse scroll speed
This is not strictly keyboard related, but I found that the default mouse scroll rate was much slower on Linux than on OSX. I changed it using the following instructions from the Unix Stackexchange.
Leftovers
Other things I’d like to do if I were to refine this setup:
- Make F13 to F19 usable
- Mimic the behaviour of the excellent SizeUp for OSX. I believe some of this is already possible in Xfce, however I found there were problematic conflicts with other applications using my chosen shortcuts of:
- Cmd+Alt+left arrow -> window to left of screen
- Cmd+Alt+right arrow -> window to right of screen
- Cmd+Alt+m -> maximise
- Get my common VSCode motion shortcuts working (should be possible in VSCode settings):
- Cmd + up - start of file
- Cmd + down - end of file
- Cmd + right - end
- Cmd + left - home
- Alt + right/left - left/right one word