HackLabTO’s Lisp Machine Keyboard

by Joey deVilla on February 5, 2009

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:


{ 34 comments… read them below or add one }

1 ReparateMe.com February 5, 2009 at 3:37 pm


2 C February 5, 2009 at 4:51 pm

Man, my pinkies are getting tired just looking at that thing.

3 Robin February 5, 2009 at 4:57 pm

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.

4 Posicionamiento Paginas Web February 5, 2009 at 5:12 pm

Good :)

5 Andrew Burke February 5, 2009 at 5:17 pm

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?

6 B. February 5, 2009 at 5:23 pm

@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.

7 Tad February 5, 2009 at 5:27 pm

Ummm…. LISP uses parentheses (()), which are unshifted on this keyboard.

8 Zach February 5, 2009 at 5:40 pm

@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).

9 Eric TF Bat February 5, 2009 at 5:45 pm

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.

10 Jerhn February 5, 2009 at 5:51 pm

I thought Lisp keyboards had a th key instead of an s key.

11 Josh Strater February 5, 2009 at 5:56 pm

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.

12 Andrew Burke February 5, 2009 at 6:06 pm

Oops you’re right – parens, not curly braces.

Nerd FAIL.

13 JOhnny Cash February 5, 2009 at 6:46 pm

Wow is that some cool stuff or what!


14 Ale February 5, 2009 at 6:58 pm

Where’s the lambda key?

15 Chris Ryland February 5, 2009 at 8:07 pm

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.

16 chupish February 5, 2009 at 10:18 pm

@Chris Ryland

You liked the Knight keyboards best? My favorite was the Space Cadet

17 greggT February 5, 2009 at 10:31 pm

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.

18 Huw February 5, 2009 at 11:44 pm

Is there anywhere you can buy clones of these keyboards? I’d love to have one.

19 Scott February 6, 2009 at 1:58 am

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

20 Paul Collins February 6, 2009 at 6:06 am

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.

21 Paul Collins February 6, 2009 at 6:07 am

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

22 yachris February 6, 2009 at 9:42 am

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 :-)

23 michaelw February 6, 2009 at 10:20 am

@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.

24 maeghith February 6, 2009 at 10:40 am

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.

25 Zigurd February 6, 2009 at 12:20 pm

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

26 Sonia Lyris February 6, 2009 at 1:24 pm

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.

27 Daniel Weinreb February 8, 2009 at 2:05 pm

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!

28 Xah Lee February 9, 2009 at 5:43 am

hi, may i have permission to use 3 of your photos on the following page?
Why Emacs’s Keyboard Shortcuts Are Painful.

i plan to use 3 of your keyboard photos on my server. Full credit and link back to your site will be given.

I’d like to use your photo because they are higher quality than the ones i have or linked to.



29 Joey deVilla February 9, 2009 at 9:33 am

Xah Lee: Go ahead — feel free to re-use the photos on your site!

30 Xah Lee February 12, 2009 at 10:50 am

Hi Joey, thanks Joey. I just did links now. Maybe later i’ll put it on a keyboard gallery page.

31 eegg July 28, 2010 at 11:39 am

lol @Robin. That’s the funniest thing I’ve read today.

32 Jose Luis - Ejemplos Paginas Web January 16, 2011 at 3:07 pm

I like this keyboard

33 Jeane Arneau - Ropa ciclista January 28, 2011 at 7:29 pm

The keyboard is very nice.
But in a few years, all of them are going to be useless.
In fact, there are some video-games that use the corporal motion to perform the reaction.

In other words, no mouses, no keyboards.

34 Gomez December 27, 2011 at 8:30 am

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

Leave a Comment

{ 3 trackbacks }

Previous post:

Next post: