On my quest to do everything on the Mac conveniently with minimal mouse use, I made stickers for the extra function keys on the Apple keyboard using printable clear address labels. I found a template for Avery 5630 labels and some appropriate icon images. I didn’t varnish over the printed label, but I’ll try that if these ones end up wearing out.
The keys are:
F16 quaver – opens the Alfred app mini music player, a convenient keyboard driven UI for selecting albums and songs in the Music app.
F17 calendar – opens ItsyCal, a small and fast calendar program that lives in the menubar, can be navigated from the keyboard, and which syncs with the system calendar and Google calendar. ItsyCal it great and giving it a dedicated launch key is definitely the way to go.
F18 bell – opens the system notification panel with weather and Todoist reminders, among other notifications
F19 screen – show the desktop. I don’t use this very often, but it’s nice to have a key for it when I need to grab a file quickly.
Perhaps some explanation is in order of the other ways I’ve customized the Mac for keyboard-first navigation. The main-mast is Alfred app, a wonderful tool for quick launching apps, navigating to folders, opening server sessions, running calculations, launching web searches, and on and on. It’s a bit like Apple’s Spotlight search, but both more powerful and more customizable. Almost everything I need to do regularly that isn’t on a shortcut or function key can be reached with a short command abbreviation in Alfred.
Karabiner Elements is another program needed to make keyboard bindings that aren’t possible using the macOS keyboard preferences panel. ‘Key bindings’ is just a programmerish way of saying that you want to customize which keys do what. For example I have the Caps Lock key bound as the hot key to open Alfred. This is huge, probably my favorite customization, because it takes an almost useless key and makes it very useful!
macOS has a slightly schizophrenic view of the purpose of function keys, many of which have a default system-wide function printed on the key (e.g. screen brightness, volume, etc.). These are useful, but if you want to also use the function keys for a particular application specific purpose, you have to use a different mode which replaces those default key bindings with the application specific function keys. There’s a key marked fn that lets you access the other set, but it’s awkwardly placed for use as a key modifier and so doesn’t much help. Karabiner Elements finesses this dilemma by letting you choose on a key by key basis whether you want the default system behavior or to pass the key through to the current application.
Finally I use a program called AltTab to customize the task switcher. In macOS the command-tab key combination is good for switching between programs, but it won’t switch between windows within a program. For that purpose the default binding of command-backtick does not work well. Each time you hit the key it cycles to the next window, but it doesn’t re-order the window stack to put the new top window first. So you can’t just hit command-backtick repeatedly to flip between the top two windows. You have to cycle through all of the app’s windows in sequence, which is tedious, or alternate command-backtick and command-shift-backtick, which is hard to reach and to remember which one to press next. AltTab fixes this by letting you cycle through windows in the style of the Microsoft Windows alt-tab switcher, which does keep the most recent window first. I have it configured to flip between windows in the current app (command-backtick) and between all windows in the system (option-tab). With the default command-tab binding to switch between apps, that makes three different ways to switch windows from the keyboard. That may be overly complicated, but I don’t see a simpler way that still works for all common situations. I suspect one could write a customized switcher that improves on AltTab by providing access to all three types of navigation from a single interface, but that’s a job for another day.