Annotation of researchv9/sys/sundev/keytables.c, revision 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.