SNAM Quick User Interface for Reticle Reduction Entry of Location

animation demonstrating SNAM reticle

What is SNAM?

The SNAM Quick User Interface for Reticle Reduction Entry of Location (SQUIRREL for short) is a novel location input method which allows those who have trouble using the mouse (or simply don’t like using it) to quickly move the pointer using very few keystrokes.

SNAM stands for SQUIRREL is Not A Mouse.

How does SNAM work?

Press and hold the SNAM modifier key. A reticle comprised of four translucent colored quadrants will appear over the currently focused window. Then push the SNAM zoom-in key corresponding to the quadrant in which your target is located. The reticle will be reduced in size to cover exactly that quadrant. Repeat until the center of the reticle is over your target.

If by accident you find the reticle in the wrong location, simply press the SNAM zoom-out key to back up one step, or release and re-press the SNAM modifier key to reset the reticle to its initial location.

Once the center of the reticle is in the desired location, clicking and scrolling is performed by pressing the appropriate SNAM action key.

What makes SNAM fast?

The key to using SNAM quickly is to look not at the center of the reticle (which jumps around) but at your target (which stays put). The color of the quadrant which is over your target indicates exactly which zoom key to press next.

Any location on the screen can be reached in 10 or fewer keystrokes.

How accurate is SNAM?

SNAM allows pixel-perfect accuracy with at most 10 keystrokes per relocation. Of course, most applications need less accuracy and thus fewer keystrokes. For example, switching to a different window typically requires no more than 4 keystrokes.

What are SNAM’s shortcomings?

SNAM does not currently support drag-and-drop. This feature is desired by SNAM’s author and is thus in the works.

SNAM “freezes” the display while the reticle is active (though not while clicking or scrolling actions are being performed). This does not bother the author in the slightest (since he does not use SNAM but rather a trackball to play Starcraft) and will likely not change.

SNAM gets confused when Num Lock is on. Turn off Num Lock, or include Num Lock when setting up the SNAM modifier. It may be possible to run two instances of SNAM simultaneously – one configured with Num Lock, one without – if you really need to.

SNAM doesn’t work with locking modifiers (meaning that you must hold the SNAM modifier rather than click to enable and click to disable). If there is demand the author will remedy this.

There is a bug in (at least) GCC 4.5.3 which results in a broken SNAM being built. Upgrade (or downgrade) your GCC if this is a problem.

On which systems does SNAM run?

SNAM currently only runs on GNU/Linux based systems. A Windows version is in the works, but I have to figure out what things like lpfnWndProc mean first.

How do I get SNAM?

Download the latest snapshot, or darcs get

How do I build SNAM?

First, apt-get install libxcb1-dev libxcb-render0-dev libxcb-render-util0-dev libxcb-xtest0-dev (or the equivalent on your distro).

Then, make.

How do I install SNAM?

SNAM is just a single binary, snam. Just stick it in a directory somewhere (say ~/bin or /usr/local/bin) and add it to your .xinitrc file (or wherever you configure programs to start at startup).

SNAM does not require a restart of X to run. You can run it at any time, so long as you kill the previously running instance of SNAM with killall snam.

Important: You will also need to assign keys to X11’s mod3 modifier (or whatever you have configured SNAM to use) using xmodmap in order for SNAM to work. For example, if you wish to assign Caps Lock to SNAM, run xmodmap -e 'remove lock = Caps_Lock' -e 'add mod3 = Caps_Lock'. You will also need to add this to your .xinitrc, before the line that executes SNAM.

Alternatively, you can place the above remove and add commands in your ~/.Xmodmap file (on separate lines), and add xmodmap ~/.Xmodmap to your .xinitrc if your distro does not load it automatically.

How do I configure SNAM?

SNAM is configured entirely on the command line. Run snam --help to see a list of options, or run the snam-config program (which requires the tk package to be installed) to interactively create a command line.

Important: If you wish to use Caps Lock as the SNAM modifier, you must first use xmodmap (as explained above) to map Caps Lock to a modifier other than lock (e.g. mod3), before running snam-config.

How do I use SNAM?

Hold down the SNAM modifier key (Caps Lock if you configured SNAM using xmodmap as described above – or try SNAM live by pressing Control on this web page!). The default SNAM grid looks like this:

left-click middle-click right-click
zoom NW zoom NE scroll up
zoom SW zoom SE scroll down
zoom out

This grid is overlaid on the keyboard in three different positions by default. QWERTY users will find this one useful:

M , .
space bar or /

DVORAK users can use this grid:

space bar

And fans of the number pad can use this grid:

7 8 9
4 5 6
1 2 3

Of course, you can use snam-config to reconfigure the SNAM keyboard layout to your liking.

Who wrote SNAM?

SNAM was written by Chris Pacejo. Feel free to send me e-mail if you have questions, suggestions, bugs, or fixes.