Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ kb(4M) — SunOS 4.0

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

click(1)

oldsetkeys(1)

kbd(4S)

termio(4)

win(4S)

KB(4M)  —  DEVICES AND NETWORK INTERFACES

NAME

kb − Sun keyboard STREAMS module

CONFIG

pseudo-device kbnumber

SYNOPSIS

#include <sys/stream.h>
#include <sys/stropt.h>
#include <sundev/vuid_event.h>
#include <sundev/kbio.h>
#include <sundev/kbd.h>

ioctl(fd, I_PUSH, “kb”);

DESCRIPTION

The kb STREAMS module processes byte streams generated by Sun keyboards attached to a CPU serial or parallel port.  Definitions for altering keyboard translation, and reading events from the keyboard, are in <sundev/kbio.h> and <sundev/kbd.h>.  number specifies the maximum number of keyboards supported by the system. 

kb recognizes which keys have been typed using a set of tables for each known type of keyboard.  Each translation table is an array of 128 bytes (unsigned characters).  If a character value is less than 0x80, it is treated as an ASCII character (perhaps with the META bit included).  Higher values indicate special characters that invoke more complicated actions. 

Keyboard Translation State

The keyboard can be in one of the following translation modes:

TR_NONE Keyboard translation is turned off and up/down key codes are reported. 

TR_ASCII ASCII codes are reported. 

TR_EVENT firm_events (see The SunView System Programmer’s Guide — Appendix: Writing a Virtual User Input Device Driver) are reported.

TR_UNTRANS_EVENT
firm_events containing unencoded keystation codes are reported for all input events within the window system. 

Keyboard Translation-Table Entries

All instances of the kb module share five translation tables used to convert raw keystation codes to event values.  The tables are:

Unshifted Used when a key is depressed and no shifts are in effect. 

Shifted Used when a key is depressed and a Shift key is being held down. 

Caps Lock Used when a key is depressed and Caps Lock is in effect. 

Controlled Used when a key is depressed and the Control key is being held down (regardless of whether a Shift key is being held down or Caps Lock is in effect). 

Key Up Used when a key is released. 

Each key on the keyboard has a “key station” code which is a number from 0 to 127.  This number is used as an index into the translation table that is currently in effect.  If the corresponding entry in that translation table is a value from 0 to 127, this value is treated as an ASCII character, and that character is the result of the translation. 

If the entry is a value from 128 to 255, it is a “special” entry.  Special entry values are classified according to the value of the high-order bits.  The high-order value for each class is defined as a constant, as shown in the list below.  The value of the low-order bits, when added to this constant, distinguishes between keys within each class:

SHIFTKEYS 0x80 A shift key.  The value of the particular shift key is added to determine which shift mask to apply:

CAPSLOCK 0 “Caps Lock” key. 

SHIFTLOCK 1 “Shift Lock” key. 

LEFTSHIFT 2 Left-hand “Shift” key. 

RIGHTSHIFT 3 Right-hand “Shift” key. 

LEFTCTRL 4 Left-hand (or only) “Control” key. 

RIGHTCTRL 5 Right-hand “Control” key. 

BUCKYBITS 0x90 Used to toggle mode-key-up/down status without altering the value of an accompanying ASCII character.  (The actual bit-position value, minus 7, is added.) 

METABIT 0 The “Meta” key was pressed along with the key.  This is the only user-accessible bucky bit. 

SYSTEMBIT 1 The “System” key was pressed.  This is a place holder to indicate which key is the system-abort key. 

FUNNY 0xA0 Performs various functions depending on the value of the low 4 bits:

NOP 0xA0 Does nothing. 

OOPS 0xA1 Exists, but is undefined. 

HOLE 0xA2 There is no key in this position on the keyboard, and the position-code should not be used. 

NOSCROLL 0xA3 Alternately sends ^S and ^Q. 

CTRLS 0xA4 Sends ^S and toggles NOSCROLL key. 

CTRLQ 0xA5 Sends ^Q and toggles NOSCROLL key. 

RESET 0xA6 Keyboard reset. 

ERROR 0xA7 The keyboard driver detected an internal error. 

IDLE 0xA8 The keyboard is idle (no keys down). 

0xA9 — 0xAF Reserved for nonparameterized functions. 

STRING 0xB0 The low-order bits index a table of strings.  When a key with a STRING entry is depressed, the characters in the null-terminated string for that key are sent, character by character.  The maximum length is defined as:

KTAB_STRLEN 10

Individual string numbers are defined as:

HOMEARROW 0x00

UPARROW 0x01

DOWNARROW 0x02

LEFTARROW 0x03

RIGHTARROW 0x04

String numbers 0x05 — 0x0F are available for custom entries. 

LEFTFUNC 0xC0

RIGHTFUNC 0xD0

TOPFUNC 0xE0

BOTTOMFUNC 0xF0 Function keys.  The low 4 bits indicate the function key number within the group:

LF(n) (LEFTFUNC+(n)-1)

RF(n) (RIGHTFUNC+(n)-1)

TF(n) (TOPFUNC+(n)-1)

BF(n) (BOTTOMFUNC+(n)-1)

There are 64 keys reserved for function keys.  The actual positions may not be on left/right/top/bottom of the keyboard, although they usually are. 

In TR_ASCII mode, when a function key is pressed, the following escape sequence is sent:

<ESC>[0....9z

where <ESC> is a single escape character and “0...9” indicates the decimal representation of the function-key value.  For example, function key R1 sends the sequence:

<ESC>[208z

because the decimal value of RF(1) is 208.  In TR_EVENT mode, if there is a VUID event code for the function key in question, an event with that event code is generated; otherwise, individual events for the characters of the escape sequence are generated. 

IOCTLS

Two ioctls set and retrieve the current translation mode of a keyboard:

KIOCTRANS The argument is a pointer to an int.  The translation mode is set to the value in the int pointed to by the argument. 

KIOCGTRANS
The argument is a pointer to an int.  The current translation mode is stored in the int pointed to by the argument. 

ioctls for changing and retrieving entries from the keyboard translation table use the kiockey structure:

structkiockey {
intkio_tablemask;/∗ Translation table (one of: 0, CAPSMASK,
   SHIFTMASK, CTRLMASK, UPMASK) ∗/
#define KIOCABORT1-1/∗ Special “mask”: abort1 keystation ∗/
#define KIOCABORT2-2/∗ Special “mask”: abort2 keystation ∗/
u_charkio_station;/∗ Physical keyboard key station (0-127) ∗/
u_charkio_entry;/∗ Translation table station’s entry ∗/
charkio_string[10];/∗ Value for STRING entries (null terminated) ∗/
};

KIOCSETKEY The argument is a pointer to a kiockey structure.  The translation table entry referred to by the values in that structure is changed. 

kio_tablemask specifies which of the five translation tables contains the entry to be modified:

UPMASK 0x0080 “Key Up” translation table. 

CTRLMASK 0x0030 “Controlled” translation table. 

SHIFTMASK 0x000E “Shifted” translation table. 

CAPSMASK 0x0001 “Caps Lock” translation table. 

(No shift keys pressed or locked)
“Unshifted” translation table.

kio_station specifies the keystation code for the entry to be modified.  The value of kio_entry is stored in the entry in question.  If kio_entry is between STRING and STRING+15, the string contained in kio_string is copied to the appropriate string table entry.  This call may return ­EINVAL if there are invalid arguments. 

There are a couple special values of kio_tablemask that affect the two step “break to the PROM monitor” sequence.  The usual sequence is SETUP−a or L1−a.  If kio_tablemask is KIOCABORT1 then the value of kio_station is set to be the first keystation in the sequence.  If kio_tablemask is KIOCABORT2 then the value of kio_station is set to be the second keystation in the sequence. 

KIOCGETKEY
The argument is a pointer to a kiockey structure.  The current value of the keyboard translation table entry specified by kio_tablemask and kio_station is stored in the structure pointed to by the argument.  This call may return EINVAL if there are invalid arguments. 

KIOCTYPE The argument is a pointer to an int.  A code indicating the type of the keyboard is stored in the int pointed to by the argument:

KB_KLUNK Micro Switch 103SD32-2

KB_VT100 Keytronics VT100 compatible

KB_SUN2 Sun-2 keyboard

KB_SUN3 Type 3 keyboard

KB_SUN4 Type 4 keyboard

KB_ASCII ASCII terminal masquerading as keyboard

−1 is stored in the int pointed to by the argument if the keyboard type is unknown. 

KIOCCMD The argument is a pointer to an int.  The command specifed by the value of the int pointed to by the argument is sent to the keyboard.  The commands that can be sent are:

Commands to the Sun-2, Type 3, and Type 4 keyboard:

KBD_CMD_RESET
Reset keyboard as if power-up.

KBD_CMD_BELL Turn on the bell. 

KBD_CMD_NOBELL
Turn off the bell

Commands to the Type 3 and Type 4 keyboard:

KBD_CMD_CLICK
Turn on the click annunciator.

KBD_CMD_NOCLICK
Turn off the click annunciator.

Inappropriate commands for particular keyboard types are ignored.  Since there is no reliable way to get the state of the bell or click (because we cannot query the keyboard, and also because a process could do writes to the appropriate serial driver — thus going around this ioctl) we do not provide an equivalent ioctl to query its state. 

KIOCSDIRECT

KIOCGDIRECT
These ioctls are supported for compatibility with the system keyboard device /dev/kbd.  KIOCSDIRECT has no effect, and KIOCGDIRECT always returns 1. 

INDEX STRUCTURES

There is a hierarchy of structures for accessing keyboard translation data.  The array keytables contains pointers to the translation data for each of the known keyboard types:

struct keyboard ∗keytables[] = {
&keyindex_ms,
&keyindex_vt,
&keyindex_s2,
&keyindex_s3,
};

Each keyboard type is described by a struct keyboard that contains pointers to the five translation-tables (“Unshifted”, “Shifted”, “Caps Locked” “Controlled”, and “Key Up”) associated with that type, plus bit-masks that indicate what state can persist with no keys pressed, and the key-pair used as the abort sequence for the system. 

An array keystringtab contains the strings sent by various keys, and can be accessed by any translation:

#define kstescinit(c)   {’\033’, ’[’, ’c’, ’\0’}
char keystringtab[16][KTAB_STRLEN] = {
kstescinit(H),/∗home∗/
kstescinit(A),/∗up∗/
kstescinit(B),/∗down∗/
kstescinit(D),/∗left∗/
kstescinit(C),/∗right∗/
};

Index Structure for the Type 4 Keyboard

/∗ Index to keymaps for Type 4 keyboard ∗/
static struct keyboard keyindex_s4 = {
&keytab_s4_lc,
&keytab_s4_uc,
&keytab_s4_cl,
&keytab_s4_ct,
&keytab_s4_up,
0x0000,/∗ Shift bits which stay on with idle keyboard ∗/
0x0000,/∗ Bucky bits which stay on with idle keyboard ∗/
1,77,  /∗ abort keys ∗/
CAPSMASK,/∗ Shift bits which toggle on down event ∗/
};

Index Structure for the Type 3 Keyboard

static struct keyboard keyindex_s3 = {
&keytab_s3_lc,
&keytab_s3_uc,
&keytab_s3_cl,
&keytab_s3_ct,
&keytab_s3_up,
0x0000, /∗ Shift bits that stay on with idle keyboard ∗/
0x0000, /∗ Bucky bits that stay on with idle keyboard ∗/
0x01, 0x4d, /∗ Abort sequence  L1-A ∗/
CAPSMASK,/∗ Shift bits that toggle on down event ∗/
};

Index Structure for the Sun-2 Keyboard

static struct keyboard keyindex_s2 = {
&keytab_s2_lc,
&keytab_s2_uc,
&keytab_s2_cl,
&keytab_s2_ct,
&keytab_s2_up,
CAPSMASK,/∗ Shift bits that stay on with idle keyboard ∗/
0x0000, /∗ Bucky bits that stay on with idle keyboard ∗/
0x01, 0x4d, /∗ Abort sequence L1-A ∗/
0x0000, /∗ Shift bits that toggle on down event ∗/
};

Index Structure for the Micro Switch 103SD32-2 Keyboard

static struct keyboard keyindex_ms = {
&keytab_ms_lc,
&keytab_ms_uc,
&keytab_ms_cl,
&keytab_ms_ct,
&keytab_ms_up,
CTLSMASK,/∗ Shift bits that stay on with idle keyboard ∗/
0x0000, /∗ Bucky bits that stay on with idle keyboard ∗/
0x01, 0x4d, /∗ Abort sequence L1-A ∗/
0x0000, /∗ Shift bits that toggle on down event ∗/
};

Index Structure for the VT100-Style Keyboard

static struct keyboard keyindex_vt = {
&keytab_vt_lc,
&keytab_vt_uc,
&keytab_vt_cl,
&keytab_vt_ct,
&keytab_vt_up,
CAPSMASK+CTLSMASK,/∗ Shift keys that stay on with idle keyboard ∗/
0x0000, /∗ Bucky bits that stay on with idle keyboard ∗/
0x01, 0x3b, /∗ Abort sequence SETUP-A ∗/
0x0000, /∗ Shift bits that toggle on down event ∗/
};

DEFAULT TRANSLATION TABLES

Type 4 Keyboard

Unshifted

Key Value Key Value Key Value Key Value Key Value Key Value Key Value Key Value
00 HOLE 01 BUCKYBITS+ 02 HOLE 03 LF(2) 04 HOLE 05 TF(1) 06 TF(2) 07 TF (10)
SYSTEMBIT











08 TF(3) 09 TF(11) 0A TF(4) 0B TF(12) 0C TF(5) 0D HOLE 0E TF (6) 0F HOLE
10 TF(7) 11 TF(8) 12 TF(9) 13 ALT 14 HOLE 15 RF(1) 16 RF(2) 17 RF (3)
18 HOLE 19 LF(3) 1A LF(4) 1B HOLE 1C HOLE 1D c (’[’) 1E ’1’ 1F ’2’
20 ’3’ 21 ’4’ 22 ’5’ 23 ’6’ 24 ’7’ 25 ’8’ 26 ’9’ 27 ’0’
28 ’-’ 29 ’=’ 2A ’‘’ 2B ’\b’ 2C HOLE 2D RF(4) 2E RF(5) 2F RF (6)
30 BF(13) 31 LF(5) 32 BF(10) 33 LF (6) 34 HOLE 35 ’\t’ 36 ’q’ 37 ’w’
38 ’e’ 39 ’r’ 3A ’t’ 3B ’y’ 3C ’u’ 3D ’i’ 3E ’o’ 3F ’p’
40 ’[’ 41 ’]’ 42 0x7F 43 OOPS 44 RF(7) 45 STRING+ 46 RF(9) 47 BF (15)
(temp) UPARROW



48 LF(7) 49 LF (8) 4A HOLE 4B HOLE 4C SHIFTKEYS+ 4D ’a’ 4E ’s’ 4F ’d’
LEFTCTRL





50 ’f’ 51 ’g’ 52 ’h’ 53 ’j’ 54 ’k’ 55 ’l’ 56 ’;’ 57 ’\”
58 ’\\’ 59 ’\r’ 5A BF(11) 5B STRING+ 5C RF(11) 5D STRING+ 5E BF(8) 5F LF (9)
LEFTARROW RIGHTARROW



60 HOLE 61 LF(10) 62 BF (16) 63 SHIFTKEYS+ 64 ’z’ 65 ’x’ 66 ’c’ 67 ’v’
LEFTSHIFT







68 ’b’ 69 ’n’ 6A ’m’ 6B ’,’ 6C ’.’ 6D ’/’ 6E SHIFTKEYS+ 6F ’\n’
RIGHTSHIFT

70 RF(13) 71 STRING+ 72 RF(15) 73 HOLE 74 HOLE 75 HOLE 76 LF (16) 77 SHIFTKEYS+
DOWNARROW CAPSLOCK
78 BUCKYBITS+ 79 ’ ’ 7A BUCKYBITS+ 7B HOLE 7C HOLE 7D BF (14) 7E ERROR 7F IDLE
METABIT METABIT









Type 4 Keyboard

Shifted

Key Value Key Value Key Value Key Value Key Value Key Value Key Value Key Value
00 HOLE 01 BUCKYBITS+ 02 HOLE 03 LF(2) 04 HOLE 05 TF(1) 06 TF(2) 07 TF (10)
SYSTEMBIT











08 TF(3) 09 TF(11) 0A TF(4) 0B TF(12) 0C TF(5) 0D HOLE 0E TF (6) 0F HOLE
10 TF(7) 11 TF(8) 12 TF(9) 13 ALT 14 HOLE 15 RF(1) 16 RF(2) 17 RF (3)
18 HOLE 19 LF(3) 1A LF(4) 1B HOLE 1C HOLE 1D c (’[’) 1E ’!’ 1F ’@’
20 ’#’ 21 ’$’ 22 ’%’ 23 ’^’ 24 ’&’ 25 ’∗’ 26 ’ (’ 27 ’)’
28 ’_’ 29 ’+’ 2A ’~’ 2B ’\b’ 2C HOLE 2D RF(4) 2E RF(5) 2F RF (6)
30 BF(13) 31 LF(5) 32 BF(10) 33 LF (6) 34 HOLE 35 ’\t’ 36 ’Q’ 37 ’W’
38 ’E’ 39 ’R’ 3A ’T’ 3B ’Y’ 3C ’U’ 3D ’I’ 3E ’O’ 3F ’P’
40 ’{’ 41 ’}’ 42 0x7F 43 OOPS 44 RF(7) 45 STRING+ 46 RF(9) 47 BF (15)
(temp) UPARROW



48 LF(7) 49 LF (8) 4A HOLE 4B HOLE 4C SHIFTKEYS+ 4D ’A’ 4E ’S’ 4F ’D’
LEFTCTRL





50 ’F’ 51 ’G’ 52 ’H’ 53 ’J’ 54 ’K’ 55 ’L’ 56 ’:’ 57 ’"’
58 ’|’ 59 ’\r’ 5A BF(11) 5B STRING+ 5C RF(11) 5D STRING+ 5E BF(8) 5F LF (9)
LEFTARROW RIGHTARROW



60 HOLE 61 LF(10) 62 BF (16) 63 SHIFTKEYS+ 64 ’Z’ 65 ’X’ 66 ’C’ 67 ’V’
LEFTSHIFT







68 ’B’ 69 ’N’ 6A ’M’ 6B ’<’ 6C ’>’ 6D ’?’ 6E SHIFTKEYS+ 6F ’\n’
RIGHTSHIFT

70 RF(13) 71 STRING+ 72 RF(15) 73 HOLE 74 HOLE 75 HOLE 76 LF (16) 77 SHIFTKEYS+
DOWNARROW CAPSLOCK
78 BUCKYBITS+ 79 ’ ’ 7A BUCKYBITS+ 7B HOLE 7C HOLE 7D BF (14) 7E ERROR 7F IDLE
METABIT METABIT









Type 4 Keyboard

Caps Locked

Key Value Key Value Key Value Key Value Key Value Key Value Key Value Key Value
00 HOLE 01 BUCKYBITS+ 02 HOLE 03 LF(2) 04 HOLE 05 TF(1) 06 TF(2) 07 TF (10)
SYSTEMBIT











08 TF(3) 09 TF(11) 0A TF(4) 0B TF(12) 0C TF(5) 0D HOLE 0E TF (6) 0F HOLE
10 TF(7) 11 TF(8) 12 TF(9) 13 ALT 14 HOLE 15 RF(1) 16 RF(2) 17 RF (3)
18 HOLE 19 LF(3) 1A LF(4) 1B HOLE 1C HOLE 1D c (’[’) 1E ’1’ 1F ’2’
21 ’3’ 21 ’4’ 22 ’5’ 23 ’6’ 24 ’7’ 25 ’8’ 26 ’9’ 27 ’0’
28 ’-’ 29 ’=’ 2A ’‘’ 2B ’\b’ 2C HOLE 2D RF(4) 2E RF(5) 2F RF (6)
30 BF(23) 32 LF(5) 32 BF(20) 33 LF (6) 34 HOLE 35 ’\t’ 36 ’Q’ 37 ’W’
38 ’E’ 39 ’R’ 3A ’T’ 3B ’Y’ 3C ’U’ 3D ’I’ 3E ’O’ 3F ’P’
40 ’[’ 41 ’]’ 43 0x7F 43 OOPS 44 RF(7) 45 STRING+ 46 RF(9) 47 BF (15)
(temp) UPARROW



48 LF(7) 49 LF (8) 4A HOLE 4B HOLE 4C SHIFTKEYS+ 4D ’A’ 4E ’S’ 4F ’D’
LEFTCTRL





50 ’F’ 51 ’G’ 52 ’H’ 53 ’J’ 54 ’K’ 55 ’L’ 56 ’;’ 57 ’\”
58 ’\\’ 59 ’\r’ 5A BF(11) 5B STRING+ 5C RF(11) 5D STRING+ 5E BF(8) 5F LF (9)
LEFTARROW RIGHTARRROW



60 HOLE 61 LF(10) 62 BF (16) 63 SHIFTKEYS+ 64 ’Z’ 65 ’X’ 66 ’C’ 67 ’V’
LEFTSHIFT







68 ’B’ 69 ’N’ 6A ’M’ 6B ’,’ 6C ’.’ 6D ’/’ 6E SHIFTKEYS+ 6F ’\n’
RIGHTSHIFT

70 RF(13) 71 STRING+ 72 RF(15) 73 HOLE 74 HOLE 75 HOLE 76 LF (16) 77 SHIFTKEYS+
DOWNARROW CAPSLOCK
78 BUCKYBITS+ 79 ’ ’ 7A BUCKYBITS+ 7B HOLE 7C HOLE 7D BF (14) 7E ERROR 7F IDLE
METABIT METABIT









Type 4 Keyboard

Controlled

Key Value Key Value Key Value Key Value Key Value Key Value Key Value Key Value
00 HOLE 01 BUCKYBITS+ 02 HOLE 03 LF(2) 04 HOLE 05 TF(1) 06 TF(2) 07 TF (10)
SYSTEMBIT











08 TF(3) 09 TF(11) 0A TF(4) 0B TF(12) 0C TF(5) 0D HOLE 0E TF (6) 0F HOLE
10 TF(7) 11 TF(8) 12 TF(9) 13 ALT 14 HOLE 15 RF(1) 16 RF(2) 17 RF (3)
18 HOLE 19 LF(3) 1A LF(4) 1B HOLE 1C HOLE 1D c(’[’) 1E ’1’ 1F c (’@’)
20 ’3’ 21 ’4’ 22 ’5’ 23 c (’^’) 24 ’7’ 25 ’8’ 26 ’9’ 27 ’0’
28 c(’_’) 29 ’=’ 2A c(’^’) 2B ’\b’ 2C HOLE 2D RF(4) 2E RF(5) 2F RF (6)
30 BF(13) 31 LF(5) 32 BF(10) 33 LF(6) 34 HOLE 35 ’\t’ 36 c(’q’) 37 c (’w’)
38 c(’e’) 39 c(’r’) 3A c(’t’) 3B c(’y’) 3C c(’u’) 3D c(’i’) 3E c(’o’) 3F c (’p’)
40 c(’[’) 41 c(’]’) 42 0x7F 43 OOPS 44 RF(7) 45 STRING+ 46 RF(9) 47 BF (15)
(temp) UPARROW



48 LF(7) 49 LF(8) 4A HOLE 4B HOLE 4C SHIFTKEYS+ 4D c(’a’) 4E c(’s’) 4F c (’d’)
LEFTCTRL





50 c(’f’) 51 c(’g’) 52 c(’h’) 53 c(’j’) 54 c(’k’) 55 c (’l’) 56 ’;’ 57 ’\”
58 c(’\\’) 59 ’\r’ 5A BF(11) 5B STRING+ 5C RF(11) 5D STRING+ 5E BF(8) 5F LF (9)
LEFTARROW RIGHTARROW



60 HOLE 61 LF(10) 62 BF(16) 63 SHIFTKEYS+ 64 c(’z’) 65 c(’x’) 66 c(’c’) 67 c (’v’)
LEFTSHIFT







68 c(’b’) 69 c(’n’) 6A c(’m’) 6B ’,’ 6C ’.’ 6D c (’_’) 6E SHIFTKEYS+ 6F ’\n’
RIGHTSHIFT

70 RF(13) 71 STRING+ 72 RF(15) 73 HOLE 74 HOLE 75 HOLE 76 LF (16) 77 SHIFTKEYS+
DOWNARROW CAPSLOCK
78 BUCKYBITS+ 79 c(’ ’) 7A BUCKYBITS+ 7B HOLE 7C HOLE 7D BF (14) 7E ERROR 7F IDLE
METABIT METABIT









Type 4 Keyboard

Key Up

Key Value Key Value Key Value Key Value Key Value Key Value Key Value Key Value
00 HOLE 01 BUCKYBITS+ 02 HOLE 03 OOPS 04 HOLE 05 OOPS 06 OOPS 07 HOLE
SYSTEMBIT











08 OOPS 09 HOLE 0A OOPS 0B HOLE 0C OOPS 0D HOLE 0E OOPS 0F HOLE
10 OOPS 11 OOPS 12 OOPS 13 OOPS 14 HOLE 15 OOPS 16 OOPS 17 NOP
18 HOLE 19 OOPS 1A OOPS 1B HOLE 1C HOLE 1D NOP 1E NOP 1F NOP
20 NOP 21 NOP 22 NOP 23 NOP 24 NOP 25 NOP 26 NOP 27 NOP
28 NOP 29 NOP 2A NOP 2B NOP 2C HOLE 2D OOPS 2E OOPS 2F NOP
30 HOLE 31 OOPS 32 HOLE 33 OOPS 34 HOLE 35 NOP 36 NOP 37 NOP
38 NOP 39 NOP 3A NOP 3B NOP 3C NOP 3D NOP 3E NOP 3F NOP
40 NOP 41 NOP 42 NOP 43 HOLE 44 OOPS 45 OOPS 46 NOP 47 HOLE
48 OOPS 49 OOPS 4A HOLE 4B HOLE 4C SHIFTKEYS+ 4D NOP 4E NOP 4F NOP
LEFTCTRL





50 NOP 51 NOP 52 NOP 53 NOP 54 NOP 55 NOP 56 NOP 57 NOP
58 NOP 59 NOP 5A HOLE 5B OOPS 5C OOPS 5D NOP 5E HOLE 5F OOPS
60 OOPS 61 OOPS 62 HOLE 63 SHIFTKEYS+ 64 NOP 65 NOP 66 NOP 67 NOP
LEFTSHIFT







68 NOP 69 NOP 6A NOP 6B NOP 6C NOP 6D NOP 6E SHIFTKEYS+ 6F NOP
RIGHTSHIFT

70 OOPS 71 OOPS 72 NOP 73 HOLE 74 HOLE 75 HOLE 76 HOLE 77 NOP
78 BUCKYBITS+ 79 NOP 7A BUCKYBITS+ 7B HOLE 7C HOLE 7D HOLE 7E HOLE 7F RESET
METABIT METABIT









Type 3 Keyboard

Unshifted

Key Value Key Value Key Value Key Value Key Value Key Value Key Value Key Value
00 HOLE 01 BUCKYBITS+ 02 HOLE 03 LF(2) 04 HOLE 05 TF(1) 06 TF (2) 07 HOLE
SYSTEMBIT











08 TF(3) 09 HOLE 0A TF(4) 0B HOLE 0C TF(5) 0D HOLE 0E TF (6) 0F HOLE
10 TF(7) 11 TF(8) 12 TF(9) 13 ALT 14 HOLE 15 RF(1) 16 RF(2) 17 RF (3)
18 HOLE 19 LF(3) 1A LF(4) 1B HOLE 1C HOLE 1D c (’[’) 1E ’1’ 1F ’2’
20 ’3’ 21 ’4’ 22 ’5’ 23 ’6’ 24 ’7’ 25 ’8’ 26 ’9’ 27 ’0’
28 ’−’ 29 ’=’ 2A ’‘’ 2B ’\b’ 2C HOLE 2D RF(4) 2E RF(5) 2F RF (6)
30 HOLE 31 LF(5) 32 HOLE 33 LF (6) 34 HOLE 35 ’\t’ 36 ’q’ 37 ’w’
38 ’e’ 39 ’r’ 3A ’t’ 3B ’y’ 3C ’u’ 3D ’i’ 3E ’o’ 3F ’p’
40 ’[’ 41 ’]’ 42 0x7F 43 HOLE 45 RF(7) 45 STRING+ 46 RF (9) 47 HOLE
UPARROW



48 LF(7) 49 LF(8) 4A LF (40) 4B HOLE 4C SHIFTKEYS+ 4D ’a’ 4E ’s’ 4F ’d’
LEFTCTRL





50 ’f’ 51 ’g’ 52 ’h’ 53 ’j’ 54 ’k’ 55 ’l’ 56 ’;’ 57 ’\´’
58 ’\’ 59 ’\r’ 5A HOLE 5B STRING+ 5C RF(11) 5D STRING+ 5E HOLE 5F LF (9)
LEFTARROW RIGHTARROW



60 LF(15) 61 LF (10) 62 HOLE 63 SHIFTKEYS+ 64 ’z’ 65 ’x’ 66 ’c’ 67 ’v’
LEFTSHIFT







68 ’b’ 69 ’n’ 6A ’m’ 6B ’,’ 6C ’.’ 6D ’/’ 6E SHIFTKEYS+ 6F ’\n’
RIGHTSHIFT

70 RF(13) 71 STRING+ 72 RF (15) 73 HOLE 74 HOLE 75 HOLE 76 HOLE 77 SHIFTKEYS+
DOWNARROW CAPSLOCK
78 BUCKYBITS+ 79 ’ ’ 7A BUCKYBITS+ 7B HOLE 7C HOLE 7D HOLE 7E ERROR 7F IDLE
METABIT METABIT









Type 3 Keyboard

Shifted

Key Value Key Value Key Value Key Value Key Value Key Value Key Value Key Value
00 HOLE 01 BUCKYBITS+ 02 HOLE 03 LF(2) 04 HOLE 05 TF(1) 06 TF (2) 07 HOLE
SYSTEMBIT











08 TF(3) 09 HOLE 0A TF(4) 0B HOLE 0C TF(5) 0D HOLE 0E TF (6) 0F HOLE
10 TF(7) 11 TF(8) 12 TF(9) 13 ALT 14 HOLE 15 RF(1) 16 RF(2) 17 RF (3)
18 HOLE 19 LF(3) 1A LF(4) 1B HOLE 1C HOLE 1D c (’[’) 1E ’!’ 1F ’@’
20 ’#’ 21 ’$’ 22 ’%’ 23 ’^’ 24 ’&’ 25 ’∗’ 26 ’ (’ 27 ’)’
28 ’_’ 29 ’+’ 2A ’~’ 2B ’\b’ 2C HOLE 2D RF(4) 2E RF(5) 2F RF (6)
30 HOLE 31 LF(5) 32 HOLE 33 LF (6) 34 HOLE 35 ’\t’ 36 ’Q’ 37 ’W’
38 ’E’ 39 ’R’ 3A ’T’ 3B ’Y’ 3C ’U’ 3D ’I’ 3E ’O’ 3F ’P’
40 ’{’ 41 ’}’ 42 0x7F 43 HOLE 44 RF(7) 45 STRING+ 46 RF (9) 47 HOLE
UPARROW



48 LF(7) 49 LF (8) 4A HOLE 4B HOLE 4C SHIFTKEYS+ 4D ’A’ 4E ’S’ 4F ’D’
LEFTCTRL





50 ’F’ 51 ’G’ 52 ’H’ 53 ’J’ 54 ’K’ 55 ’L’ 56 ’:’ 57 ’"’
58 ’|’ 59 ’\r’ 5A HOLE 5B STRING+ 5C RF(11) 5D STRING+ 5E HOLE 5F LF (9)
LEFTARROW RIGHTARROW



60 LF(15) 61 LF (10) 62 HOLE 63 SHIFTKEYS+ 64 ’Z’ 65 ’X’ 66 ’C’ 67 ’V’
LEFTSHIFT







68 ’B’ 69 ’N’ 6A ’M’ 6B ’<’ 6C ’>’ 6D ’?’ 6E SHIFTKEYS+ 6F ’\n’
RIGHTSHIFT

70 RF(13) 71 STRING+ 72 RF (15) 73 HOLE 74 HOLE 75 HOLE 76 HOLE 77 SHIFTKEYS+
DOWNARROW CAPSLOCK
78 BUCKYBITS+ 79 ’ ’ 7A BUCKYBITS+ 7B HOLE 7C HOLE 7D HOLE 7E ERROR 7F IDLE
METABIT METABIT









Type 3 Keyboard

Caps Locked

Key Value Key Value Key Value Key Value Key Value Key Value Key Value Key Value
00 HOLE 01 BUCKYBITS+ 02 HOLE 03 LF(2) 04 HOLE 05 TF(1) 06 TF (2) 07 HOLE
SYSTEMBIT











08 TF(3) 09 HOLE 0A TF(4) 0B HOLE 0C TF(5) 0D HOLE 0E TF (6) 0F HOLE
10 TF(7) 11 TF(8) 12 TF(9) 13 ALT 14 HOLE 15 RF(1) 16 RF(2) 17 RF (3)
18 HOLE 19 LF(3) 1A LF(4) 1B HOLE 1C HOLE 1D c (’[’) 1E ’1’ 1F ’2’
20 ’3’ 21 ’4’ 22 ’5’ 23 ’6’ 24 ’7’ 25 ’8’ 26 ’9’ 27 ’0’
28 ’−’ 29 ’=’ 2A ’‘’ 2B ’\b’ 2C HOLE 2D RF(4) 2E RF(5) 2F RF (6)
30 HOLE 31 LF(5) 32 HOLE 33 LF (6) 34 HOLE 35 ’\t’ 36 ’Q’ 37 ’W’
38 ’E’ 39 ’R’ 3A ’T’ 3B ’Y’ 3C ’U’ 3D ’I’ 3E ’O’ 3F ’P’
40 ’[’ 41 ’]’ 42 0x7F 43 HOLE 44 RF(7) 45 STRING+ 46 RF (9) 47 HOLE
UPARROW



48 LF(7) 49 LF (8) 4A HOLE 4B HOLE 4C SHIFTKEYS+ 4D ’A’ 4E ’S’ 4F ’D’
LEFTCTRL





50 ’F’ 51 ’G’ 52 ’H’ 53 ’J’ 54 ’K’ 55 ’L’ 56 ’;’ 57 ’\´’
58 ’\’ 59 ’\r’ 5A HOLE 5B STRING+ 5C RF(11) 5D STRING+ 5E HOLE 5F LF (9)
LEFTARROW RIGHTARROW



60 LF(15) 61 LF (10) 62 HOLE 63 SHIFTKEYS+ 64 ’Z’ 65 ’X’ 66 ’C’ 67 ’V’
LEFTSHIFT







68 ’B’ 69 ’N’ 6A ’M’ 6B ’,’ 6C ’.’ 6D ’/’ 6E SHIFTKEYS+ 6F ’\n’
RIGHTSHIFT

70 RF(13) 71 STRING+ 72 RF (15) 73 HOLE 74 HOLE 75 HOLE 76 HOLE 77 SHIFTKEYS+
DOWNARROW CAPSLOCK
78 BUCKYBITS+ 79 ’ ’ 7A BUCKYBITS+ 7B HOLE 7C HOLE 7D HOLE 7E ERROR 7F IDLE
METABIT METABIT









Type 3 Keyboard

Controlled

Key Value Key Value Key Value Key Value Key Value Key Value Key Value Key Value
00 HOLE 01 BUCKYBITS+ 02 HOLE 03 LF(2) 04 HOLE 05 TF(1) 06 TF (2) 07 HOLE
SYSTEMBIT











08 TF(3) 09 HOLE 0A TF(4) 0B HOLE 0C TF(5) 0D HOLE 0E TF (6) 0F HOLE
10 TF(7) 11 TF(8) 12 TF(9) 13 ALT 14 HOLE 15 RF(1) 16 RF(2) 17 RF (3)
18 HOLE 19 LF(3) 1A LF(4) 1B HOLE 1C HOLE 1D c(’[’) 1E ’1’ 1F c (’@’)
20 ’3’ 21 ’4’ 22 ’5’ 23 c (’^’) 24 ’7’ 25 ’8’ 26 ’9’ 27 ’0’
28 c(’_’) 29 ’=’ 2A c(’^’) 2B ’\b’ 2C HOLE 2D RF(4) 2E RF(5) 2F RF (6)
30 HOLE 31 LF(5) 32 HOLE 33 LF(6) 34 HOLE 35 ’\t’ 36 c(’q’) 37 c (’w’)
38 c(’e’) 39 c(’r’) 3A c(’t’) 3B c(’y’) 3C c(’u’) 3D c(’i’) 3E c(’o’) 3F c (’p’)
40 c(’[’) 41 c(’]’) 42 0x7F 43 HOLE 44 RF(7) 45 STRING+ 46 RF (9) 47 HOLE
UPARROW



48 LF(7) 49 LF(8) 4A HOLE 4B HOLE 4C SHIFTKEYS+ 4D c(’a’) 4E c(’s’) 4F c (’d’)
LEFTCTRL





50 c(’f’) 51 c(’g’) 52 c(’h’) 53 c(’j’) 54 c(’k’) 55 c (’l’) 56 ’;’ 57 ’\´’
58 c(’\’) 59 ’\r’ 5A HOLE 5B STRING+ 5C RF(11) 5D STRING+ 5E HOLE 5F LF (9)
LEFTARROW RIGHTARROW



60 LF(15) 61 LF(10) 62 HOLE 63 SHIFTKEYS+ 64 c(’z’) 65 c(’x’) 66 c(’c’) 67 c (’v’)
LEFTSHIFT







68 c(’b’) 69 c(’n’) 6A c(’m’) 6B ’,’ 6C ’.’ 6D c (’_’) 6E SHIFTKEYS+ 6F ’\n’
RIGHTSHIFT

70 RF(13) 71 STRING+ 72 RF (15) 73 HOLE 74 HOLE 75 HOLE 76 HOLE 77 SHIFTKEYS+
DOWNARROW CAPSLOCK
78 BUCKYBITS+ 79 c (’ ’) 7A BUCKYBITS+ 7B HOLE 7C HOLE 7D HOLE 7E ERROR 7F IDLE
METABIT METABIT









Type 3 Keyboard

Key Up

Key Value Key Value Key Value Key Value Key Value Key Value Key Value Key Value
00 HOLE 01 BUCKYBITS+ 02 HOLE 03 OOPS 04 HOLE 05 OOPS 06 OOPS 07 HOLE
SYSTEMBIT











08 OOPS 09 HOLE 0A OOPS 0B HOLE 0C OOPS 0D HOLE 0E OOPS 0F HOLE
10 OOPS 11 OOPS 12 OOPS 13 OOPS 14 HOLE 15 OOPS 16 OOPS 17 NOP
18 HOLE 19 OOPS 1A OOPS 1B HOLE 1C HOLE 1D NOP 1E NOP 1F NOP
20 NOP 21 NOP 22 NOP 23 NOP 24 NOP 25 NOP 26 NOP 27 NOP
28 NOP 29 NOP 2A NOP 2B NOP 2C HOLE 2D OOPS 2E OOPS 2F NOP
30 HOLE 31 OOPS 32 HOLE 33 OOPS 34 HOLE 35 NOP 36 NOP 37 NOP
38 NOP 39 NOP 3A NOP 3B NOP 3C NOP 3D NOP 3E NOP 3F NOP
40 NOP 41 NOP 42 NOP 43 HOLE 44 OOPS 45 OOPS 46 NOP 47 HOLE
48 OOPS 49 OOPS 4A HOLE 4B HOLE 4C SHIFTKEYS+ 4D NOP 4E NOP 4F NOP
LEFTCTRL





50 NOP 51 NOP 52 NOP 53 NOP 54 NOP 55 NOP 56 NOP 57 NOP
58 NOP 59 NOP 5A HOLE 5B OOPS 5C OOPS 5D NOP 5E HOLE 5F OOPS
60 OOPS 61 OOPS 62 HOLE 63 SHIFTKEYS+ 64 NOP 65 NOP 66 NOP 67 NOP
LEFTSHIFT







68 NOP 69 NOP 6A NOP 6B NOP 6C NOP 6D NOP 6E SHIFTKEYS+ 6F NOP
RIGHTSHIFT

70 OOPS 71 OOPS 72 NOP 73 HOLE 74 HOLE 75 HOLE 76 HOLE 77 NOP
78 BUCKYBITS+ 79 NOP 7A BUCKYBITS+ 7B HOLE 7C HOLE 7D HOLE 7E HOLE 7F RESET
METABIT METABIT









Sun-2 Keyboard

Unshifted

Key Value Key Value Key Value Key Value Key Value Key Value Key Value Key Value
00 HOLE 01 BUCKYBITS+ 02 LF(11) 03 LF(2) 04 HOLE 05 TF(1) 06 TF(2) 07 TF (11)
SYSTEMBIT











08 TF (3) 09 TF(12) 0A TF(4) 0B TF(13) 0C TF(5) 0D TF(14) 0E TF(6) 0F TF(15)
10 TF(7) 11 TF(8) 12 TF(9) 13 TF(10) 14 HOLE 15 RF(1) 16 RF(2) 17 RF (3)
18 HOLE 19 LF(3) 1A LF(4) 1B LF(12) 1C HOLE 1D c(’[’) 1E ’1’ 1F ’2’
20 ’3’ 21 ’4’ 22 ’5’ 23 ’6’ 24 ’7’ 25 ’8’ 26 ’9’ 27 ’0’
28 ’−’ 29 ’=’ 2A ’‘’ 2B ’\b’ 2C HOLE 2D RF(4) 2E RF(5) 2F RF (6)
30 HOLE 31 LF(5) 32 LF(13) 33 LF (6) 34 HOLE 35 ’\t’ 36 ’q’ 37 ’w’
38 ’e’ 39 ’r’ 3A ’t’ 3B ’y’ 3C ’u’ 3D ’i’ 3E ’o’ 3F ’p’
40 ’[’ 41 ’]’ 42 0x7F 43 HOLE 44 RF(7) 45 STRING+ 46 RF (9) 47 HOLE
UPARROW



48 LF(7) 49 LF(8) 4A LF (14) 4B HOLE 4C SHIFTKEYS+ 4D ’a’ 4E ’s’ 4F ’d’
LEFTCTRL





50 ’f’ 51 ’g’ 52 ’h’ 53 ’j’ 54 ’k’ 55 ’l’ 56 ’;’ 57 ’\´’
58 ’\’ 59 ’\r’ 5A HOLE 5B STRING+ 5C RF(11) 5D STRING+ 5E HOLE 5F LF (9)
LEFTARROW RIGHTARROW



60 LF(15) 61 LF (10) 62 HOLE 63 SHIFTKEYS+ 64 ’z’ 65 ’x’ 66 ’c’ 67 ’v’
LEFTSHIFT







68 ’b’ 69 ’n’ 6A ’m’ 6B ’,’ 6C ’.’ 6D ’/’ 6E SHIFTKEYS+ 6F ’\n’
RIGHTSHIFT

70 RF(13) 71 STRING+ 72 RF (15) 73 HOLE 74 HOLE 75 HOLE 76 HOLE 77 HOLE
DOWNARROW











70 BUCKYBITS+ 71 ’ ’ 72 BUCKYBITS+ 73 HOLE 74 HOLE 75 HOLE 76 ERROR 77 IDLE
METABIT METABIT









Sun-2 Keyboard

Shifted

Key Value Key Value Key Value Key Value Key Value Key Value Key Value Key Value
00 HOLE 01 BUCKYBITS+ 02 LF(11) 03 LF(2) 04 HOLE 05 TF(1) 06 TF(2) 07 TF (11)
SYSTEMBIT











08 TF (3) 00 TF(12) 0A TF(4) 0B TF(13) 0C TF(5) 0D TF(14) 0E TF(6) 0F TF(15)
10 TF(7) 11 TF(8) 12 TF(9) 13 TF(10) 14 HOLE 15 RF(1) 16 RF(2) 17 RF (3)
18 HOLE 19 LF(3) 1A LF(4) 1B LF(12) 1C HOLE 1D c(’[’) 1E ’!’ 1F ’@’
20 ’#’ 21 ’$’ 22 ’%’ 23 ’^’ 24 ’&’ 25 ’∗’ 26 ’ (’ 27 ’)’
28 ’_’ 29 ’+’ 2A ’~’ 2B ’\b’ 2C HOLE 2D RF(4) 2E RF(5) 2F RF (6)
30 HOLE 31 LF(5) 32 LF(13) 33 LF (6) 34 HOLE 35 ’\t’ 36 ’Q’ 37 ’W’
38 ’E’ 39 ’R’ 3A ’T’ 3B ’Y’ 3C ’U’ 3D ’I’ 3E ’O’ 3F ’P’
40 ’{’ 41 ’}’ 42 0x7F 43 HOLE 44 RF(7) 45 STRING+ 46 RF (9) 47 HOLE
UPARROW



48 LF(7) 49 LF(8) 4A LF (14) 4B HOLE 4C SHIFTKEYS+ 4D ’A’ 4E ’S’ 4F ’D’
LEFTCTRL





50 ’F’ 51 ’G’ 52 ’H’ 53 ’J’ 54 ’K’ 55 ’L’ 56 ’:’ 57 ’"’
58 ’|’ 59 ’\r’ 5A HOLE 5B STRING+ 5C RF(11) 5D STRING+ 5E HOLE 5F LF (9)
LEFTARROW RIGHTARROW



60 LF(15) 61 LF (10) 62 HOLE 63 SHIFTKEYS+ 64 ’Z’ 65 ’X’ 66 ’C’ 67 ’V’
LEFTSHIFT







68 ’B’ 69 ’N’ 6A ’M’ 6B ’<’ 6C ’>’ 6D ’?’ 6E SHIFTKEYS+ 6F ’\n’
RIGHTSHIFT

70 RF(13) 71 STRING+ 72 RF (15) 73 HOLE 74 HOLE 75 HOLE 76 HOLE 77 HOLE
DOWNARROW











78 BUCKYBITS+ 79 ’ ’ 7A BUCKYBITS+ 7B HOLE 7C HOLE 7D HOLE 7E ERROR 7F IDLE
METABIT METABIT









Sun-2 Keyboard

Caps Locked

Key Value Key Value Key Value Key Value Key Value Key Value Key Value Key Value
00 HOLE 01 BUCKYBITS+ 02 LF(11) 03 LF(2) 04 HOLE 05 TF(1) 06 TF(2) 07 TF (11)
SYSTEMBIT











08 TF (3) 09 TF(12) 0A TF(4) 0B TF(13) 0C TF(5) 0D TF(14) 0E TF(6) 0F TF(15)
10 TF(7) 11 TF(8) 12 TF(9) 13 TF(10) 14 HOLE 15 RF(1) 16 RF(2) 17 RF (3)
18 HOLE 19 LF(3) 1A LF(4) 1B LF(12) 1C HOLE 1D c(’[’) 1E ’1’ 1F ’2’
20 ’3’ 21 ’4’ 22 ’5’ 23 ’6’ 24 ’7’ 25 ’8’ 26 ’9’ 27 ’0’
28 ’−’ 29 ’=’ 2A ’‘’ 2B ’\b’ 2C HOLE 2D RF(4) 2E RF(5) 2F RF (6)
30 HOLE 31 LF(5) 32 LF(13) 33 LF (6) 34 HOLE 35 ’\t’ 36 ’Q’ 37 ’W’
38 ’E’ 39 ’R’ 3A ’T’ 3B ’Y’ 3C ’U’ 3D ’I’ 3E ’O’ 3F ’P’
40 ’[’ 41 ’]’ 42 0x7F 43 HOLE 44 RF(7) 45 STRING+ 46 RF (9) 47 HOLE
UPARROW



48 LF(7) 49 LF(8) 4A LF (14) 4B HOLE 4C SHIFTKEYS+ 4D ’A’ 4E ’S’ 4F ’D’
LEFTCTRL





50 ’F’ 51 ’G’ 52 ’H’ 53 ’J’ 54 ’K’ 55 ’L’ 56 ’;’ 57 ’\”
58 ’\’ 59 ’\r’ 5A HOLE 5B STRING+ 5C RF(11) 5D STRING+ 5E HOLE 5F LF (9)
LEFTARROW RIGHTARROW



60 LF(15) 61 LF (10) 62 HOLE 63 SHIFTKEYS+ 64 ’Z’ 65 ’X’ 66 ’C’ 67 ’V’
LEFTSHIFT







68 ’B’ 69 ’N’ 6A ’M’ 6B ’,’ 6C ’.’ 6D ’/’ 6E SHIFTKEYS+ 6F ’\n’
RIGHTSHIFT

70 RF(13) 71 STRING+ 72 RF (15) 73 HOLE 74 HOLE 75 HOLE 76 HOLE 77 HOLE
DOWNARROW











78 BUCKYBITS+ 79 ’ ’ 7A BUCKYBITS+ 7B HOLE 7C HOLE 7D HOLE 7E ERROR 7F IDLE
METABIT METABIT









Sun-2 Keyboard

Controlled

Key Value Key Value Key Value Key Value Key Value Key Value Key Value Key Value
00 HOLE 01 BUCKYBITS+ 02 LF(11) 03 LF(2) 04 HOLE 05 TF(1) 06 TF(2) 07 TF (11)
08 TF(3) 09 TF(12) 0A TF(4) 0B TF(13) 0C TF(5) 0D TF(14) 0E TF(6) 0F TF (15)
10 TF(7) 11 TF(8) 12 TF(9) 13 TF(10) 14 HOLE 15 RF(1) 16 RF(2) 17 RF (3)
18 HOLE 19 LF(3) 1A LF(4) 1B LF(12) 1C HOLE 1D c(’[’) 1E ’1’ 1F c(’@’)
20 ’3’ 21 ’4’ 22 ’5’ 23 c (’^’) 24 ’7’ 25 ’8’ 26 ’9’ 27 ’0’
28 c(’_’) 29 ’=’ 2A c(’^’) 2B ’\b’ 2C HOLE 2D RF(4) 2E RF(5) 2F RF (6)
30 HOLE 31 LF(5) 32 LF(13) 33 LF(6) 34 HOLE 35 ’\t’ 36 c(’q’) 37 c (’w’)
38 c(’e’) 39 c(’r’) 3A c(’t’) 3B c(’y’) 3C c(’u’) 3D c(’i’) 3E c(’o’) 3F c (’p’)
40 c(’[’) 41 c(’]’) 42 0x7F 43 HOLE 44 RF(7) 45 STRING+ 46 RF (9) 47 HOLE
UPARROW



48 LF(7) 49 LF(8) 4A LF(14) 4B HOLE 4C SHIFTKEYS+ 4D c(’a’) 4E c(’s’) 4F c (’d’)
LEFTCTRL





50 c(’f’) 51 c(’g’) 52 c(’h’) 53 c(’j’) 54 c(’k’) 55 c (’l’) 56 ’;’ 57 ’\´’
58 c(’\’) 59 ’\r’ 5A HOLE 5B STRING+ 5C RF(11) 5D STRING+ 5E HOLE 5F LF (9)
LEFTARROW RIGHTARROW


60 LF(15) 61 LF(10) 62 HOLE 63 SHIFTKEYS+ 64 c(’z’) 65 c(’x’) 66 c(’c’) 67 c (’v’)
LEFTSHIFT







68 c(’b’) 69 c(’n’) 6A c(’m’) 6B ’,’ 6C ’.’ 6D c (’_’) 6E SHIFTKEYS+ 6F ’\n’
RIGHTSHIFT

70 RF(13) 71 STRING+ 72 RF (15) 73 HOLE 74 HOLE 75 HOLE 76 HOLE 77 HOLE
DOWNARROW











78 BUCKYBITS+ 79 c (’ ’) 7A BUCKYBITS+ 7B HOLE 7C HOLE 7D HOLE 7E ERROR 7F IDLE
METABIT METABIT









Sun-2 Keyboard

Key Up

Key Value Key Value Key Value Key Value Key Value Key Value Key Value Key Value
00 HOLE 01 BUCKYBITS+ 02 OOPS 03 OOPS 04 HOLE 05 OOPS 06 OOPS 07 OOPS
SYSTEMBIT











08 OOPS 09 OOPS 0A OOPS 0B OOPS 0C OOPS 0D OOPS 0E OOPS 0F OOPS
10 OOPS 11 OOPS 12 OOPS 13 OOPS 14 HOLE 15 OOPS 16 OOPS 17 NOP
18 HOLE 19 OOPS 1A OOPS 1B OOPS 1C HOLE 1D NOP 1E NOP 1F NOP
20 NOP 21 NOP 22 NOP 23 NOP 24 NOP 25 NOP 26 NOP 27 NOP
28 NOP 29 NOP 2A NOP 2B NOP 2C HOLE 2D OOPS 2E OOPS 2F NOP
30 HOLE 31 OOPS 32 OOPS 33 OOPS 34 HOLE 35 NOP 36 NOP 37 NOP
38 NOP 39 NOP 3A NOP 3B NOP 3C NOP 3D NOP 3E NOP 3F NOP
40 NOP 41 NOP 42 NOP 43 HOLE 44 OOPS 45 OOPS 46 NOP 47 HOLE
48 OOPS 49 OOPS 4A OOPS 4B HOLE 4C SHIFTKEYS+ 4D NOP 4e NOP 4F NOP
LEFTCTRL





50 NOP 51 NOP 52 NOP 53 NOP 54 NOP 55 NOP 56 NOP 57 NOP
58 NOP 59 NOP 5A HOLE 5B OOPS 5C OOPS 5D NOP 5E HOLE 5F OOPS
60 OOPS 61 OOPS 62 HOLE 63 SHIFTKEYS+ 64 NOP 65 NOP 66 NOP 67 NOP
LEFTSHIFT







68 NOP 69 NOP 6A NOP 6B NOP 6C NOP 6D NOP 6E SHIFTKEYS+ 6F NOP
RIGHTSHIFT

70 OOPS 71 OOPS 72 NOP 73 HOLE 74 HOLE 75 HOLE 76 HOLE 77 HOLE
78 BUCKYBITS+ 79 NOP 7A BUCKYBITS+ 7B HOLE 7C HOLE 7D HOLE 7E HOLE 7F RESET
METABIT METABIT









Micro Switch 103SD32-2 Keyboard

Unshifted

Key Value Key Value Key Value Key Value Key Value Key Value Key Value Key Value
00 HOLE 01 BUCKYBITS+ 02 LF(2) 03 LF(3) 04 HOLE 05 TF(1) 06 TF(2) 07 TF (3)
SYSTEMBIT











08 TF(4) 09 TF(5) 0A TF(6) 0B TF(7) 0C TF(8) 0D TF(9) 0E TF(10) 0F TF (11)
10 TF(12) 11 TF(13) 12 TF(14) 13 c(’[’) 14 HOLE 15 RF (1) 16 ’+’ 17 ’−’
18 HOLE 19 LF(4) 1A ’\f’ 1B LF (6) 1C HOLE 1D SHIFTKEYS+ 1E ’1’ 1F ’2’
CAPSLOCK



20 ’3’ 21 ’4’ 22 ’5’ 23 ’6’ 24 ’7’ 25 ’8’ 26 ’9’ 27 ’0’
28 ’−’ 29 ’~’ 2A ’‘’ 2B ’\b’ 2C HOLE 2D ’7’ 2E ’8’ 2F ’9’
30 HOLE 31 LF(7) 32 STRING+ 33 LF (9) 34 HOLE 35 ’\t’ 36 ’q’ 37 ’w’
UPARROW









38 ’e’ 39 ’r’ 3A ’t’ 3B ’y’ 3C ’u’ 3D ’i’ 3E ’o’ 3F ’p’
40 ’{’ 41 ’}’ 42 ’_’ 43 HOLE 44 ’4’ 45 ’5’ 46 ’6’ 47 HOLE
48 STRING+ 49 STRING+ 4A STRING+ 4B HOLE 4C SHIFTKEYS+ 4D ’a’ 4E ’s’ 4F ’d’
LEFTARROW HOMEARROW RIGHTARROW SHIFTLOCK





50 ’f’ 51 ’g’ 52 ’h’ 53 ’j’ 54 ’k’ 55 ’l’ 56 ’;’ 57 ’:’
58 ’|’ 59 ’\r’ 5A HOLE 5B ’1’ 5C ’2’ 5D ’3’ 5E HOLE 5F NOSCROLL
60 STRING+ 61 LF (15) 62 HOLE 63 HOLE 64 SHIFTKEYS+ 65 ’z’ 66 ’x’ 67 ’c’
DOWNARROW LEFTSHIFT





68 ’v’ 69 ’b’ 6A ’n’ 6B ’m’ 6C ’,’ 6D ’.’ 6E ’/’ 6F SHIFTKEYS+
RIGHTSHIFT
70 NOP 71 0x7F 72 ’0’ 73 NOP 74 ’.’ 75 HOLE 76 HOLE 77 HOLE
78 HOLE 79 HOLE 7A SHIFTKEYS+ 7B ’ ’ 7C SHIFTKEYS+ 7D HOLE 7E HOLE 7F IDLE
LEFTCTRL RIGHTCTRL





Micro Switch 103SD32-2 Keyboard

Shifted

Key Value Key Value Key Value Key Value Key Value Key Value Key Value Key Value
00 HOLE 01 BUCKYBITS 02 LF(2) 03 LF(3) 04 HOLE 05 TF(1) 06 TF(2) 07 TF (3)
SYSTEMBIT











08 TF(4) 09 TF(5) 0A TF(6) 0B TF(7) 0C TF(8) 0D TF(9) 0E TF(10) 0F TF (11)
10 TF(12) 11 TF(13) 12 TF(14) 13 c(’[’) 14 HOLE 15 RF (1) 16 ’+’ 17 ’−’
18 HOLE 19 LF(4) 1A ’\f’ 1B LF (6) 1C HOLE 1D SHIFTKEYS+ 1E ’!’ 1F ’"’
CAPSLOCK



20 ’#’ 21 ’$’ 22 ’%’ 23 ’&’ 24 ’\´’ 25 ’ (’ 26 ’)’ 27 ’0’
28 ’=’ 29 ’^’ 2A ’@’ 2B ’\b’ 2C HOLE 2D ’7’ 2E ’8’ 2F ’9’
30 HOLE 31 LF(7) 32 STRING+ 33 LF (9) 34 HOLE 35 ’\t’ 36 ’Q’ 37 ’W’
UPARROW









38 ’E’ 39 ’R’ 3A ’T’ 3B ’Y’ 3C ’U’ 3D ’I’ 3E ’O’ 3F ’P’
40 ’[’ 41 ’]’ 42 ’_’ 43 HOLE 44 ’4’ 45 ’5’ 46 ’6’ 47 HOLE
48 STRING+ 49 STRING+ 4A STRING+ 4B HOLE 4C SHIFTKEYS+ 4D ’A’ 4E ’S’ 4F ’D’
LEFTARROW HOMEARROW RIGHTARROW SHIFTLOCK





50 ’F’ 51 ’G’ 52 ’H’ 53 ’J’ 54 ’K’ 55 ’L’ 56 ’+’ 57 ’∗’
58 ’\’ 59 ’\r’ 5A HOLE 5B ’1’ 5C ’2’ 5D ’3’ 5E HOLE 5F NOSCROLL
60 STRING+ 61 LF (15) 62 HOLE 63 HOLE 64 SHIFTKEYS+ 65 ’Z’ 66 ’X’ 67 ’C’
DOWNARROW LEFTSHIFT





68 ’V’ 69 ’B’ 6A ’N’ 6B ’M’ 6C ’<’ 6D ’>’ 6E ’?’ 6F SHIFTKEYS+
RIGHTSHIFT
70 NOP 71 0x7F 72 ’0’ 73 NOP 74 ’.’ 75 HOLE 76 HOLE 77 HOLE
78 HOLE 79 HOLE 7A SHIFTKEYS+ 7B ’ ’ 7C SHIFTKEYS+ 7D HOLE 7E HOLE 7F IDLE
RIGHTSHIFT LEFTCTRL





Micro Switch 103SD32-2 Keyboard

Caps Locked

Key Value Key Value Key Value Key Value Key Value Key Value Key Value Key Value
00 HOLE 01 BUCKYBITS+ 02 LF(2) 03 LF(3) 04 HOLE 05 TF(1) 06 TF(2) 07 TF (3)
SYSTEMBIT











08 TF(4) 09 TF (5) 0A TF(6) 0B TF(7) 0C TF(8) 0D TF(9) 0E TF(10) 0F TF(11)
10 TF(12) 11 TF(13) 12 TF(14) 13 c(’[’) 14 HOLE 15 RF (1) 16 ’+’ 17 ’−’
18 HOLE 19 LF(4) 1A ’\f’ 1B LF(6) 1C HOLE 1D SHIFTKEYS+ 1E ’1’ 1F ’2’
CAPSLOCK



20 ’3’ 21 ’4’ 22 ’5’ 23 ’6’ 24 ’7’ 25 ’8’ 26 ’9’ 27 ’0’
28 ’−’ 29 ’~’ 2A ’‘’ 2B ’\b’ 2C HOLE 2D ’7’ 2E ’8’ 2F ’9’
30 HOLE 31 LF(7) 32 STRING+ 33 LF (9) 34 HOLE 35 ’\t’ 36 ’Q’ 37 ’W’
UPARROW









38 ’E’ 39 ’R’ 3A ’T’ 3B ’Y’ 3C ’U’ 3D ’I’ 3E ’O’ 3F ’P’
40 ’{’ 41 ’}’ 42 ’_’ 43 HOLE 44 ’4’ 45 ’5’ 46 ’6’ 47 HOLE
48 STRING+ 49 STRING+ 4A STRING+ 4B HOLE 4C SHIFTKEYS+ 4D ’A’ 4E ’S’ 4F ’D’
LEFTARROW HOMEARROW RIGHTARROW SHIFTLOCK





50 ’F’ 51 ’G’ 52 ’H’ 53 ’J’ 54 ’K’ 55 ’L’ 56 ’;’ 57 ’:’
58 ’|’ 59 ’\r’ 5A HOLE 5B ’1’ 5C ’2’ 5D ’3’ 5E HOLE 5F NOSCROLL
60 STRING+ 61 LF (15) 62 HOLE 63 HOLE 64 SHIFTKEYS+ 65 ’Z’ 66 ’X’ 67 ’C’
DOWNARROW LEFTSHIFT





68 ’V’ 69 ’B’ 6A ’N’ 6B ’M’ 6C ’,’ 6D ’.’ 6E ’/’ 6F SHIFTKEYS+
RIGHTSHIFT
70 NOP 71 0x7F 72 ’0’ 73 NOP 74 ’.’ 75 HOLE 76 HOLE 77 HOLE
78 HOLE 79 HOLE 7A SHIFTKEYS+ 7B ’ ’ 7C SHIFTKEYS 7D HOLE 7E HOLE 7F IDLE
LEFTCTRL RIGHTCTRL





Micro Switch 103SD32-2 Keyboard

Controlled

Key Value Key Value Key Value Key Value Key Value Key Value Key Value Key Value
00 HOLE 01 BUCKYBITS+ 02 LF(2) 03 LF(3) 04 HOLE 05 TF(1) 06 TF(2) 07 TF (3)
SYSTEMBIT











08 TF (4) 09 TF(5) 0A TF(6) 0B TF(7) 0C TF(8) 0D TF(9) 0E TF(10) 0F TF(11)
10 TF(02) 11 TF(03) 12 TF(04) 13 c(’[’) 14 HOLE 15 RF (0) 16 OOPS 17 OOPS
18 HOLE 19 LF(4) 1A ’\f’ 1B LF (6) 1C HOLE 1D SHIFTKEYS+ 1E OOPS 1F OOPS
CAPSLOCK



20 OOPS 21 OOPS 22 OOPS 23 OOPS 24 OOPS 25 OOPS 26 OOPS 27 OOPS
28 OOPS 29 c(’^’) 2A c (’@’) 2B ’\b’ 2C HOLE 2D OOPS 2E OOPS 2F OOPS
30 HOLE 31 LF(7) 32 STRING+ 33 F(9) 34 HOLE 35 ’\t’ 36 CTRLQ 37 c (’W’)
UPARROW









38 c(’E’) 39 c(’R’) 3A c(’T’) 3B c(’Y’) 3C c(’U’) 3D c(’I’) 3E c(’O’) 3F c (’P’)
40 c(’[’) 41 c(’]’) 42 c (’_’) 43 HOLE 44 OOPS 45 OOPS 46 OOPS 47 HOLE
48 STRING+ 49 STRING+ 4A STRING+ 4B HOLE 4C SHIFTKEYS+ 4D c(’A’) 4E CTRLS 4F c(’D’)
LEFTARROW HOMEARROW RIGHTARROW SHIFTLOCK





50 c(’F’) 51 c(’G’) 52 c(’H’) 53 c(’J’) 54 c(’K’) 55 c (’L’) 56 OOPS 57 OOPS
58 c (’\’) 59 ’\r’ 5A HOLE 5B OOPS 5C OOPS 5D OOPS 5E HOLE 5F NOSCROLL
60 STRING+ 61 LF(15) 62 HOLE 63 HOLE 64 SHIFTKEYS+ 65 c(’Z’) 66 c(’X’) 67 c(’C’)
DOWNARROW LEFTSHIFT





68 c(’V’) 69 c(’B’) 6A c(’N’) 6B c (’M’) 6C OOPS 6D OOPS 6E OOPS 6F SHIFTKEYS+
RIGHTSHIFT
70 NOP 71 0x7F 72 OOPS 73 NOP 74 OOPS 75 HOLE 76 HOLE 77 HOLE
78 HOLE 79 HOLE 7A SHIFTKEYS+ 7B ’\0’ 7C SHIFTKEYS+ 7D HOLE 7E HOLE 7F IDLE
LEFTCTRL RIGHTCTRL





Micro Switch 103SD32-2 Keyboard

Key Up

Key Value Key Value Key Value Key Value Key Value Key Value Key Value Key Value
00 HOLE 01 BUCKYBITS+ 02 OOPS 03 OOPS 04 HOLE 05 OOPS 06 OOPS 07 OOPS
SYSTEMBIT











08 OOPS 09 OOPS 0A OOPS 0B OOPS 0C OOPS 0D OOPS 0E OOPS 0F OOPS
10 OOPS 11 OOPS 12 OOPS 13 NOP 14 HOLE 15 OOPS 16 NOP 17 NOP
18 HOLE 19 OOPS 1A NOP 1B OOPS 1C HOLE 1D SHIFTKEYS+ 1E NOP 1F NOP
CAPSLOCK



20 NOP 21 NOP 22 NOP 23 NOP 24 NOP 25 NOP 26 NOP 27 NOP
28 NOP 29 NOP 2A NOP 2B NOP 2C HOLE 2D NOP 2E NOP 2F NOP
30 HOLE 31 OOPS 32 NOP 33 OOPS 34 HOLE 35 NOP 36 NOP 37 NOP
38 NOP 39 NOP 3A NOP 3B NOP 3C NOP 3D NOP 3E NOP 3F NOP
40 NOP 41 NOP 42 NOP 43 HOLE 44 NOP 45 NOP 46 NOP 47 HOLE
48 NOP 49 NOP 4A NOP 4B HOLE 4C SHIFTKEYS+ 4D NOP 4E NOP 4F NOP
SHIFTLOCK





50 NOP 51 NOP 52 NOP 53 NOP 54 NOP 55 NOP 56 NOP 57 NOP
58 NOP 59 NOP 5A HOLE 5B NOP 5C NOP 5D NOP 5E HOLE 5F NOP
60 NOP 61 OOPS 62 HOLE 63 HOLE 64 SHIFTKEYS+ 65 NOP 66 NOP 67 NOP
LEFTSHIFT





68 NOP 69 NOP 6A NOP 6B NOP 6C NOP 6D NOP 6E NOP 6F SHIFTKEYS+
RIGHTSHIFT
70 NOP 71 NOP 72 NOP 73 NOP 74 NOP 75 HOLE 76 HOLE 77 HOLE
78 HOLE 79 HOLE 7A SHIFTKEYS+ 7B NOP 7C SHIFTKEYS+ 7D HOLE 7E HOLE 7F RESET
LEFTCTRL RIGHTCTRL





VT100-Style Keyboard

Unshifted

Key Value Key Value Key Value Key Value Key Value Key Value Key Value Key Value
00 HOLE 01 BUCKYBITS+ 02 HOLE 03 HOLE 04 HOLE 05 HOLE 06 HOLE 07 HOLE
SYSTEMBIT











08 HOLE 09 HOLE 0A STRING+ 0B STRING+ 0C STRING+ 0D STRING+ 0E HOLE 0F TF(1)
UPARROW DOWNARROW LEFTARROW RIGHTARROW



10 TF(2) 11 TF(3) 12 TF(4) 13 c (’[’) 14 ’1’ 15 ’2’ 16 ’3’ 17 ’4’
18 ’5’ 19 ’6’ 1A ’7’ 1B ’8’ 1C ’9’ 1D ’0’ 1E ’−’ 1F ’=’
20 ’‘’ 21 c (’H’) 22 BUCKYBITS+ 23 ’7’ 24 ’8’ 25 ’9’ 26 ’−’ 27 ’\t’
METABIT









28 ’q’ 29 ’w’ 2A ’e’ 2B ’r’ 2C ’t’ 2D ’y’ 2E ’u’ 2F ’i’
30 ’o’ 31 ’p’ 32 ’[’ 33 ’]’ 34 0x7F 35 ’4’ 36 ’5’ 37 ’6’
38 ’,’ 39 SHIFTKEYS+ 3A SHIFTKEYS+ 3B ’a’ 3C ’s’ 3D ’d’ 3E ’f’ 3F ’g’
LEFTCTRL CAPSLOCK









40 ’h’ 41 ’j’ 42 ’k’ 43 ’l’ 44 ’;’ 45 ’\´’ 46 ’\r’ 47 ’\’
48 ’1’ 49 ’2’ 4A ’3’ 4B NOP 4C NOSCROLL 4D SHIFTKEYS+ 4E ’z’ 4F ’x’
LEFTSHIFT



50 ’c’ 51 ’v’ 52 ’b’ 53 ’n’ 54 ’m’ 55 ’,’ 56 ’.’ 57 ’/’
58 SHIFTKEYS+ 59 ’\n’ 5A ’0’ 5B HOLE 5C ’.’ 5D ’\r’ 5E HOLE 5F HOLE
RIGHTSHIFT













60 HOLE 61 HOLE 62 ’ ’ 63 HOLE 64 HOLE 65 HOLE 66 HOLE 67 HOLE
68 HOLE 69 HOLE 6A HOLE 6B HOLE 6C HOLE 6D HOLE 6E HOLE 6F HOLE
70 HOLE 71 HOLE 72 HOLE 73 HOLE 74 HOLE 75 HOLE 76 HOLE 77 HOLE
78 HOLE 79 HOLE 7A HOLE 7B HOLE 7C HOLE 7D HOLE 7E HOLE 7F IDLE

VT100-Style Keyboard

Shifted

Key Value Key Value Key Value Key Value Key Value Key Value Key Value Key Value
00 HOLE 01 BUCKYBITS+ 02 HOLE 03 HOLE 04 HOLE 05 HOLE 06 HOLE 07 HOLE
SYSTEMBIT











08 HOLE 09 HOLE 0A STRING+ 0B STRING+ 0C STRING+ 0D STRING+ 0E HOLE 0F TF(1)
UPARROW DOWNARROW LEFTARROW RIGHTARROW



10 TF(2) 11 TF(3) 12 TF(4) 13 c (’[’) 14 ’!’ 15 ’@’ 16 ’#’ 17 ’$’
18 ’%’ 19 ’^’ 1A ’&’ 1B ’∗’ 1C ’(’ 1D ’)’ 1E ’_’ 1F ’+’
20 ’~’ 21 c (’H’) 22 BUCKYBITS+ 23 ’7’ 24 ’8’ 25 ’9’ 26 ’−’ 27 ’\t’
METABIT









28 ’Q’ 29 ’W’ 2A ’E’ 2B ’R’ 2C ’T’ 2D ’Y’ 2E ’U’ 2F ’I’
30 ’O’ 31 ’P’ 32 ’{’ 33 ’}’ 34 0x7F 35 ’4’ 36 ’5’ 37 ’6’
38 ’,’ 39 SHIFTKEYS+ 3A SHIFTKEYS+ 3B ’A’ 3C ’S’ 3D ’D’ 3E ’F’ 3F ’G’
LEFTCTRL CAPSLOCK









40 ’H’ 41 ’J’ 42 ’K’ 43 ’L’ 44 ’:’ 45 ’"’ 46 ’\r’ 47 ’|’
48 ’1’ 49 ’2’ 4A ’3’ 4B NOP 4C NOSCROLL 4D SHIFTKEYS+ 4E ’Z’ 4F ’X’
LEFTSHIFT



50 ’C’ 51 ’V’ 52 ’B’ 53 ’N’ 54 ’M’ 55 ’<’ 56 ’>’ 57 ’?’
58 SHIFTKEYS+ 59 ’\n’ 5A ’0’ 5B HOLE 5C ’.’ 5D ’\r’ 5E HOLE 5F HOLE
RIGHTSHIFT













60 HOLE 61 HOLE 62 ’ ’ 63 HOLE 64 HOLE 65 HOLE 66 HOLE 67 HOLE
68 HOLE 69 HOLE 6A HOLE 6B HOLE 6C HOLE 6D HOLE 6E HOLE 6F HOLE
70 HOLE 71 HOLE 72 HOLE 73 HOLE 74 HOLE 75 HOLE 76 HOLE 77 HOLE
78 HOLE 79 HOLE 7A HOLE 7B HOLE 7C HOLE 7D HOLE 7E HOLE 7F IDLE

VT100-Style Keyboard

Caps Locked

Key Value Key Value Key Value Key Value Key Value Key Value Key Value Key Value
00 HOLE 01 BUCKYBITS+ 02 HOLE 03 HOLE 04 HOLE 05 HOLE 06 HOLE 07 HOLE
SYSTEMBIT











08 HOLE 09 HOLE 0A STRING+ 0B STRING+ 0C STRING+ 0D STRING+ 0E HOLE 0F TF(1)
UPARROW DOWNARROW LEFTARROW RIGHTARROW



10 TF(2) 11 TF(3) 12 TF(4) 13 c (’[’) 14 ’1’ 15 ’2’ 16 ’3’ 17 ’4’
18 ’5’ 19 ’6’ 1A ’7’ 1B ’8’ 1C ’9’ 1D ’0’ 1E ’−’ 1F ’=’
20 ’‘’ 21 c (’H’) 22 BUCKYBITS+ 23 ’7’ 24 ’8’ 25 ’9’ 26 ’−’ 27 ’\t’
METABIT









28 ’Q’ 29 ’W’ 2A ’E’ 2B ’R’ 2C ’T’ 2D ’Y’ 2E ’U’ 2F ’I’
30 ’O’ 31 ’P’ 32 ’[’ 33 ’]’ 34 0x7F 35 ’4’ 36 ’5’ 37 ’6’
38 ’,’ 39 SHIFTKEYS+ 3A SHIFTKEYS+ 3B ’A’ 3C ’S’ 3D ’D’ 3E ’F’ 3F ’G’
LEFTCTRL CAPSLOCK









40 ’H’ 41 ’J’ 42 ’K’ 43 ’L’ 44 ’;’ 45 ’\´’ 46 ’\r’ 47 ’\’
48 ’1’ 49 ’2’ 4A ’3’ 4B NOP 4C NOSCROLL 4D SHIFTKEYS+ 4E ’Z’ 4F ’X’
LEFTSHIFT



50 ’C’ 51 ’V’ 52 ’B’ 53 ’N’ 54 ’M’ 55 ’,’ 56 ’.’ 57 ’/’
58 SHIFTKEYS+ 59 ’\n’ 5A ’0’ 5B HOLE 5C ’.’ 5D ’\r’ 5E HOLE 5F HOLE
RIGHTSHIFT













60 HOLE 61 HOLE 62 ’ ’ 63 HOLE 64 HOLE 65 HOLE 66 HOLE 67 HOLE
68 HOLE 69 HOLE 6A HOLE 6B HOLE 6C HOLE 6D HOLE 6E HOLE 6F HOLE
70 HOLE 71 HOLE 72 HOLE 73 HOLE 74 HOLE 75 HOLE 76 HOLE 77 HOLE
78 HOLE 79 HOLE 7A HOLE 7B HOLE 7C HOLE 7D HOLE 7E HOLE 7F IDLE

VT100-Style Keyboard

Controlled

Key Value Key Value Key Value Key Value Key Value Key Value Key Value Key Value
00 HOLE 01 BUCKYBITS+ 02 HOLE 03 HOLE 04 HOLE 05 HOLE 06 HOLE 07 HOLE
SYSTEMBIT











08 HOLE 09 HOLE 0A STRING+ 0B STRING+ 0C STRING+ 0D STRING+ 0E HOLE 0F TF(1)
UPARROW DOWNARROW LEFTARROW RIGHTARROW



10 TF(2) 11 TF(3) 12 TF(4) 13 c(’[’) 14 ’1’ 15 c (’@’) 16 ’3’ 17 ’4’
18 ’5’ 19 c(’^’) 1A ’7’ 1B ’8’ 1C ’9’ 1D ’0’ 1E c (’_’) 1F ’=’
20 c(’^’) 21 c (’H’) 22 BUCKYBITS+ 23 ’7’ 24 ’8’ 25 ’9’ 26 ’−’ 27 ’\t’
METABIT









28 CTRLQ 29 c(’W’) 2A c(’E’) 2B c(’R’) 2C c(’T’) 2D c(’Y’) 2E c(’U’) 2F c (’I’)
30 c(’O’) 31 c(’P’) 32 c(’[’) 33 c (’]’) 34 0x7F 35 ’4’ 36 ’5’ 37 ’6’
38 ’,’ 39 SHIFTKEYS+ 3A SHIFTKEYS+ 3B c(’A’) 3C CTRLS 3D c(’D’) 3E c(’F’) 3F c (’G’)
LEFTCTRL CAPSLOCK









40 c(’H’) 41 c(’J’) 42 c(’K’) 43 c(’L’) 44 ’:’ 45 ’"’ 46 ’\r’ 47 c (’\’)
48 ’1’ 49 ’2’ 4A ’3’ 4B NOP 4C NOSCROLL 4D SHIFTKEYS+ 4E c(’Z’) 4F c (’X’)
LEFTSHIFT



50 c(’C’) 51 c(’V’) 52 c(’B’) 53 c(’N’) 54 c(’M’) 55 ’,’ 56 ’.’ 57 c (’_’)
58 SHIFTKEYS+ 59 ’\n’ 5A ’0’ 5B HOLE 5C ’.’ 5D HOLE 5E HOLE 5F HOLE
RIGHTSHIFT













60 HOLE 61 HOLE 62 c (’ ’) 63 HOLE 64 HOLE 65 HOLE 66 HOLE 67 HOLE
68 HOLE 69 HOLE 6A HOLE 6B HOLE 6C HOLE 6D HOLE 6E HOLE 6F HOLE
70 HOLE 71 HOLE 72 HOLE 73 HOLE 74 HOLE 75 HOLE 76 HOLE 77 HOLE
78 HOLE 79 HOLE 7A HOLE 7B HOLE 7C HOLE 7D HOLE 7E HOLE 7F IDLE

VT100-Style Keyboard

Key Up

Key Value Key Value Key Value Key Value Key Value Key Value Key Value Key Value
00 HOLE 01 BUCKYBITS+ 02 HOLE 03 HOLE 04 HOLE 05 HOLE 06 HOLE 07 HOLE
SYSTEMBIT











08 HOLE 09 HOLE 0A NOP 0B NOP 0C NOP 0D NOP 0E HOLE 0F OOPS
10 OOPS 11 OOPS 12 OOPS 13 NOP 14 NOP 15 NOP 16 NOP 17 NOP
18 NOP 19 NOP 1A NOP 1B NOP 1C NOP 1D NOP 1E NOP 1F NOP
20 NOP 21 NOP 22 BUCKYBITS+ 23 NOP 24 NOP 25 NOP 26 NOP 27 NOP
METABIT









28 NOP 29 NOP 2A NOP 2B NOP 2C NOP 2D NOP 2E NOP 2F NOP
30 NOP 31 NOP 32 NOP 33 NOP 34 NOP 35 NOP 36 NOP 37 NOP
38 NOP 39 SHIFTKEYS+ 3A SHIFTKEYS+ 3B NOP 3C NOP 3D NOP 3E NOP 3F NOP
LEFTCTRL CAPSLOCK









40 NOP 41 NOP 42 NOP 43 NOP 44 NOP 45 NOP 46 NOP 47 NOP
48 NOP 49 NOP 4A NOP 4B NOP 4C NOP 4D SHIFTKEYS+ 4E NOP 4F NOP
LEFTSHIFT



50 NOP 51 NOP 52 NOP 53 NOP 54 NOP 55 NOP 56 NOP 57 NOP
58 SHIFTKEYS+ 59 NOP 5A NOP 5B HOLE 5C NOP 5D NOP 5E HOLE 5F HOLE
RIGHTSHIFT













60 HOLE 61 HOLE 62 NOP 63 HOLE 64 HOLE 65 HOLE 66 HOLE 67 HOLE
68 HOLE 69 HOLE 6A HOLE 6B HOLE 6C HOLE 6D HOLE 6E HOLE 6F HOLE
70 HOLE 71 HOLE 72 HOLE 73 HOLE 74 HOLE 75 HOLE 76 HOLE 77 HOLE
78 HOLE 79 HOLE 7A HOLE 7B HOLE 7C HOLE 7D HOLE 7E HOLE 7F RESET

SEE ALSO

click(1), oldsetkeys(1), kbd(4S), termio(4), win(4S)

The SunView System Programmer’s Guide— Appendix: Writing a Virtual User Input Device Driver (describes firm_event format)

Sun Release 4.0  —  Last change: 30 October 1987

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026