Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
executable file 71 lines (56 sloc) 2.95 KB
Symbolics keyboard adapter, based on Teensy keyboard example
This directory contains a Firmware for the Teensy single board
computer that allows interfacing a Symbolics keyboard to an USB host.
It has been used with both old-style and slim keyboards.
The firmware can be build using a standard gcc-avr tool chain using
the "make" command, which will build both the Teensy 1.0 and Teensy
2.0 hex files. Make sure that you use the correct hex file for your
hardware. You can determine what hardware you have when you open the
"Verbose Info" Window in the Teensy loader GUI (under Help in the
To update the firmware without opening the keyboard, you can use the
boot loader command key. This used to be Local+B in older releases of
the firmware, but it is now Local+Abort because Local is mapped to the
Command/Windows key so that using a Mac with the keyboard is easier.
Technical information:
The Symbolics keyboard acts as a shift register with 128 bits. Each
key is represented by one bit in the shift register. The hardware
interface consists of a clear line which is used to signal the
beginning of a read cycle, a clock line, and a data line. All signals
are active low. The keyboard changes the data line on the rising edge
of the clock. It should be read near the falling edge of the clock by
the host.
The keyboard needs to be interfaced to the Teensy board as
follows. The wire colors specified are those used in the original
modular cable supplied with the keyboard:
blue GND
green 5V
red D4 DIN
black D5 CLK
white D6 CLR
The keyboard implements two locking functions, caps lock and mode
lock. Both of these are implemented as switches, not as buttons.
Host systems do not usually expect switches on keyboards, so
precautions must be taken to synchronize their state to the host's
The "Caps Lock" key is implemented so that it works as usual, i.e. it
is transmitted to the host as if it were a button. The host sends
back its caps lock state through the keyboard LEDs. Thus, the
controller firmware can synchronize the host's state with the state of
the caps lock switch on the keyboard.
The "Mode Lock" key is used to switch the keyboard between the classic
Symbolics layout and a variant that assigns the modifier keys on the
right side of the space bar to be cursor keys. This mode is called
The "Local" key is mapped as "Command" or "Windows" key.
Local+Abort boots the AVR into the boot loader so that it can be
reprogrammed through USB by the host.
Mapping of the symbolics key number to an USB key number is done
through the mapping table defined in the file There are
two separate tables, one for normal mode and one for f_mode. The
mapping table is normally autogenerated by the keymap generation
program contained in make-keymap.lisp, but it can be manually edited
if no Lisp evironment is available.
Author: Hans Huebner (