Annotation of researchv9/sys/sundev/keytables.c, revision 1.1.1.1

1.1       root        1: #ifndef lint
                      2: static char sccsid[] = "@(#)keytables.c 1.1 86/02/03 Copyr 1985 Sun Micro";
                      3: #endif
                      4: 
                      5: /*
                      6:  * Copyright (C) 1983 by Sun Microsystems, Inc.
                      7:  */
                      8: 
                      9: /*
                     10:  * keytables.c
                     11:  *
                     12:  * This module contains the translation tables for the up-down encoded
                     13:  * Sun keyboards.
                     14:  */
                     15: #include "../sundev/kbdvar.h"
                     16: 
                     17: /* handy way to define control characters in the tables */
                     18: #define        c(char) (char&0x1F)
                     19: #define ESC 0x1B
                     20: 
                     21: 
                     22: /* Unshifted keyboard table for Micro Switch 103SD32-2 */
                     23: 
                     24: static struct keymap keytab_ms_lc = {
                     25: /*  0 */       HOLE,   BUCKYBITS+SYSTEMBIT,
                     26:                                LF(2),  LF(3),  HOLE,   TF(1),  TF(2),  TF(3),
                     27: /*  8 */       TF(4),  TF(5),  TF(6),  TF(7),  TF(8),  TF(9),  TF(10), TF(11),
                     28: /* 16 */       TF(12), TF(13), TF(14), c('['), HOLE,   RF(1),  '+',    '-',
                     29: /* 24 */       HOLE,   LF(4),  '\f',   LF(6),  HOLE,   SHIFTKEYS+CAPSLOCK,
                     30:                                                                '1',    '2',
                     31: /* 32 */       '3',    '4',    '5',    '6',    '7',    '8',    '9',    '0',
                     32: /* 40 */       '-',    '~',    '`',    '\b',   HOLE,   '7',    '8',    '9',
                     33: /* 48 */       HOLE,   LF(7),  STRING+UPARROW,
                     34:                                        LF(9),  HOLE,   '\t',   'q',    'w',
                     35: /* 56 */       'e',    'r',    't',    'y',    'u',    'i',    'o',    'p',
                     36: /* 64 */       '{',    '}',    '_',    HOLE,   '4',    '5',    '6',    HOLE,
                     37: /* 72 */       STRING+LEFTARROW,
                     38:                        STRING+HOMEARROW,
                     39:                                STRING+RIGHTARROW,
                     40:                                        HOLE,   SHIFTKEYS+SHIFTLOCK,
                     41:                                                        'a',    's',    'd',
                     42: /* 80 */       'f',    'g',    'h',    'j',    'k',    'l',    ';',    ':',
                     43: /* 88 */       '|',    '\r',   HOLE,   '1',    '2',    '3',    HOLE,   NOSCROLL,
                     44: /* 96 */       STRING+DOWNARROW,
                     45:                        LF(15), HOLE,   HOLE,   SHIFTKEYS+LEFTSHIFT,
                     46:                                                        'z',    'x',    'c',
                     47: /*104 */       'v',    'b',    'n',    'm',    ',',    '.',    '/',    SHIFTKEYS+RIGHTSHIFT,
                     48: /*112 */       NOP,    0x7F,   '0',    NOP,    '.',    HOLE,   HOLE,   HOLE,
                     49: /*120 */       HOLE,   HOLE,   SHIFTKEYS+LEFTCTRL,
                     50:                                        ' ',    SHIFTKEYS+RIGHTCTRL,
                     51:                                                        HOLE,   HOLE,   IDLE,
                     52: };
                     53: 
                     54: /* Shifted keyboard table for Micro Switch 103SD32-2 */
                     55: 
                     56: static struct keymap keytab_ms_uc = {
                     57: /*  0 */       HOLE,   BUCKYBITS+SYSTEMBIT,
                     58:                                LF(2),  LF(3),  HOLE,   TF(1),  TF(2),  TF(3),
                     59: /*  8 */       TF(4),  TF(5),  TF(6),  TF(7),  TF(8),  TF(9),  TF(10), TF(11),
                     60: /* 16 */       TF(12), TF(13), TF(14), c('['), HOLE,   RF(1),  '+',    '-',
                     61: /* 24 */       HOLE,   LF(4),  '\f',   LF(6),  HOLE,   SHIFTKEYS+CAPSLOCK,
                     62:                                                                '!',    '"',
                     63: /* 32 */       '#',    '$',    '%',    '&',    '\'',   '(',    ')',    '0',
                     64: /* 40 */       '=',    '^',    '@',    '\b',   HOLE,   '7',    '8',    '9',
                     65: /* 48 */       HOLE,   LF(7),  STRING+UPARROW,
                     66:                                        LF(9),  HOLE,   '\t',   'Q',    'W',
                     67: /* 56 */       'E',    'R',    'T',    'Y',    'U',    'I',    'O',    'P',
                     68: /* 64 */       '[',    ']',    '_',    HOLE,   '4',    '5',    '6',    HOLE,
                     69: /* 72 */       STRING+LEFTARROW,
                     70:                        STRING+HOMEARROW,
                     71:                                STRING+RIGHTARROW,
                     72:                                        HOLE,   SHIFTKEYS+SHIFTLOCK,
                     73:                                                        'A',    'S',    'D',
                     74: /* 80 */       'F',    'G',    'H',    'J',    'K',    'L',    '+',    '*',
                     75: /* 88 */       '\\',   '\r',   HOLE,   '1',    '2',    '3',    HOLE,   NOSCROLL,
                     76: /* 96 */       STRING+DOWNARROW,
                     77:                        LF(15), HOLE,   HOLE,   SHIFTKEYS+LEFTSHIFT,
                     78:                                                        'Z',    'X',    'C',
                     79: /*104 */       'V',    'B',    'N',    'M',    '<',    '>',    '?',    SHIFTKEYS+RIGHTSHIFT,
                     80: /*112 */       NOP,    0x7F,   '0',    NOP,    '.',    HOLE,   HOLE,   HOLE,
                     81: /*120 */       HOLE,   HOLE,   SHIFTKEYS+LEFTCTRL,
                     82:                                        ' ',    SHIFTKEYS+RIGHTCTRL,
                     83:                                                        HOLE,   HOLE,   IDLE,
                     84: };
                     85: 
                     86: 
                     87: /* Caps Locked keyboard table for Micro Switch 103SD32-2 */
                     88: 
                     89: static struct keymap keytab_ms_cl = {
                     90: /*  0 */       HOLE,   BUCKYBITS+SYSTEMBIT,
                     91:                                LF(2),  LF(3),  HOLE,   TF(1),  TF(2),  TF(3),
                     92: /*  8 */       TF(4),  TF(5),  TF(6),  TF(7),  TF(8),  TF(9),  TF(10), TF(11),
                     93: /* 16 */       TF(12), TF(13), TF(14), c('['), HOLE,   RF(1),  '+',    '-',
                     94: /* 24 */       HOLE,   LF(4),  '\f',   LF(6),  HOLE,   SHIFTKEYS+CAPSLOCK,
                     95:                                                                '1',    '2',
                     96: /* 32 */       '3',    '4',    '5',    '6',    '7',    '8',    '9',    '0',
                     97: /* 40 */       '-',    '~',    '`',    '\b',   HOLE,   '7',    '8',    '9',
                     98: /* 48 */       HOLE,   LF(7),  STRING+UPARROW,
                     99:                                        LF(9),  HOLE,   '\t',   'Q',    'W',
                    100: /* 56 */       'E',    'R',    'T',    'Y',    'U',    'I',    'O',    'P',
                    101: /* 64 */       '{',    '}',    '_',    HOLE,   '4',    '5',    '6',    HOLE,
                    102: /* 72 */       STRING+LEFTARROW,
                    103:                        STRING+HOMEARROW,
                    104:                                STRING+RIGHTARROW,
                    105:                                        HOLE,   SHIFTKEYS+SHIFTLOCK,
                    106:                                                        'A',    'S',    'D',
                    107: /* 80 */       'F',    'G',    'H',    'J',    'K',    'L',    ';',    ':',
                    108: /* 88 */       '|',    '\r',   HOLE,   '1',    '2',    '3',    HOLE,   NOSCROLL,
                    109: /* 96 */       STRING+DOWNARROW,
                    110:                        LF(15), HOLE,   HOLE,   SHIFTKEYS+LEFTSHIFT,
                    111:                                                        'Z',    'X',    'C',
                    112: /*104 */       'V',    'B',    'N',    'M',    ',',    '.',    '/',    SHIFTKEYS+RIGHTSHIFT,
                    113: /*112 */       NOP,    0x7F,   '0',    NOP,    '.',    HOLE,   HOLE,   HOLE,
                    114: /*120 */       HOLE,   HOLE,   SHIFTKEYS+LEFTCTRL,
                    115:                                        ' ',    SHIFTKEYS+RIGHTCTRL,
                    116:                                                        HOLE,   HOLE,   IDLE,
                    117: };
                    118: 
                    119: /* Controlled keyboard table for Micro Switch 103SD32-2 */
                    120: 
                    121: static struct keymap keytab_ms_ct = {
                    122: /*  0 */       HOLE,   BUCKYBITS+SYSTEMBIT,
                    123:                                LF(2),  LF(3),  HOLE,   TF(1),  TF(2),  TF(3),
                    124: /*  8 */       TF(4),  TF(5),  TF(6),  TF(7),  TF(8),  TF(9),  TF(10), TF(11),
                    125: /* 16 */       TF(12), TF(13), TF(14), c('['), HOLE,   RF(1),  OOPS, OOPS,
                    126: /* 24 */       HOLE,   LF(4),  '\f',   LF(6),  HOLE,   SHIFTKEYS+CAPSLOCK,
                    127:                                                                OOPS,   OOPS,
                    128: /* 32 */       OOPS,   OOPS,   OOPS,   OOPS,   OOPS,   OOPS,   OOPS,   OOPS,
                    129: /* 40 */       OOPS,   c('^'), c('@'), '\b',   HOLE,   OOPS,   OOPS,   OOPS,
                    130: /* 48 */       HOLE,   LF(7),  STRING+UPARROW,
                    131:                                        LF(9),  HOLE,   '\t',   CTRLQ,  c('W'),
                    132: /* 56 */       c('E'), c('R'), c('T'), c('Y'), c('U'), c('I'), c('O'), c('P'),
                    133: /* 64 */       c('['), c(']'), c('_'), HOLE,   OOPS,   OOPS,   OOPS,   HOLE,
                    134: /* 72 */       STRING+LEFTARROW,
                    135:                        STRING+HOMEARROW,
                    136:                                STRING+RIGHTARROW,
                    137:                                        HOLE,   SHIFTKEYS+SHIFTLOCK,
                    138:                                                        c('A'), CTRLS,  c('D'),
                    139: /* 80 */       c('F'), c('G'), c('H'), c('J'), c('K'), c('L'), OOPS,   OOPS,
                    140: /* 88 */       c('\\'),
                    141:                        '\r',   HOLE,   OOPS,   OOPS,   OOPS,   HOLE,   NOSCROLL,
                    142: /* 96 */       STRING+DOWNARROW,
                    143:                        LF(15), HOLE,   HOLE,   SHIFTKEYS+LEFTSHIFT,
                    144:                                                        c('Z'), c('X'), c('C'),
                    145: /*104 */       c('V'), c('B'), c('N'), c('M'), OOPS,   OOPS,   OOPS,   SHIFTKEYS+RIGHTSHIFT,
                    146: /*112 */       NOP,    0x7F,   OOPS,   NOP,    OOPS,   HOLE,   HOLE,   HOLE,
                    147: /*120 */       HOLE,   HOLE,   SHIFTKEYS+LEFTCTRL,
                    148:                                        '\0',   SHIFTKEYS+RIGHTCTRL,
                    149:                                                        HOLE,   HOLE,   IDLE,
                    150: };
                    151: 
                    152: 
                    153: /* "Key Up" keyboard table for Micro Switch 103SD32-2 */
                    154: 
                    155: static struct keymap keytab_ms_up = {
                    156: /*  0 */       HOLE,   BUCKYBITS+SYSTEMBIT,
                    157:                                OOPS,   OOPS,   HOLE,   OOPS,   OOPS,   OOPS,
                    158: /*  8 */       OOPS,   OOPS,   OOPS,   OOPS,   OOPS,   OOPS,   OOPS,   OOPS,
                    159: /* 16 */       OOPS,   OOPS,   OOPS,   NOP,    HOLE,   OOPS,   NOP,    NOP,
                    160: /* 24 */       HOLE,   OOPS,   NOP,    OOPS,   HOLE,   SHIFTKEYS+CAPSLOCK,
                    161:                                                                NOP,    NOP,
                    162: /* 32 */       NOP,    NOP,    NOP,    NOP,    NOP,    NOP,    NOP,    NOP,
                    163: /* 40 */       NOP,    NOP,    NOP,    NOP,    HOLE,   NOP,    NOP,    NOP,
                    164: /* 48 */       HOLE,   OOPS,   NOP,    OOPS,   HOLE,   NOP,    NOP,    NOP,
                    165: /* 56 */       NOP,    NOP,    NOP,    NOP,    NOP,    NOP,    NOP,    NOP,
                    166: /* 64 */       NOP,    NOP,    NOP,    HOLE,   NOP,    NOP,    NOP,    HOLE,
                    167: /* 72 */       NOP,    NOP,    NOP,    HOLE,   SHIFTKEYS+SHIFTLOCK,
                    168:                                                        NOP,    NOP,    NOP,
                    169: /* 80 */       NOP,    NOP,    NOP,    NOP,    NOP,    NOP,    NOP,    NOP,
                    170: /* 88 */       NOP,    NOP,    HOLE,   NOP,    NOP,    NOP,    HOLE,   NOP,
                    171: /* 96 */       NOP,    OOPS,   HOLE,   HOLE,   SHIFTKEYS+LEFTSHIFT,
                    172:                                                        NOP,    NOP,    NOP,
                    173: /*104 */       NOP,    NOP,    NOP,    NOP,    NOP,    NOP,    NOP,    SHIFTKEYS+RIGHTSHIFT,
                    174: /*112 */       NOP,    NOP,    NOP,    NOP,    NOP,    HOLE,   HOLE,   HOLE,
                    175: /*120 */       HOLE,   HOLE,   SHIFTKEYS+LEFTCTRL,
                    176:                                        NOP,    SHIFTKEYS+RIGHTCTRL,
                    177:                                                        HOLE,   HOLE,   RESET,
                    178: };
                    179: 
                    180: 
                    181: /* Index to keymaps for Micro Switch 103SD32-2 */
                    182: static struct keyboard keyindex_ms = {
                    183:        &keytab_ms_lc,
                    184:        &keytab_ms_uc,
                    185:        &keytab_ms_cl,
                    186:        &keytab_ms_ct,
                    187:        &keytab_ms_up,
                    188:        CTLSMASK,       /* Shift bits which stay on with idle keyboard */
                    189:        0x0000,         /* Bucky bits which stay on with idle keyboard */
                    190:        1,      77,     /* abort keys */
                    191:        0x0000,         /* Shift bits which toggle on down event */
                    192: };
                    193: 
                    194: /* Unshifted keyboard table for Sun-2 keyboard */
                    195: 
                    196: static struct keymap keytab_s2_lc = {
                    197: /*  0 */       HOLE,   BUCKYBITS+SYSTEMBIT,
                    198:                                LF(11), LF(2),  HOLE,   TF(1),  TF(2),  TF(11),
                    199: /*  8 */       TF(3),  TF(12), TF(4),  TF(13), TF(5),  TF(14), TF(6),  TF(15),
                    200: /* 16 */       TF(7),  TF(8),  TF(9),  TF(10), HOLE,   RF(1),  RF(2),  RF(3),
                    201: /* 24 */       HOLE,   LF(3),  LF(4),  LF(12), HOLE,   c('['), '1',    '2',
                    202: /* 32 */       '3',    '4',    '5',    '6',    '7',    '8',    '9',    '0',
                    203: /* 40 */       '-',    '=',    '`',    '\b',   HOLE,   RF(4),  RF(5),  RF(6),
                    204: /* 48 */       HOLE,   LF(5),  LF(13), LF(6),  HOLE,   '\t',   'q',    'w',
                    205: /* 56 */       'e',    'r',    't',    'y',    'u',    'i',    'o',    'p',
                    206: /* 64 */       '[',    ']',    0x7F,   HOLE,   RF(7),  STRING+UPARROW,
                    207:                                                                RF(9),  HOLE,
                    208: /* 72 */       LF(7),  LF(8),  LF(14), HOLE,   SHIFTKEYS+LEFTCTRL,
                    209:                                                        'a',    's',    'd',
                    210: /* 80 */       'f',    'g',    'h',    'j',    'k',    'l',    ';',    '\'',
                    211: /* 88 */       '\\',   '\r',   HOLE,   STRING+LEFTARROW,
                    212:                                                RF(11), STRING+RIGHTARROW,
                    213:                                                                HOLE,   LF(9),
                    214: /* 96 */       LF(15), LF(10), HOLE,   SHIFTKEYS+LEFTSHIFT,
                    215:                                                'z',    'x',    'c',    'v',
                    216: /*104 */       'b',    'n',    'm',    ',',    '.',    '/',    SHIFTKEYS+RIGHTSHIFT,
                    217:                                                                        '\n',
                    218: /*112 */       RF(13), STRING+DOWNARROW,
                    219:                                RF(15), HOLE,   HOLE,   HOLE,   HOLE,   HOLE,
                    220: /*120 */       BUCKYBITS+METABIT,
                    221:                        ' ',    BUCKYBITS+METABIT,
                    222:                                        HOLE,   HOLE,   HOLE,   ERROR,  IDLE,
                    223: };
                    224: 
                    225: /* Shifted keyboard table for Sun-2 keyboard */
                    226: 
                    227: static struct keymap keytab_s2_uc = {
                    228: /*  0 */       HOLE,   BUCKYBITS+SYSTEMBIT,
                    229:                                LF(11), LF(2),  HOLE,   TF(1),  TF(2),  TF(11),
                    230: /*  8 */       TF(3),  TF(12), TF(4),  TF(13), TF(5),  TF(14), TF(6),  TF(15),
                    231: /* 16 */       TF(7),  TF(8),  TF(9),  TF(10), HOLE,   RF(1),  RF(2),  RF(3),
                    232: /* 24 */       HOLE,   LF(3),  LF(4),  LF(12), HOLE,   c('['), '!',    '@',
                    233: /* 32 */       '#',    '$',    '%',    '^',    '&',    '*',    '(',    ')',
                    234: /* 40 */       '_',    '+',    '~',    '\b',   HOLE,   RF(4),  RF(5),  RF(6),
                    235: /* 48 */       HOLE,   LF(5),  LF(13), LF(6),  HOLE,   '\t',   'Q',    'W',
                    236: /* 56 */       'E',    'R',    'T',    'Y',    'U',    'I',    'O',    'P',
                    237: /* 64 */       '{',    '}',    0x7F,   HOLE,   RF(7),  STRING+UPARROW,
                    238:                                                                RF(9),  HOLE,
                    239: /* 72 */       LF(7),  LF(8),  LF(14), HOLE,   SHIFTKEYS+LEFTCTRL,
                    240:                                                        'A',    'S',    'D',
                    241: /* 80 */       'F',    'G',    'H',    'J',    'K',    'L',    ':',    '"',
                    242: /* 88 */       '|',    '\r',   HOLE,   STRING+LEFTARROW,
                    243:                                                RF(11), STRING+RIGHTARROW,
                    244:                                                                HOLE,   LF(9),
                    245: /* 96 */       LF(15), LF(10), HOLE,   SHIFTKEYS+LEFTSHIFT,
                    246:                                                'Z',    'X',    'C',    'V',
                    247: /*104 */       'B',    'N',    'M',    '<',    '>',    '?',    SHIFTKEYS+RIGHTSHIFT,
                    248:                                                                        '\n',
                    249: /*112 */       RF(13), STRING+DOWNARROW,
                    250:                                RF(15), HOLE,   HOLE,   HOLE,   HOLE,   HOLE,
                    251: /*120 */       BUCKYBITS+METABIT,
                    252:                        ' ',    BUCKYBITS+METABIT,
                    253:                                        HOLE,   HOLE,   HOLE,   ERROR,  IDLE,
                    254: };
                    255: 
                    256: 
                    257: /* Caps Locked keyboard table for Sun-2 keyboard */
                    258: 
                    259: static struct keymap keytab_s2_cl = {
                    260: /*  0 */       HOLE,   BUCKYBITS+SYSTEMBIT,
                    261:                                LF(11), LF(2),  HOLE,   TF(1),  TF(2),  TF(11),
                    262: /*  8 */       TF(3),  TF(12), TF(4),  TF(13), TF(5),  TF(14), TF(6),  TF(15),
                    263: /* 16 */       TF(7),  TF(8),  TF(9),  TF(10), HOLE,   RF(1),  RF(2),  RF(3),
                    264: /* 24 */       HOLE,   LF(3),  LF(4),  LF(12), HOLE,   c('['), '1',    '2',
                    265: /* 32 */       '3',    '4',    '5',    '6',    '7',    '8',    '9',    '0',
                    266: /* 40 */       '-',    '=',    '`',    '\b',   HOLE,   RF(4),  RF(5),  RF(6),
                    267: /* 48 */       HOLE,   LF(5),  LF(13), LF(6),  HOLE,   '\t',   'Q',    'W',
                    268: /* 56 */       'E',    'R',    'T',    'Y',    'U',    'I',    'O',    'P',
                    269: /* 64 */       '[',    ']',    0x7F,   HOLE,   RF(7),  STRING+UPARROW,
                    270:                                                                RF(9),  HOLE,
                    271: /* 72 */       LF(7),  LF(8),  LF(14), HOLE,   SHIFTKEYS+LEFTCTRL,
                    272:                                                        'A',    'S',    'D',
                    273: /* 80 */       'F',    'G',    'H',    'J',    'K',    'L',    ';',    '\'',
                    274: /* 88 */       '\\',   '\r',   HOLE,   STRING+LEFTARROW,
                    275:                                                RF(11), STRING+RIGHTARROW,
                    276:                                                                HOLE,   LF(9),
                    277: /* 96 */       LF(15), LF(10), HOLE,   SHIFTKEYS+LEFTSHIFT,
                    278:                                                'Z',    'X',    'C',    'V',
                    279: /*104 */       'B',    'N',    'M',    ',',    '.',    '/',    SHIFTKEYS+RIGHTSHIFT,
                    280:                                                                        '\n',
                    281: /*112 */       RF(13), STRING+DOWNARROW,
                    282:                                RF(15), HOLE,   HOLE,   HOLE,   HOLE,   HOLE,
                    283: /*120 */       BUCKYBITS+METABIT,
                    284:                        ' ',    BUCKYBITS+METABIT,
                    285:                                        HOLE,   HOLE,   HOLE,   ERROR,  IDLE,
                    286: };
                    287: 
                    288: /* Controlled keyboard table for Sun-2 keyboard */
                    289: 
                    290: static struct keymap keytab_s2_ct = {
                    291: /*  0 */       HOLE,   BUCKYBITS+SYSTEMBIT,
                    292:                                LF(11), LF(2),  HOLE,   TF(1),  TF(2),  TF(11),
                    293: /*  8 */       TF(3),  TF(12), TF(4),  TF(13), TF(5),  TF(14), TF(6),  TF(15),
                    294: /* 16 */       TF(7),  TF(8),  TF(9),  TF(10), HOLE,   RF(1),  RF(2),  RF(3),
                    295: /* 24 */       HOLE,   LF(3),  LF(4),  LF(12), HOLE,   c('['), '1',    c('@'),
                    296: /* 32 */       '3',    '4',    '5',    c('^'), '7',    '8',    '9',    '0',
                    297: /* 40 */       c('_'), '=',    c('^'), '\b',   HOLE,   RF(4),  RF(5),  RF(6),
                    298: /* 48 */       HOLE,   LF(5),  LF(13), LF(6),  HOLE,   '\t',   c('q'), c('w'),
                    299: /* 56 */       c('e'), c('r'), c('t'), c('y'), c('u'), c('i'), c('o'), c('p'),
                    300: /* 64 */       c('['), c(']'), 0x7F,   HOLE,   RF(7),  STRING+UPARROW,
                    301:                                                                RF(9),  HOLE,
                    302: /* 72 */       LF(7),  LF(8),  LF(14), HOLE,   SHIFTKEYS+LEFTCTRL,
                    303:                                                        c('a'), c('s'), c('d'),
                    304: /* 80 */       c('f'), c('g'), c('h'), c('j'), c('k'), c('l'), ';',    '\'',
                    305: /* 88 */       c('\\'),
                    306:                        '\r',   HOLE,   STRING+LEFTARROW,
                    307:                                                RF(11), STRING+RIGHTARROW,
                    308:                                                                HOLE,   LF(9),
                    309: /* 96 */       LF(15), LF(10), HOLE,   SHIFTKEYS+LEFTSHIFT,
                    310:                                                c('z'), c('x'), c('c'), c('v'),
                    311: /*104 */       c('b'), c('n'), c('m'), ',',    '.',    c('_'), SHIFTKEYS+RIGHTSHIFT,
                    312:                                                                        '\n',
                    313: /*112 */       RF(13), STRING+DOWNARROW,
                    314:                                RF(15), HOLE,   HOLE,   HOLE,   HOLE,   HOLE,
                    315: /*120 */       BUCKYBITS+METABIT,
                    316:                        c(' '), BUCKYBITS+METABIT,
                    317:                                        HOLE,   HOLE,   HOLE,   ERROR,  IDLE,
                    318: };
                    319: 
                    320: 
                    321: 
                    322: /* "Key Up" keyboard table for Sun-2 keyboard */
                    323: 
                    324: static struct keymap keytab_s2_up = {
                    325: /*  0 */       HOLE,   BUCKYBITS+SYSTEMBIT,
                    326:                                OOPS,   OOPS,   HOLE,   OOPS,   OOPS,   OOPS,
                    327: /*  8 */       OOPS,   OOPS,   OOPS,   OOPS,   OOPS,   OOPS,   OOPS,   OOPS,
                    328: /* 16 */       OOPS,   OOPS,   OOPS,   OOPS,   HOLE,   OOPS,   OOPS,   NOP,
                    329: /* 24 */       HOLE,   OOPS,   OOPS,   OOPS,   HOLE,   NOP,    NOP,    NOP,
                    330: /* 32 */       NOP,    NOP,    NOP,    NOP,    NOP,    NOP,    NOP,    NOP,
                    331: /* 40 */       NOP,    NOP,    NOP,    NOP,    HOLE,   OOPS,   OOPS,   NOP,
                    332: /* 48 */       HOLE,   OOPS,   OOPS,   OOPS,   HOLE,   NOP,    NOP,    NOP,
                    333: /* 56 */       NOP,    NOP,    NOP,    NOP,    NOP,    NOP,    NOP,    NOP,
                    334: /* 64 */       NOP,    NOP,    NOP,    HOLE,   OOPS,   OOPS,   NOP,    HOLE,
                    335: /* 72 */       OOPS,   OOPS,   OOPS,   HOLE,   SHIFTKEYS+LEFTCTRL,
                    336:                                                        NOP,    NOP,    NOP,
                    337: /* 80 */       NOP,    NOP,    NOP,    NOP,    NOP,    NOP,    NOP,    NOP,
                    338: /* 88 */       NOP,    NOP,    HOLE,   OOPS,   OOPS,   NOP,    HOLE,   OOPS,
                    339: /* 96 */       OOPS,   OOPS,   HOLE,   SHIFTKEYS+LEFTSHIFT,
                    340:                                                NOP,    NOP,    NOP,    NOP,
                    341: /*104 */       NOP,    NOP,    NOP,    NOP,    NOP,    NOP,    SHIFTKEYS+RIGHTSHIFT,
                    342:                                                                        NOP,
                    343: /*112 */       OOPS,   OOPS,   NOP,    HOLE,   HOLE,   HOLE,   HOLE,   HOLE,
                    344: /*120 */       BUCKYBITS+METABIT,
                    345:                        NOP,    BUCKYBITS+METABIT,
                    346:                                        HOLE,   HOLE,   HOLE,   HOLE,   RESET,
                    347: };
                    348: 
                    349: /* Index to keymaps for Sun-2 keyboard */
                    350: static struct keyboard keyindex_s2 = {
                    351:        &keytab_s2_lc,
                    352:        &keytab_s2_uc,
                    353:        &keytab_s2_cl,
                    354:        &keytab_s2_ct,
                    355:        &keytab_s2_up,
                    356:        CAPSMASK,       /* Shift bits which stay on with idle keyboard */
                    357:        0x0000,         /* Bucky bits which stay on with idle keyboard */
                    358:        1,      77,     /* abort keys */
                    359:        0x0000,         /* Shift bits which toggle on down event */
                    360: };
                    361: 
                    362: /* Unshifted keyboard table for "VT100 style" */
                    363: 
                    364: static struct keymap keytab_vt_lc = {
                    365: /*  0 */       HOLE,   BUCKYBITS+SYSTEMBIT,
                    366:                                HOLE,   HOLE,   HOLE,   HOLE,   HOLE,   HOLE,
                    367: /*  8 */       HOLE,   HOLE,   STRING+UPARROW,
                    368:                                        STRING+DOWNARROW,
                    369:                                                STRING+LEFTARROW,
                    370:                                                        STRING+RIGHTARROW,
                    371:                                                                HOLE,   TF(1),
                    372: /* 16 */       TF(2),  TF(3),  TF(4),  c('['), '1',    '2',    '3',    '4',
                    373: /* 24 */       '5',    '6',    '7',    '8',    '9',    '0',    '-',    '=',
                    374: /* 32 */       '`',    c('H'), BUCKYBITS+METABIT,
                    375:                                        '7',    '8',    '9',    '-',    '\t',
                    376: /* 40 */       'q',    'w',    'e',    'r',    't',    'y',    'u',    'i',
                    377: /* 48 */       'o',    'p',    '[',    ']',    0x7F,   '4',    '5',    '6',
                    378: /* 56 */       ',',    SHIFTKEYS+LEFTCTRL,
                    379:                                SHIFTKEYS+CAPSLOCK,
                    380:                                        'a',    's',    'd',    'f',    'g',
                    381: /* 64 */       'h',    'j',    'k',    'l',    ';',    '\'',   '\r',   '\\',
                    382: /* 72 */       '1',    '2',    '3',    NOP,    NOSCROLL,
                    383:                                                        SHIFTKEYS+LEFTSHIFT,
                    384:                                                                'z',    'x',
                    385: /* 80 */       'c',    'v',    'b',    'n',    'm',    ',',    '.',    '/',
                    386: /* 88 */       SHIFTKEYS+RIGHTSHIFT,
                    387:                        '\n',   '0',    HOLE,   '.',    '\r',   HOLE,   HOLE,
                    388: /* 96 */       HOLE,   HOLE,   ' ',    HOLE,   HOLE,   HOLE,   HOLE,   HOLE,
                    389: /*104 */       HOLE,   HOLE,   HOLE,   HOLE,   HOLE,   HOLE,   HOLE,   HOLE,
                    390: /*112 */       HOLE,   HOLE,   HOLE,   HOLE,   HOLE,   HOLE,   HOLE,   HOLE,
                    391: /*120 */       HOLE,   HOLE,   HOLE,   HOLE,   HOLE,   HOLE,   HOLE,   IDLE,
                    392: };
                    393: 
                    394: 
                    395: /* Shifted keyboard table for "VT100 style" */
                    396: 
                    397: static struct keymap keytab_vt_uc = {
                    398: /*  0 */       HOLE,   BUCKYBITS+SYSTEMBIT,
                    399:                                HOLE,   HOLE,   HOLE,   HOLE,   HOLE,   HOLE,
                    400: /*  8 */       HOLE,   HOLE,   STRING+UPARROW,
                    401:                                        STRING+DOWNARROW,
                    402:                                                STRING+LEFTARROW,
                    403:                                                        STRING+RIGHTARROW,
                    404:                                                                HOLE,   TF(1),
                    405: /* 16 */       TF(2),  TF(3),  TF(4),  c('['), '!',    '@',    '#',    '$',
                    406: /* 24 */       '%',    '^',    '&',    '*',    '(',    ')',    '_',    '+',
                    407: /* 32 */       '~',    c('H'), BUCKYBITS+METABIT,
                    408:                                        '7',    '8',    '9',    '-',    '\t',
                    409: /* 40 */       'Q',    'W',    'E',    'R',    'T',    'Y',    'U',    'I',
                    410: /* 48 */       'O',    'P',    '{',    '}',    0x7F,   '4',    '5',    '6',
                    411: /* 56 */       ',',    SHIFTKEYS+LEFTCTRL,
                    412:                                SHIFTKEYS+CAPSLOCK,
                    413:                                        'A',    'S',    'D',    'F',    'G',
                    414: /* 64 */       'H',    'J',    'K',    'L',    ':',    '"',    '\r',   '|',
                    415: /* 72 */       '1',    '2',    '3',    NOP,    NOSCROLL,
                    416:                                                        SHIFTKEYS+LEFTSHIFT,
                    417:                                                                'Z',    'X',
                    418: /* 80 */       'C',    'V',    'B',    'N',    'M',    '<',    '>',    '?',
                    419: /* 88 */       SHIFTKEYS+RIGHTSHIFT,
                    420:                        '\n',   '0',    HOLE,   '.',    '\r',   HOLE,   HOLE,
                    421: /* 96 */       HOLE,   HOLE,   ' ',    HOLE,   HOLE,   HOLE,   HOLE,   HOLE,
                    422: /*104 */       HOLE,   HOLE,   HOLE,   HOLE,   HOLE,   HOLE,   HOLE,   HOLE,
                    423: /*112 */       HOLE,   HOLE,   HOLE,   HOLE,   HOLE,   HOLE,   HOLE,   HOLE,
                    424: /*120 */       HOLE,   HOLE,   HOLE,   HOLE,   HOLE,   HOLE,   HOLE,   IDLE,
                    425: };
                    426: 
                    427: /* Caps Locked keyboard table for "VT100 style" */
                    428: 
                    429: static struct keymap keytab_vt_cl = {
                    430: /*  0 */       HOLE,   BUCKYBITS+SYSTEMBIT,
                    431:                                HOLE,   HOLE,   HOLE,   HOLE,   HOLE,   HOLE,
                    432: /*  8 */       HOLE,   HOLE,   STRING+UPARROW,
                    433:                                        STRING+DOWNARROW,
                    434:                                                STRING+LEFTARROW,
                    435:                                                        STRING+RIGHTARROW,
                    436:                                                                HOLE,   TF(1),
                    437: /* 16 */       TF(2),  TF(3),  TF(4),  c('['), '1',    '2',    '3',    '4',
                    438: /* 24 */       '5',    '6',    '7',    '8',    '9',    '0',    '-',    '=',
                    439: /* 32 */       '`',    c('H'), BUCKYBITS+METABIT,
                    440:                                        '7',    '8',    '9',    '-',    '\t',
                    441: /* 40 */       'Q',    'W',    'E',    'R',    'T',    'Y',    'U',    'I',
                    442: /* 48 */       'O',    'P',    '[',    ']',    0x7F,   '4',    '5',    '6',
                    443: /* 56 */       ',',    SHIFTKEYS+LEFTCTRL,
                    444:                                SHIFTKEYS+CAPSLOCK,
                    445:                                        'A',    'S',    'D',    'F',    'G',
                    446: /* 64 */       'H',    'J',    'K',    'L',    ';',    '\'',   '\r',   '\\',
                    447: /* 72 */       '1',    '2',    '3',    NOP,    NOSCROLL,
                    448:                                                        SHIFTKEYS+LEFTSHIFT,
                    449:                                                                'Z',    'X',
                    450: /* 80 */       'C',    'V',    'B',    'N',    'M',    ',',    '.',    '/',
                    451: /* 88 */       SHIFTKEYS+RIGHTSHIFT,
                    452:                        '\n',   '0',    HOLE,   '.',    '\r',   HOLE,   HOLE,
                    453: /* 96 */       HOLE,   HOLE,   ' ',    HOLE,   HOLE,   HOLE,   HOLE,   HOLE,
                    454: /*104 */       HOLE,   HOLE,   HOLE,   HOLE,   HOLE,   HOLE,   HOLE,   HOLE,
                    455: /*112 */       HOLE,   HOLE,   HOLE,   HOLE,   HOLE,   HOLE,   HOLE,   HOLE,
                    456: /*120 */       HOLE,   HOLE,   HOLE,   HOLE,   HOLE,   HOLE,   HOLE,   IDLE,
                    457: };
                    458: 
                    459: /* Controlled keyboard table for "VT100 style" */
                    460: 
                    461: static struct keymap keytab_vt_ct = {
                    462: /*  0 */       HOLE,   BUCKYBITS+SYSTEMBIT,
                    463:                                HOLE,   HOLE,   HOLE,   HOLE,   HOLE,   HOLE,
                    464: /*  8 */       HOLE,   HOLE,   STRING+UPARROW,
                    465:                                        STRING+DOWNARROW,
                    466:                                                STRING+LEFTARROW,
                    467:                                                        STRING+RIGHTARROW,
                    468:                                                                HOLE,   TF(1),
                    469: /* 16 */       TF(2),  TF(3),  TF(4),  c('['), '1',    c('@'), '3',    '4',
                    470: /* 24 */       '5',    c('^'), '7',    '8',    '9',    '0',    c('_'), '=',
                    471: /* 32 */       c('^'), c('H'), BUCKYBITS+METABIT,
                    472:                                        '7',    '8',    '9',    '-',    '\t',
                    473: /* 40 */       CTRLQ,  c('W'), c('E'), c('R'), c('T'), c('Y'), c('U'), c('I'),
                    474: /* 48 */       c('O'), c('P'), c('['), c(']'), 0x7F,   '4',    '5',    '6',
                    475: /* 56 */       ',',    SHIFTKEYS+LEFTCTRL,
                    476:                                SHIFTKEYS+CAPSLOCK,
                    477:                                        c('A'), CTRLS,  c('D'), c('F'), c('G'),
                    478: /* 64 */       c('H'), c('J'), c('K'), c('L'), ':',    '"',    '\r',   c('\\'),
                    479: /* 72 */       '1',    '2',    '3',    NOP,    NOSCROLL,
                    480:                                                        SHIFTKEYS+LEFTSHIFT,
                    481:                                                                c('Z'), c('X'),
                    482: /* 80 */       c('C'), c('V'), c('B'), c('N'), c('M'), ',',    '.',    c('_'),
                    483: /* 88 */       SHIFTKEYS+RIGHTSHIFT,
                    484:                        '\n',   '0',    HOLE,   '.',    '\r',   HOLE,   HOLE,
                    485: /* 96 */       HOLE,   HOLE,   c(' '), HOLE,   HOLE,   HOLE,   HOLE,   HOLE,
                    486: /*104 */       HOLE,   HOLE,   HOLE,   HOLE,   HOLE,   HOLE,   HOLE,   HOLE,
                    487: /*112 */       HOLE,   HOLE,   HOLE,   HOLE,   HOLE,   HOLE,   HOLE,   HOLE,
                    488: /*120 */       HOLE,   HOLE,   HOLE,   HOLE,   HOLE,   HOLE,   HOLE,   IDLE,
                    489: };
                    490: 
                    491: 
                    492: /* "Key Up" keyboard table for "VT100 style" */
                    493: 
                    494: static struct keymap keytab_vt_up = {
                    495: /*  0 */       HOLE,   BUCKYBITS+SYSTEMBIT,
                    496:                                HOLE,   HOLE,   HOLE,   HOLE,   HOLE,   HOLE,
                    497: /*  8 */       HOLE,   HOLE,   NOP,    NOP,    NOP,    NOP,    HOLE,   OOPS,
                    498: /* 16 */       OOPS,   OOPS,   OOPS,   NOP,    NOP,    NOP,    NOP,    NOP,
                    499: /* 24 */       NOP,    NOP,    NOP,    NOP,    NOP,    NOP,    NOP,    NOP,
                    500: /* 32 */       NOP,    NOP,    BUCKYBITS+METABIT,
                    501:                                        NOP,    NOP,    NOP,    NOP,    NOP,
                    502: /* 40 */       NOP,    NOP,    NOP,    NOP,    NOP,    NOP,    NOP,    NOP,
                    503: /* 48 */       NOP,    NOP,    NOP,    NOP,    NOP,    NOP,    NOP,    NOP,
                    504: /* 56 */       NOP,    SHIFTKEYS+LEFTCTRL,
                    505:                                SHIFTKEYS+CAPSLOCK,
                    506:                                        NOP,    NOP,    NOP,    NOP,    NOP,
                    507: /* 64 */       NOP,    NOP,    NOP,    NOP,    NOP,    NOP,    NOP,    NOP,
                    508: /* 72 */       NOP,    NOP,    NOP,    NOP,    NOP,    SHIFTKEYS+LEFTSHIFT,
                    509:                                                                NOP,    NOP,
                    510: /* 80 */       NOP,    NOP,    NOP,    NOP,    NOP,    NOP,    NOP,    NOP,
                    511: /* 88 */       SHIFTKEYS+RIGHTSHIFT,
                    512:                        NOP,    NOP,    HOLE,   NOP,    NOP,    HOLE,   HOLE,
                    513: /* 96 */       HOLE,   HOLE,   NOP,    HOLE,   HOLE,   HOLE,   HOLE,   HOLE,
                    514: /*104 */       HOLE,   HOLE,   HOLE,   HOLE,   HOLE,   HOLE,   HOLE,   HOLE,
                    515: /*112 */       HOLE,   HOLE,   HOLE,   HOLE,   HOLE,   HOLE,   HOLE,   HOLE,
                    516: /*120 */       HOLE,   HOLE,   HOLE,   HOLE,   HOLE,   HOLE,   HOLE,   RESET,
                    517: };
                    518: 
                    519: 
                    520: /* Index to keymaps for "VT100 style" keyboard */
                    521: static struct keyboard keyindex_vt = {
                    522:        &keytab_vt_lc,
                    523:        &keytab_vt_uc,
                    524:        &keytab_vt_cl,
                    525:        &keytab_vt_ct,
                    526:        &keytab_vt_up,
                    527:        CAPSMASK+CTLSMASK,      /* Shift keys that stay on at idle keyboard */
                    528:        0x0000,         /* Bucky bits that stay on at idle keyboard */
                    529:        1,      59,     /* abort keys */
                    530:        0x0000,         /* Shift bits which toggle on down event */
                    531: };
                    532: 
                    533: /* Unshifted keyboard table for Sun-3 keyboard */
                    534: 
                    535: static struct keymap keytab_s3_lc = {
                    536: /*  0 */       HOLE,   BUCKYBITS+SYSTEMBIT,
                    537:                                HOLE,   LF(2),  HOLE,   TF(1),  TF(2),  HOLE,
                    538: /*  8 */       TF(3),  HOLE,   TF(4),  HOLE,   TF(5),  HOLE,   TF(6),  HOLE,
                    539: /* 16 */       TF(7),  TF(8),  TF(9),  ALT,    HOLE,   RF(1),  RF(2),  RF(3),
                    540: /* 24 */       HOLE,   LF(3),  LF(4),  HOLE,   HOLE,   c('['), '1',    '2',
                    541: /* 32 */       '3',    '4',    '5',    '6',    '7',    '8',    '9',    '0',
                    542: /* 40 */       '-',    '=',    '`',    '\b',   HOLE,   RF(4),  RF(5),  RF(6),
                    543: /* 48 */       HOLE,   LF(5),  HOLE,   LF(6),  HOLE,   '\t',   'q',    'w',
                    544: /* 56 */       'e',    'r',    't',    'y',    'u',    'i',    'o',    'p',
                    545: /* 64 */       '[',    ']',    0x7F,   HOLE,   RF(7),  STRING+UPARROW,
                    546:                                                                RF(9),  HOLE,
                    547: /* 72 */       LF(7),  LF(8),  LF(14), HOLE,   SHIFTKEYS+LEFTCTRL,
                    548:                                                        'a',    's',    'd',
                    549: /* 80 */       'f',    'g',    'h',    'j',    'k',    'l',    ';',    '\'',
                    550: /* 88 */       '\\',   '\r',   HOLE,   STRING+LEFTARROW,
                    551:                                                RF(11), STRING+RIGHTARROW,
                    552:                                                                HOLE,   LF(9),
                    553: /* 96 */       LF(15), LF(10), HOLE,   SHIFTKEYS+LEFTSHIFT,
                    554:                                                'z',    'x',    'c',    'v',
                    555: /*104 */       'b',    'n',    'm',    ',',    '.',    '/',    SHIFTKEYS+RIGHTSHIFT,
                    556:                                                                        '\n',
                    557: /*112 */       RF(13), STRING+DOWNARROW,
                    558:                                RF(15), HOLE,   HOLE,   HOLE,   HOLE,   SHIFTKEYS+CAPSLOCK,
                    559: /*120 */       BUCKYBITS+METABIT,
                    560:                        ' ',    BUCKYBITS+METABIT,
                    561:                                        HOLE,   HOLE,   HOLE,   ERROR,  IDLE,
                    562: };
                    563: 
                    564: /* Shifted keyboard table for Sun-3 keyboard */
                    565: 
                    566: static struct keymap keytab_s3_uc = {
                    567: /*  0 */       HOLE,   BUCKYBITS+SYSTEMBIT,
                    568:                                HOLE,   LF(2),  HOLE,   TF(1),  TF(2),  HOLE,
                    569: /*  8 */       TF(3),  HOLE,   TF(4),  HOLE,   TF(5),  HOLE,   TF(6),  HOLE,
                    570: /* 16 */       TF(7),  TF(8),  TF(9),  ALT,    HOLE,   RF(1),  RF(2),  RF(3),
                    571: /* 24 */       HOLE,   LF(3),  LF(4),  HOLE,   HOLE,   c('['), '!',    '@',
                    572: /* 32 */       '#',    '$',    '%',    '^',    '&',    '*',    '(',    ')',
                    573: /* 40 */       '_',    '+',    '~',    '\b',   HOLE,   RF(4),  RF(5),  RF(6),
                    574: /* 48 */       HOLE,   LF(5),  HOLE,   LF(6),  HOLE,   '\t',   'Q',    'W',
                    575: /* 56 */       'E',    'R',    'T',    'Y',    'U',    'I',    'O',    'P',
                    576: /* 64 */       '{',    '}',    0x7F,   HOLE,   RF(7),  STRING+UPARROW,
                    577:                                                                RF(9),  HOLE,
                    578: /* 72 */       LF(7),  LF(8),  HOLE,   HOLE,   SHIFTKEYS+LEFTCTRL,
                    579:                                                        'A',    'S',    'D',
                    580: /* 80 */       'F',    'G',    'H',    'J',    'K',    'L',    ':',    '"',
                    581: /* 88 */       '|',    '\r',   HOLE,   STRING+LEFTARROW,
                    582:                                                RF(11), STRING+RIGHTARROW,
                    583:                                                                HOLE,   LF(9),
                    584: /* 96 */       LF(15), LF(10), HOLE,   SHIFTKEYS+LEFTSHIFT,
                    585:                                                'Z',    'X',    'C',    'V',
                    586: /*104 */       'B',    'N',    'M',    '<',    '>',    '?',    SHIFTKEYS+RIGHTSHIFT,
                    587:                                                                        '\n',
                    588: /*112 */       RF(13), STRING+DOWNARROW,
                    589:                                RF(15), HOLE,   HOLE,   HOLE,   HOLE,   SHIFTKEYS+CAPSLOCK,
                    590: /*120 */       BUCKYBITS+METABIT,
                    591:                        ' ',    BUCKYBITS+METABIT,
                    592:                                        HOLE,   HOLE,   HOLE,   ERROR,  IDLE,
                    593: };
                    594: 
                    595: 
                    596: /* Caps Locked keyboard table for Sun-3 keyboard */
                    597: 
                    598: static struct keymap keytab_s3_cl = {
                    599: /*  0 */       HOLE,   BUCKYBITS+SYSTEMBIT,
                    600:                                HOLE,   LF(2),  HOLE,   TF(1),  TF(2),  HOLE,
                    601: /*  8 */       TF(3),  HOLE,   TF(4),  HOLE,   TF(5),  HOLE,   TF(6),  HOLE,
                    602: /* 16 */       TF(7),  TF(8),  TF(9),  ALT,    HOLE,   RF(1),  RF(2),  RF(3),
                    603: /* 24 */       HOLE,   LF(3),  LF(4),  HOLE,   HOLE,   c('['), '1',    '2',
                    604: /* 32 */       '3',    '4',    '5',    '6',    '7',    '8',    '9',    '0',
                    605: /* 40 */       '-',    '=',    '`',    '\b',   HOLE,   RF(4),  RF(5),  RF(6),
                    606: /* 48 */       HOLE,   LF(5),  HOLE,   LF(6),  HOLE,   '\t',   'Q',    'W',
                    607: /* 56 */       'E',    'R',    'T',    'Y',    'U',    'I',    'O',    'P',
                    608: /* 64 */       '[',    ']',    0x7F,   HOLE,   RF(7),  STRING+UPARROW,
                    609:                                                                RF(9),  HOLE,
                    610: /* 72 */       LF(7),  LF(8),  HOLE,   HOLE,   SHIFTKEYS+LEFTCTRL,
                    611:                                                        'A',    'S',    'D',
                    612: /* 80 */       'F',    'G',    'H',    'J',    'K',    'L',    ';',    '\'',
                    613: /* 88 */       '\\',   '\r',   HOLE,   STRING+LEFTARROW,
                    614:                                                RF(11), STRING+RIGHTARROW,
                    615:                                                                HOLE,   LF(9),
                    616: /* 96 */       LF(15), LF(10), HOLE,   SHIFTKEYS+LEFTSHIFT,
                    617:                                                'Z',    'X',    'C',    'V',
                    618: /*104 */       'B',    'N',    'M',    ',',    '.',    '/',    SHIFTKEYS+RIGHTSHIFT,
                    619:                                                                        '\n',
                    620: /*112 */       RF(13), STRING+DOWNARROW,
                    621:                                RF(15), HOLE,   HOLE,   HOLE,   HOLE,   SHIFTKEYS+CAPSLOCK,
                    622: /*120 */       BUCKYBITS+METABIT,
                    623:                        ' ',    BUCKYBITS+METABIT,
                    624:                                        HOLE,   HOLE,   HOLE,   ERROR,  IDLE,
                    625: };
                    626: 
                    627: /* Controlled keyboard table for Sun-3 keyboard */
                    628: 
                    629: static struct keymap keytab_s3_ct = {
                    630: /*  0 */       HOLE,   BUCKYBITS+SYSTEMBIT,
                    631:                                HOLE,   LF(2),  HOLE,   TF(1),  TF(2),  HOLE,
                    632: /*  8 */       TF(3),  HOLE,   TF(4),  HOLE,   TF(5),  HOLE,   TF(6),  HOLE,
                    633: /* 16 */       TF(7),  TF(8),  TF(9),  ALT,    HOLE,   RF(1),  RF(2),  RF(3),
                    634: /* 24 */       HOLE,   LF(3),  LF(4),  HOLE,   HOLE,   c('['), '1',    c('@'),
                    635: /* 32 */       '3',    '4',    '5',    c('^'), '7',    '8',    '9',    '0',
                    636: /* 40 */       c('_'), '=',    c('^'), '\b',   HOLE,   RF(4),  RF(5),  RF(6),
                    637: /* 48 */       HOLE,   LF(5),  HOLE,   LF(6),  HOLE,   '\t',   c('q'), c('w'),
                    638: /* 56 */       c('e'), c('r'), c('t'), c('y'), c('u'), c('i'), c('o'), c('p'),
                    639: /* 64 */       c('['), c(']'), 0x7F,   HOLE,   RF(7),  STRING+UPARROW,
                    640:                                                                RF(9),  HOLE,
                    641: /* 72 */       LF(7),  LF(8),  HOLE,   HOLE,   SHIFTKEYS+LEFTCTRL,
                    642:                                                        c('a'), c('s'), c('d'),
                    643: /* 80 */       c('f'), c('g'), c('h'), c('j'), c('k'), c('l'), ';',    '\'',
                    644: /* 88 */       c('\\'),
                    645:                        '\r',   HOLE,   STRING+LEFTARROW,
                    646:                                                RF(11), STRING+RIGHTARROW,
                    647:                                                                HOLE,   LF(9),
                    648: /* 96 */       LF(15), LF(10), HOLE,   SHIFTKEYS+LEFTSHIFT,
                    649:                                                c('z'), c('x'), c('c'), c('v'),
                    650: /*104 */       c('b'), c('n'), c('m'), ',',    '.',    c('_'), SHIFTKEYS+RIGHTSHIFT,
                    651:                                                                        '\n',
                    652: /*112 */       RF(13), STRING+DOWNARROW,
                    653:                                RF(15), HOLE,   HOLE,   HOLE,   HOLE,   SHIFTKEYS+CAPSLOCK,
                    654: /*120 */       BUCKYBITS+METABIT,
                    655:                        c(' '), BUCKYBITS+METABIT,
                    656:                                        HOLE,   HOLE,   HOLE,   ERROR,  IDLE,
                    657: };
                    658: 
                    659: 
                    660: 
                    661: /* "Key Up" keyboard table for Sun-3 keyboard */
                    662: 
                    663: static struct keymap keytab_s3_up = {
                    664: /*  0 */       HOLE,   BUCKYBITS+SYSTEMBIT,
                    665:                                HOLE,   OOPS,   HOLE,   OOPS,   OOPS,   HOLE,
                    666: /*  8 */       OOPS,   HOLE,   OOPS,   HOLE,   OOPS,   HOLE,   OOPS,   HOLE,
                    667: /* 16 */       OOPS,   OOPS,   OOPS,   OOPS,   HOLE,   OOPS,   OOPS,   NOP,
                    668: /* 24 */       HOLE,   OOPS,   OOPS,   HOLE,   HOLE,   NOP,    NOP,    NOP,
                    669: /* 32 */       NOP,    NOP,    NOP,    NOP,    NOP,    NOP,    NOP,    NOP,
                    670: /* 40 */       NOP,    NOP,    NOP,    NOP,    HOLE,   OOPS,   OOPS,   NOP,
                    671: /* 48 */       HOLE,   OOPS,   HOLE,   OOPS,   HOLE,   NOP,    NOP,    NOP,
                    672: /* 56 */       NOP,    NOP,    NOP,    NOP,    NOP,    NOP,    NOP,    NOP,
                    673: /* 64 */       NOP,    NOP,    NOP,    HOLE,   OOPS,   OOPS,   NOP,    HOLE,
                    674: /* 72 */       OOPS,   OOPS,   HOLE,   HOLE,   SHIFTKEYS+LEFTCTRL,
                    675:                                                        NOP,    NOP,    NOP,
                    676: /* 80 */       NOP,    NOP,    NOP,    NOP,    NOP,    NOP,    NOP,    NOP,
                    677: /* 88 */       NOP,    NOP,    HOLE,   OOPS,   OOPS,   NOP,    HOLE,   OOPS,
                    678: /* 96 */       OOPS,   OOPS,   HOLE,   SHIFTKEYS+LEFTSHIFT,
                    679:                                                NOP,    NOP,    NOP,    NOP,
                    680: /*104 */       NOP,    NOP,    NOP,    NOP,    NOP,    NOP,    SHIFTKEYS+RIGHTSHIFT,
                    681:                                                                        NOP,
                    682: /*112 */       OOPS,   OOPS,   NOP,    HOLE,   HOLE,   HOLE,   HOLE,   NOP,
                    683: /*120 */       BUCKYBITS+METABIT,
                    684:                        NOP,    BUCKYBITS+METABIT,
                    685:                                        HOLE,   HOLE,   HOLE,   HOLE,   RESET,
                    686: };
                    687: 
                    688: /* Index to keymaps for Sun-3 keyboard */
                    689: static struct keyboard keyindex_s3 = {
                    690:        &keytab_s3_lc,
                    691:        &keytab_s3_uc,
                    692:        &keytab_s3_cl,
                    693:        &keytab_s3_ct,
                    694:        &keytab_s3_up,
                    695:        0x0000,         /* Shift bits which stay on with idle keyboard */
                    696:        0x0000,         /* Bucky bits which stay on with idle keyboard */
                    697:        1,      77,     /* abort keys */
                    698:        CAPSMASK,       /* Shift bits which toggle on down event */
                    699: };
                    700: 
                    701: /***************************************************************************/
                    702: /*   Index table for the whole shebang                                    */
                    703: /***************************************************************************/
                    704: int nkeytables = 4;    /* max 16 */
                    705: struct keyboard *keytables[] = {
                    706:        &keyindex_ms,
                    707:        &keyindex_vt,
                    708:        &keyindex_s2,
                    709:        &keyindex_s3,
                    710: };
                    711: 
                    712: /* 
                    713:        Keyboard String Table
                    714: 
                    715:        This defines the strings sent by various keys (as selected in the
                    716:        tables above).
                    717: 
                    718:        The first byte of each string is its length, the rest is data.
                    719: */
                    720: 
                    721: #define        kstescinit(c)   {'\033', '[', 'c', '\0'}
                    722: char keystringtab[16][KTAB_STRLEN] = {
                    723:        kstescinit(H) /*home*/,
                    724:        kstescinit(A) /*up*/,
                    725:        kstescinit(B) /*down*/,
                    726:        kstescinit(D) /*left*/,
                    727:        kstescinit(C) /*right*/,
                    728: };

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.