Those wishing to automate their Macs without spending the money or yielding the RAM required to run one of the big commercial macro programs may wish to consider KeyQuencer. Once a $10 shareware program, the product of the ingenuity and generosity of the well-known Alessandro Levi Montalcini, it has now been upgraded to version 2.0 and sells as a commercial macro utility from Binary Software for $40. It runs quickly and cleanly in a small RAM footprint (less than 200K) under System 7.x, and most features are said to run (though without official support) under System 6.0.4 and later.
What It’s Like — KeyQuencer macros live in "suitcases." The default suitcase loads at startup, and its macros (the active macros) can be triggered by a keystroke combination. Macros in other suitcases can’t be triggered by a keystroke, but are available through a small application, KeyQuencer Launcher, which displays any suitcase as a double-clickable list. Macro names can be up to 31 characters, so the lists can be informative. You might leave the Launcher running all the time, with multiple suitcase windows open; your commonly used macros can be triggered with keystrokes, and if you need a less-frequently used macro (or if you forget an active macro’s keystroke), there it is in one of the Launcher’s lists. (Remember, though, the Launcher is an application, not a dialog or palette, so if you double-click a macro that affects the frontmost window, it will be the Launcher’s window.)
This technique might help make up for the fact that in KeyQuencer, unlike QuicKeys or OneClick, there’s no such thing as an application-specific macro. Once you’ve assigned a keystroke to a macro and made that macro active, that keystroke is unavailable for anything else, system-wide. It takes some planning to come up with keystrokes that have no meaning in any extension, control panel, or application. The danger is that you’ll run out of possible keystrokes, or that you’ll trigger a macro inadvertently. KeyQuencer installs itself with numerous macros already active, so before I knew it, I had accidentally stuffed a HyperCard stack while trying to read its stack script, and moved an important item into the Trash even though I wasn’t in the Finder. A macro can check to see if a certain application is frontmost and either pass along the triggering keystroke or abort. Many of the pre-installed macros perform no such check, though, so be cautious.
Macros are created, edited, named, assigned keystrokes, and copied between suitcases in another application, KeyQuencer Editor. It’s a simple, pleasant place to work. You don’t have to "open" a macro to edit it: when you click a macro’s name in the list, its contents appear in a word-processing pane for viewing and editing. Every macro consists of one or more text commands. You can type these commands, or you can enter them by double-clicking their names in a floating Commands window, which lists all commands and (when a command is selected) possible parameters. An online Help window updates dynamically with a description of the command’s function and parameters.
The contrast between the whole milieu and that of QuicKeys couldn’t be greater. QuicKeys has short macro names and confusingly arranged menus for selecting macro types, and editing happens in cascades of modal dialogs that must be completely dismissed before you can test a macro, discover that it doesn’t work properly, and open everything up again. In KeyQuencer, both Launcher and Editor are applications, with normal windows – which, if you have about 700K of RAM to spare, you could leave open all the time. Editing is textual, and you can save the macro you’re currently editing and test it without closing anything.
Communication — There is no special KeyQuencer menu trigger, comparable to the QuicKeys menu; but James Walker’s shareware OtherMenu, which is included, can trigger a KeyQuencer macro. Similarly, KeyQuencer has no time trigger, but if all you need is absolute time (as opposed to time since an application has started) you can use Chris Johnson’s shareware Cron, which is also included. You can install a Control Strip module or NowTabs plug-in, from which you can choose and launch an active macro. You can talk to KeyQuencer from AppleScript or Frontier, including passing variables back and forth. Macros can even be incorporated into the CodeWarrior build process.
KeyQuencer can perform any of its functions on a remote networked computer that is also running KeyQuencer; you may, but do not have to, set up the desired functionality as a KeyQuencer macro on the remote computer. (I have not tested this.)
The Language — KeyQuencer comes with about 260 pre-written macros; if you want to modify one or write a new one, you must use the KeyQuencer language, a rigid, hard-to-remember, command-plus-parameters idiom, where you just know you’ll never wean yourself off online help and the reference manual.
In fact, it’s not a language so much as a collection of commands. There are no subroutines: the only way to invoke one macro from another is to tell the first macro to type the second’s keystroke. There are no looping, branching, or conditional constructs, but there’s a Repeat command (that takes as its parameter a quoted string consisting of one or more macro commands) and commands that abort a macro if a certain application is frontmost or if two strings match. There are no arithmetic operators, but there’s an Evaluate command which stores arithmetic expressions in the clipboard and a Counter command that maintains a temporary increment-decrement counter. There are no string-processing functions, but there’s a clipboard-munging command that can do some. There are variables, but the syntax for passing them around is hair-raising.
To set A to 1 and B to 2 and then add them and put the result into C, you say:
SetVariable A "1"
SetVariable B "2"
Evaluate "[a]+[b]" copy — this puts the result in the clipboard
SetVariable C clipboard — this gets it out again
To type the numbers 1 through 10, each followed by a tab and a return, you say:
Repeat 10 "Counter increment save\rType $counter \q\t\r\q"
What It Can Do — Every KeyQuencer command corresponds to a small file living in a folder (in your System Folder) called KeyQuencer Extensions. Removing one of these files from the KeyQuencer Extensions folder and restarting disables that command; adding a new one, if a new one is written, expands the repertoire of commands. (If there are commands you aren’t using, disabling them lets you save still more memory; if you’ve just a few macros using just a few commands you can run KeyQuencer in less than 80K!)
There are the usual macro behaviors such as pressing a key, typing a string, choosing from a menu, clicking the mouse, waiting for various types of events. There are also extras similar to those in QuicKeys – and some rather more capable, such as changing applications or windows, setting speaker volume and monitor depth, choosing a printer, and mounting a server. There is a powerful Batcher application: for each copy you make, you preconfigure what macro it should run, then drag & drop files or folders onto it for processing.
KeyQuencer also has an eclectic miscellany of commands, such as: force a window or screen refresh; take a screen shot of a window or region; launch or close your PPP connection; get file info; dramatically show the cursor’s position; relocate the frontmost window; drive an audio CD; alter the contents of the clipboard; manipulate ten clipboards; and read and write between the clipboard and a file.
Minor Annoyances — These are things I noticed in passing, which probably shouldn’t affect one’s overall judgment of KeyQuencer. A few commands may not work perfectly: the sound-volume commands had no effect on my computer; the "scroll top/bottom" commands don’t work in Nisus Writer. Some keystroke-combination triggers (such as the one that toggles KeyQuencer on and off) are not user-configurable. On my computer, Now SuperBoomerang sometimes didn’t work within the Editor, and opening a suitcase sometimes writes garbage in the Online Help window and crashes. Within the Launcher, you can’t configure the sort order in which the lists appear (by name versus by keystroke); you’re stuck with the sort order you were using in the Editor the last time you saved. The syntax of the HyperCard XCMDs is not documented, and, finally, the manual could use more clarity of explanation and design.
Slouch To Judgment — Here I’m supposed to sum up and tell you whether this is the macro utility you’ve been waiting for all your life. Truthfully, I just don’t know. Though this is one heck of a program, I suspect it’s not everyone’s cup of tea; a great deal depends upon your mindset, your priorities, and your present repertoire of tools. Your best bet is to download the demo version that is supposed to appear soon on Binary’s Web site and see how you like it. Meanwhile, some provocative reflections.
For sheer functionality, there’s probably little QuicKeys can do that KeyQuencer can’t somehow be made to do, and KeyQuencer has some abilities that QuicKeys lacks. Still, to some, the language might feel too daunting, or not fully-featured. My personal macro Holy Grail is to be given tools to build tools, and my mind runs along a one-program-one-function organizational track; so to me, KeyQuencer feels like a miscellany of extensions bundled together by an intractable language. I prefer OneClick’s fuller programming and informational constructs that permit me to build my own multiple clipboards (vs. KeyQuencer’s Clipboard command), to drive AppleScript to open or close MacPPP (vs. KeyQuencer’s PPPSwitch), to obtain a list of windows and close all but the front one (which, as far as I can tell, KeyQuencer can’t do at all). Also, since no one program does everything I want, I don’t mind calling upon a battery of scripting tools to help me – Frontier, AppleScript, HyperCard, and so on. Possibly I’m just weird. I suspect your own feelings about these philosophical questions will be more decisive than feature issues such as KeyQuencer’s lack of application-specific macros and recordability. For those who like a collection of ready-built high-level tools, KeyQuencer should prove attractive.
Most important, KeyQuencer operates to a high rigorous standard, something that not every macro program does. In the case of something so simple as a keystroke that scrolls the active window up one line, OneClick can’t cope with Nisus Writer’s windows because the scroll bar’s up-arrow isn’t in the normal location, but KeyQuencer "tells" the window to scroll in some deeper way and has no problem. KeyQuencer can simulate double-control-clicking on a window’s title bar, which on my system activates WindowShade; I can’t get OneClick to do that. This testifies to the dedication, the know-how, and the philosophical outlook of KeyQuencer’s author, Alessandro Levi Montalcini. It’s wonderful that such clean, powerful functionality can emanate from one person’s brain in this day and age of megalithic software development corporations.
Another Deal — We’ve also worked out a deal for TidBITS readers who wish to purchase KeyQuencer from Cyberian Outpost. If you use the specific URL below, you can order KeyQuencer 2.0 online and receive a $4 discount (think of it as free shipping).
Binary Software, Inc. — 310/449-1481 — 310/449-1473 (fax)