While I’ve used Windows since the DOS era, I’ve also used Mac OS and Unix-like systems for nearly as long. One of the biggest features from Unix-like systems that I miss in Windows is Focus Follows Mouse (FFM).
Essentially, FFM is this: whichever window the mouse pointer is over is the window that the mouse can interact with, irrespective of whether the window is the active window for the keyboard or not. This is really useful when using two (or more windows), one of which requires scrolling and the other is used for typing. If your system has FFM, then you can type in one window and scroll the other with no need to switch between them. It may seem like a subtle feature (and it is), but it is also a boon for productivity.
Under Windows XP, I had enabled FFM using the TweakUI PowerToy. This same solution is unavailable in Windows 7.
For Windows 7, there seem to be three solutions available: using Windows 7’s accessibility options, changing the registry, and a small, open source tool.
Ease of Access Center in the Control Panel
If one goes to the Ease of Access Center in the Control panel and selects “Make the mouse easier to use”, there is an option labeled “Activate a window by hovering over it with the mouse.” If this option is selected, an FFM-like use is enabled.
Pros: This method requires neither editing the registry nor downloading third-party tools.
Cons: This method is pretty far from true FFM. When the mouse hovers over a window, not only does it become the active window as far as the keyboard is concerned, but it is also brought to the front of all other windows. This is not always desirable, and is not what I want.
While looking for a solution to enabling FFM on Windows, I came across a blog post detailing the use of a registry hack as a work-around. I won’t detail the steps here as they are available through the link, and I think this solution is inferior to the one below. (That page also talks about TweakUI for Windows XP, but I had used that before finding the above blog.)
Cons: This still changes the active window with respect to the keyboard in addition to the mouse, so typing in the original window isn’t possible while the mouse is in the window we want to scroll. Moreover, editing the registry is somewhat complex and may deter some users from using this approach. Rebooting is also required for the changes to take effect.
The best solution that I’ve found is a program called X-Mouse Controls. It is a stand-alone program that allows one to enable hovering the mouse and select a delay (in milliseconds) without having to fiddle with the registry. There is no install necessary, and it gets the job done. Bonus points for the program being open source (GPL version 3).
Pros: Hovering over a window with the mouse makes it the active window (not exactly what we want) but without bringing the window to the front (closer to what we want). The open-source tool is easy to use, and rebooting the system isn’t required.
Cons: This still changes the active window with respect to the keyboard in addition to the mouse, so typing in the original window isn’t possible while the mouse is in the window we want to scroll. (This is the same con as the Registry Hack.)
X-Mouse Controls seems like the best solution thus far, but it is certainly not true Focus Follows Mouse: each of these solutions makes the window the mouse is in active, so the keyboard will type in that window. In Linux, the mouse can scroll a window while the keyboard types in a separate window. The pseudo-FFM solutions here work pretty well with dual monitors, but it bears mentioning that this behavior is sometimes erratic (I’ve noticed this mostly when using multiple Java windows of different sizes stacked on a single monitor). Fortunately, with X-Mouse Controls enabling/disabling the pseudo-FFM is a breeze.