HackLabTO’s Lisp Machine Keyboard

After years of sitting in storage, my deadbeat ex-housemate’s old Symbolics XL1200 Lisp Machine has found a new home: HackLabTO, located in Accordion City’s Kensington Market neighbourhood. I thought I’d post a couple of pictures of its keyboard, which is a little different from the ones we see every day.


The keyboard is bristling with modifier keys. Yes, we’ve all got shift and control, but most of us don’t have hyper, super, and meta keys. I have a guess as to what the network and local keys do.


Well before the Sony Playstation, Lisp machines had square”, “circle” and “triangle” keys:


And here’s a look at the right side of the keyboard. Today’s keyboards have an auto-repeat feature, which made the repeat key obsolete:


37 replies on “HackLabTO’s Lisp Machine Keyboard”

I heard you can write a fully functional Lisp program just by holding down the repeat key and alternating between the left and right parentheses keys for 20 minutes.

Paul Graham will have my head for that comment.

It’s funny though – considering that it’s a LISP machine, you’d think they would have put the curly braces closer to the middle of the keyboard – maybe instead of the G and H? Or at least not make them shifted?

@Andrew: LISP is a big fan of parens, not curly braces. I’m not really seeing a use for curly braces on a LISP keyboard. The parens however, are appropriately unshifted, where we have our square braces nowadays.

@Andrew: It’s all right that the curly braces are out of the way, because Lisp uses parentheses instead. And you’ll notice they actually did provide means to type parentheses without requiring shift (look to the right of P).

Lisp doesn’t define any particular use for the braces. The parens are right where they should be and unshifted though, as you would expect.

Andrew: The braces are shifted, but look just to the left of Back Space. There are two extra (non-shifted) parenthesis. Just in case your paren-matching technique is too hot for just one pair of keys.

The Network and Local keys were escapes to get you back to the appropriate client (back in the Telnet days).

That’s actually a very late model keyboard. The earlier ones had blue keys.

Those were the second best keyboards ever manufacturered (by Microswitch, with Hall-effect keys). The very best ever made were the original MIT AI Lab keyboards.

In some versions of LISP, the } character was called “super parens” and completed all open left parens. Very useful, since writing LISP was so “easy” (it’s a functional language) that I spent most of my time counting parens before } was invented.

This keyboard violates the most important rule of keyboard design — the backspace key should be at least as large as two contiguous keys.

C: The reason there are symmetrical sets of modifers on both sides of the keyboard is avoid the pinky problem. If you want to modify a key on the right-hand side you use the left-hand modifiers, and vice versa. It’s surprisingly hard to find a modern keyboard that gets this right. One such is the USB aluminium Apple Keyboard. Alas the wireless version has the same cramped and crippled modifier layout as their laptop keyboards.

Scott: Given this keyboard has a nice large Rubout key, odds are Backspace really does just move the cursor to the left.

On the Symbolics Lisp Machines (which was derived from the MIT machines) the only use for the “Local” key that I ever learned was to make the screen brighter or dimmer (Local-B for brighter, Local-D for dimmer). Hmmmmm, maybe you could control the sound volume too. It’s been 20 years since I used one :-).

@greggT — the InterLisp dialect (used on the Xerox Dandelion, etc. Lisp machines) used ‘]’ for the “close all previously open parens” functionality. In fact, I think they later set it up so that it did that, or closed up to the first ‘[‘. Never heard of ‘}’ being used as a super-closer, but then I pretty much only ever used ZetaLisp (Symbolics) and then CommonLisp dialects professionally. Counting parentheses was the technique you used until someone showed you Zmacs, which blinked closing parens. Then they taught you proper Lisp indenting, and you never had to count again :-)

@greggT: In Interlisp, the square brackets “[“,”]” were called “super-parentheses”, see the Interlisp Manual. If you were indeed counting parentheses, you were perhaps not making proper use of the Interlisp IDE.

RE: Playstation

And don’t forget *every* keyboard has an X key :)

RE: Some current modifiers

I think meta and super are in all current keyboards, just renamed: meta = alt; super = windows (and I think also apple’s command, not completely sure). I also forgot the correspondence of the windowos contextual menu key (if there’s one).

At last this is how they are called in some Linux’s keyboard layout managers I recall having seen.

The “circle,” “square,” and “triangle” keys were referred to as “Bubblehead,” “Blockhead,” and “Pinhead.”

Brings back memories. Memories of dread at as I sat down at a keyboard that could and would do things to my code that were deeply mysterious. I learned to tune out the extra keys, learned to direct my fingers carefully away from the complicated morass of extras and not to look too carefully at those keys for fear I’d be perversely tempted to press one. And then, of course, I would press one, by accident, and a chill would come over me as I wondered what I had done to which of the dozens of windows I had open. Ah, memories. Thanks for sharing.

The lambda key is obtained by holding down “Symbol” and pressing the
“L” key. You can get the entire Greek alphabet that way. In the
earlier model keyboard, the Greek letters were stamped on the keys, on
the front. On the top were the conventional letter and digits and
such, and above them on the letter keys were various symbols from
math, and, I think, from the APL character set.

greggT, the super-parens were square brackets, not curly braces, in
Interlisp. The people who used the Lisp machine (and all those who
became the Common Lisp people) did not like the super-paren idea, for
various reasons.

Real Lisp programmers never count parens. The editor makes it clear
which close paren matches which open paren.

chupish, the good thing about the original MIT AI Lab (“Knight TV”)
keyboards was the “feel” of the keys. They were really great. Every
time we went to a new generation of keyboard, the keys felt worse. On
the PC I’m using right now, I have a Unicomp keyboard, which is the
best I’ve found on the market.

Huw, you could try getting in touch with David Schmidt of Symbolics

Scott, the key used to erase the previous character was “Rubout”, to
the left of the “A”, and it’s very wide.

yachris: Yes, the “Local” key was intended to do “local” things. It’s
actually there because the Knight TV’s had a “Local” key, which meant
commands that were intercepted by the PDP-11 that connected the Knight
TV system to the AI lab PDP-10, via the home-grown 10/11 interface.
You could use Local to look at someone else’s screen, open the 9th
floor door, or call the elevator to the 9th floor. Not to be outdone,
for the Lisp machine we invented very simple network protocols for
these things; the server ran on the PDP-10, which would reach out over
the 10/11 interface to set the bits on the PDP-11’s UNIBUS to open the
door or call the elevator!

Leave a Reply

Your email address will not be published. Required fields are marked *