In my first post of this 3 part series, I detailed why Alfred extends the PC keyboard into the ultimate productiivty tool. This post will focus on another free OSX app, BetterTouchTool (BTT). BTT allows you to map any recognizable gesture to any system command or keyboard in OSX, at the global or application-specific level. But before we get into the details of BTT, let's look at the evolution of the computer mouse.
Gestures > point and click
How do most 1-year-old children express that they want something? They point. It's a beautifully simple concept. It's fundamental to human interaction and communication. If you want stuff, you point at it. If you see something of interest, you'' point. If you want to show your friends something cool, just point.
The original conception of a computer mouse was based on this principle. Just point (and click).
This worked well when you couldn't do much with a computer, and when you didn't spend all day sitting at a computer. But today, hundreds of millions of people spend all day sitting in front of a PC. Every few seconds, people demand something new of their computer: open a new email, send an email, open file browser, select a folder, select another folder, select another folder, copy, switch to another application, paste. I Googled to find the average number of mouse clicks per person per day. I couldn't find any well-crafted studies but the preliminary Google results suggest 472. I probably click 4-5x as much as the average user, putting me over 2000 clicks per day.
To make matters worse, you often have to click at opposite ends of the screen. In both OSX and Windows, the 3 primary window management controls (red/yellow/green and minimize, de-full screen, and X) are at the top of the screen, and the primary application management tools are at the bottom of the screen by default (Dock and Task Bar). So that means you have to incessantly move the mouse across the entire screen, and make sure that your mouse lands on a small target every time.
This UI paradigm is stupid. How many times have you clicked on the button next to the one you wanted, such as "Don't Save" instead of "Save"? How many times have you clicked "X" instead of Minimize? How many times have you clicked on Chrome instead of Mail?
Because the mouse offers 1 pixel of accuracy (the human finger offers 50-70 pixels of accuracy), PC OSes and applications have been designed with UI elements that are only a few pixels apart. Although the mouse offers the resolution to differentiate between these UI elements, humans don't have nearly the dexterity to quickly move the mouse and land on small targets in quick succession. The mouse, coupled with modern desktop OSes and applications, promotes frustration.
BTT makes all of these problems go away. It solves every problem that the mouse created. And does so much more. BTT accomplishes all of this by circumventing the entire concept of the mouse as you knew it.
Back in the dark ages of computing when mice were still a novel concept, they couldn't do more than point-and-click. At any point in time, mice tracked a single data point - which direction do I move next: up, down, left, or right?
Contrast the mouse of 70s and 80s with the modern Apple trackpad. The modern Apple trackpad can track up to 10 fingers at once. It doesn't just track them in a single position at a single point in time, it can understand and recognize 10 different fingers moving across a fixed x-y plane with absolute coordinates at different speeds and angles. It's not location or time bound. It tracks raw input data across 2 dimensions, location and time, that the original mouse never could.
So what can you do with a trackpad and OS that can make sense of all of this data? Only 1 thing, actually. Make beautiful art using IOGraph. I crafted this spectacular piece while writing this blog post.
With BTT, you can just perform just about any software function in your Mac using your trackpad. BTT lets you map any gesture that your Apple trackpad can recognize to any keyboard shortcut or system command. These commands can be global or application-specific.
That was quite a bit to digest, so let's walk through BTT step-by-step. After that, I'll offer a few examples that really illustrate the power of BTT. Remember, BTT operates in the background and never appears on the screen, unlike Alfred. The graphical BTT UI exists to configure how BTT behaves in the background.
Here's a screenshot of BTT. The red numbers and lines are courtesy of my exceptional PhotoShop skills.
For now, ignore the red 1. Although that radio control is the highest organizational level of the BTT UI, we'll come back to it later.
The red 2 shows a list of apps running down the left side of the screen. These are apps that I've configured BTT to work with. Note that "Global" is listed at the very top.
The red 3 shows a list of gestures that I'm using for the selected app in the red 2 list. I've implemented global commands for the gestures: four finger click, four finger swipe down, three finger click, and three finger tap. Some of those gestures are repeated because the repeated entries use modifiers. We'll revisit modifiers in a bit.
The red 4 shows the commands that I've mapped to each of the gestures in red 3. So for the "four finger click" gesture, if I click the trackpad with four fingers at anytime while using my Mac, it will open a new Finder window, and if Finder is already the foreground app, BTT will open a second Finder window. For the second gesture, if I swipe down with 4 fingers at anytime, the BTT will simulate pressing Control+Space. In my Mac, Control+Space invokes a window-management app, Divvy, that I frequently use for granular window management. For the fifth gesture, if I click the trackpad with 3 fingers at anytime, BTT will simulate pressing Command+W, which is the global OSX command to close the active window.
Lastly, the red 5 shows modifiers for a given gesture. To understand modifiers, look at the third gesture in the screenshot above. If I hold Command while clicking the track pad with 3 fingers, BTT will maximize the active window. Although modifier functionality technically breaks the trackpad-only designation that I gave BTT, it still falls in line with the thesis of "you don't have to move your mouse."
Next, I'd like to show you my BTT configuration for Chrome, where you can see BTT really shine.
In Chrome, if I rotate right, BTT simulates pressing Command+R = page refresh. What an intuitive gesture! If I swipe right with 3 fingers, BTT switches to the tab to the right of my current tab. If I swipe left with 3 fingers, BTT switches to the tab to the left of my current tab. These 2 commands alone make BTT incredible. I switch tabs dozens of times everyday. Moving the mouse onto a tab, then moving back into the content view of Chrome to click on links and content is horribly inefficient. BTT is 90-95% more efficient in this use case. In fact, given that BTT gestures never take more than .1-.2 seconds, BTT is always 90-95% more efficient than the alternative, if not more.
If I swipe up with 3 fingers, BTT opens tab-Expose/Mission Control within Chrome. This is fantastic, because it's completely intuitive given that OS-level Mission Control is a four-finger swipe up at the global level. Three fingers up shows all my open Chrome tabs, four fingers up show all my apps. It's an elegant and intuitive setup.
Lastly, I'd like to revisit the red 1 from the first BTT screenshot. That radio control exists as a parent to the app list of red 2. BTT allows you to customize gestures per application per input device. I don't have any configurations saved for anything other than the native trackpad, but for people that utilize other input methods, this feature is a blessing.
Once you first begin using BTT, you might not find it to be all that useful. Your brain has been hardwired to the point-and-click mentality. But it can be rectified. With a little practice, your brain will discover the potential of the modern trackpad. As you develop gesture fluency, you can swipe your way through your OS and apps with ease. You'll find that your productivity will increase, especially when you're in the zone.
I attribute a healthy proportion of my raw-computing productivity to Alfred and BTT. Together, these apps reduce the friction of modern OSes across every interaction between the human and the computer.
??? > gestures > point and click
In my last post, I concluded by suggesting that the Alfred command line wasn't the end-all-be-all of "command line" computing UI. It isn't. On the other hand, BTT is, within the context of the modern multi-touch trackpad. BTT has fleshed out everything that modern trackpad hardware can recognize. To see why this statement is true, think about what BTT does: BTT allows you to map any gesture that the hardware trackpad can recognize to any software function. In input-output terms, BTT can map any trackpad-recognizable human input to any desired software output. I'm not suggesting we won't see new physical UIs, but within the world of the trackpad, BTT is the end-all be-all. BTT is still being actively developed, but the upcoming features aren't changing the nature of the beast.
Stay tuned for my last post in this 3-post-series on PC UIs, in which I'll discuss the intermingling of the keyboard and trackpad, and consider what's next for "command line" UIs.