KB(4S) — SPECIAL FILES
NAME
kb, kbd − Sun keyboard
SYNOPSIS
pseudo-device kbnumber
DESCRIPTION
kb provides access to the Sun workstation keyboard and its translation tables. 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. In addition, the kernel recognizes the special keyboard device /dev/kbd; it is a synonym for the system keyboard, which is physically attached to the system console. This keyboard’s keystrokes are normally treated as input to the /dev/console device.
The UNIX kernel 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 call KIOCTRANS controls the presence of keyboard translation, for which the following values are defined:
#define TR_NONE0
#define TR_ASCII1
#define TR_EVENT2
#define TR_UNTRANS_EVENT3
int x;
err = ioctl(fd, KIOCTRANS, &x);
When x is TR_NONE, keyboard translation is turned off and up/down key codes are reported. Specifying x as TR_ASCII causes ASCII to be reported. Specifying x as TR_EVENT causes Firm_events to be reported (see below). Specifying x as TR_UNTRANS_EVENT gives unencoded keyboard values for all input events within the window system.
Keyboard Translation-Table Entries
The call KIOCSETKEY changes a keyboard translation table entry, using the kiockey struct:
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) ∗/
};
struct kiockey key;
err = ioctl(fd, KIOCSETKEY, &key);
To alter a keyboard translation-table entry, set kio_tablemask table’s kio_station to kio_entry. Copy kio_string to the string table if kio_entry is between STRING and STRING+15. 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.
The call KIOCGETKEY determines the current value of a keyboard translation table entry:
struct kiockey key;
err = ioctl(fd, KIOCGETKEY, &key);
Get kio_tablemask table’s kio_station to kio_entry. Get kio_string from string table if kio_entry is between STRING and STRING+15. This call may return EINVAL if there are invalid arguments.
Keyboard Type
The call KIOCTYPE returns the type of the keyboard:
#defineKB_KLUNK0x00/∗ Micro Switch 103SD32-2 ∗/
#defineKB_VT1000x01/∗ Keytronics VT100 compatible ∗/
#defineKB_SUN20x02/∗ Sun-2 custom keyboard ∗/
#defineKB_SUN30x03/∗ Sun-3 custom keyboard ∗/
#defineKB_ASCII0x0F/∗ ASCII terminal masquerading as kbd ∗/
int x;
err = ioctl(fd, KIOCTYPE, &x);
When x is −1, the keyboard type is unknown.
Reading From The Keyboard
Normally, keystrokes are discarded, except for those typed at the system keyboard; those are translated and treated as input on the system console device /dev/console. In order to read keystrokes directly, the call KIOCSDIRECT must be used to set the keyboard to “direct input” mode. In this mode, keystrokes are translated and queued to be read by a process that has opened a keyboard device:
int on = 1;
err = ioctl(fd, KIOCSDIRECT, &on);
The KIOCSDIRECT call turns “direct input” mode on or off, depending on whether the variable pointed to by its argument has the value 1 or 0. The call KIOCGDIRECT sets the variable pointed to by its argument to the current state of this mode:
int direct_state;
err = ioctl(fd, KIOCGDIRECT, &direct_state);
When the keyboard device is closed, “direct mode” is turned off.
Keyboard Commands
The call KIOCCMD sends a command to the keyboard:
/∗
∗ Commands to the Sun-2 keyboard.
∗/
#define KBD_CMD_RESET 0x01/∗ Reset keyboard as if power-up ∗/
#define KBD_CMD_BELL 0x02/∗ Turn on the bell ∗/
#define KBD_CMD_NOBELL0x03/∗ Turn off the bell ∗/
/∗
∗ Commands to the Sun-3 keyboard. KBD_CMD_BELL & KBD_CMD_NOBELL work
∗ as well.
∗/
#define KBD_CMD_CLICK 0x0A/∗ Turn on the click annunciator ∗/
#define KBD_CMD_NOCLICK0x0B/∗ Turn off the click annunciator ∗/
int x;
err = ioctl(fd, KIOCCMD, &x);
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 can’t query the keyboard, and also because a process could do writes to the appropriate serial driver — thus going around this ioctl) we don’t provide an equivalent ioctl to query its state.
Shift Masks
When shift keys are pressed or locked, a different translation table is used to translate keyboard actions. The shift mask indicates which translation table to use. Since there may be more than one bit in in the shift mask at any given time, they are prioritized as follows:
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.
That is: if the event corresponds to a key-up, use the “Key Up” table. If the CTRL is down, use the “Controlled” table, and so on.
Special-Entry Values
Special-entry values are classified according to the value of the high-order bits (with the exception of ALT, which is defined as 0x6). 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 — 0xBF
The low-order bits index a table of strings. Each null-terminated string is returned 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 5 — F are available for custom entries.
Function Key Groups
In the following groups, the low-order bits indicate the function key number within the group:
LEFTFUNC0xC0
RIGHTFUNC0xD0
TOPFUNC0xE0
BOTTOMFUNC0xF0
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.
Normally, 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.
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 Sun-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
Sun-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 |
Sun-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 |
Sun-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 |
Sun-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 |
Sun-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 |
FILES
/dev/kbd
SEE ALSO
The SunView System Programmer’s Guide - Appendix: Writing a Virtual User Input Device Driver (describes Firm_event format)
Sun Release 3.2 — Last change: 25 June 1986