Fitts’s Law: If you’re like most computer users, you’ve never heard of it, yet it’s one of the foundations of a good software interface. To oversimplify, Fitts’s Law says that the larger an onscreen object is, and the closer that object is to the pointer, the less time it takes to access the object. Thus, it takes less time and effort to access bigger interface elements (buttons, menus, folders, and the like) than smaller ones at a given distance.
One of the most significant applications of Fitts’s Law relates to the edges of your computer screen. Because the pointer can’t go beyond those edges, any interface element positioned along a screen edge
effectively has an infinite dimension: height (along the top or bottom of the screen) or width (along either side of the screen). In other words, the screen edge eliminates an entire dimension of precision. This is why it’s so easy to access menus and the Dock in OS X, and why screen-corner activations for Mission Control and Exposé are so easy to use: Flick the cursor to an edge or corner of the screen, and the pointer stops at exactly the right distance. Fitts’s Law is a large part of why the Mac’s menu bar is attached to the top of the screen.
Unfortunately, one of the Mac’s other great features, support for multiple displays, conflicts with Fitts’s Law. When you add a second display, you remove the boundary along the screens’ shared edge, and the cursor moves freely between the two displays. This is often what you want, but if you’ve got stuff—folders on the desktop or application palettes, for example—along that edge, accessing those items requires much more precise pointer movement, because the screen edge no longer keeps you from overshooting.
This is all interesting stuff, but what’s it have to do with Mac Gems? Because today’s Promising Prospect, EdgeCase, is designed to restore that lost screen boundary when you have multiple displays. With EdgeCase running, whenever the pointer hits the shared edge between two displays, it stops dead. This works regardless of which direction the pointer is coming from—moving from Display 1 to Display 2, or vice versa.
If you want to move the pointer to the other display, EdgeCase provides three options, each of which can be enabled or disabled separately via EdgeCase’s systemwide menu. The first is to simply bounce the cursor against the edge. In other words, flick the cursor against the shared screen edge, and then move it slightly away from the edge and toward it again. The second is to hold down the Control or Command key while moving the pointer. The third is to move the pointer against the shared screen edge and then hold it there for half of a second; after this delay, you can proceed to the other display. Whichever method you prefer, you get the benefit of a hard screen edge while using multiple displays.
EdgeCase works well, although the bounce and delay options take a bit of practice—I found the modifier-key approach to be the easiest and least disruptive. One feature I’d like to see, however, is the capability to reverse the modifier-key setting. The way I use my Mac, I want the pointer to be able to move freely between displays more often than I want it to stop at the shared screen edge; I’d prefer if EdgeCase stopped the pointer only when I’m holding down a modifier key. I’d also like to be able to choose my modifier key or combination of modifier keys.
My other big feature request is for EdgeCase to enable, using a similar modifier-key approach, virtual borders along the edges of windows. Back when the Mac was new, screens were small enough that many windows filled the screen, so Fitts’s Law meant that it was easy to access any interface element—a scroll bar or toolbar, for example—positioned along a window edge. But today’s displays are big enough to host multiple visible windows simultaneously, requiring more-precise pointer positioning when accessing those elements. (It certainly doesn’t help that Apple and other developers have been making many interface elements smaller and smaller.) I’d love it if holding down the Control key while moving the pointer stopped the cursor at the edge of the current window.
Finally, a minor feature I’d like is the option to assign a keyboard shortcut to EdgeCase’s Enable/Disable menu command, which lets you toggle EdgeCase’s functionality completely. In my testing, I found that I regularly disabled EdgeCase when I was performing tasks that required frequent traversal of my displays, and it would be convenient to be able to do that using a keyboard shortcut.
With these feature requests in mind, I’m looking forward to watching EdgeCase’s development, as I’ve found it to be useful on my multiple-display setup.