home *** CD-ROM | disk | FTP | other *** search
/ NeXTSTEP 3.2 (Developer) / NS_dev_3.2.iso / NextDeveloper / Headers / architecture / adb_kb_codes.h < prev    next >
Text File  |  1993-08-17  |  7KB  |  214 lines

  1. /* Copyright (c) 1991 NeXT Computer, Inc.  All rights reserved.
  2.  * 
  3.  *    File:    achitecture/adb_kb_codes.h
  4.  *
  5.  *    Scan code conversion table for standard Apple ADB keyboard.
  6.  *
  7.  * HISTORY
  8.  * 07-Oct-91  Doug Mitchell at NeXT
  9.  *    Created.
  10.  */
  11.  
  12. #ifndef    _ARCHITECTURE_ADB_KB_CODES_
  13. #define _ARCHITECTURE_ADB_KB_CODES_
  14.  
  15. #import <architecture/adb_kb_map.h>
  16.  
  17. #define inv KEY_INVALID
  18.  
  19. /*
  20.  * These key codes are are shared by standard Apple keyboards (handler ID
  21.  * 1) and Extended keyboards (ID 2).
  22.  */
  23. static const adb_key_t apple_keys[NUM_ADB_KEYCODES] = {
  24.     
  25.   /*   normal    shift    ctl    ctl-shift    keycode (hex) */
  26.     {     'a',     'A',    soh,    soh    },    /* 00 */
  27.     {     's',     'S',    dc3,    dc3    },    /* 01 */
  28.     {     'd',     'D',    eot,    eot    },    /* 02 */
  29.     {     'f',     'F',    ack,    ack    },    /* 03 */
  30.     {     'h',     'H',    bs,    bs    },    /* 04 */
  31.     {     'g',     'G',    bel,    bel    },    /* 05 */
  32.     {     'z',     'Z',    sub,    sub    },    /* 06 */
  33.     {     'x',     'X',    can,    can    },    /* 07 */
  34.     {     'c',     'C',    etx,    etx    },    /* 08 */
  35.     {     'v',     'V',    syn,    syn    },    /* 09 */
  36.     {     '<',     '>',    inv,    inv    },    /* 0a */
  37.     {     'b',     'B',    stx,    stx    },    /* 0b */
  38.     {     'q',     'Q',    dc1,    dc1    },    /* 0c */
  39.     {     'w',     'W',    etb,    etb    },    /* 0d */
  40.     {     'e',     'E',    enq,    enq    },    /* 0e */
  41.     {     'r',     'R',    dc2,    dc2    },    /* 0f */
  42.     {     'y',     'Y',    em,    em    },    /* 10 */
  43.     {     't',     'T',    dc4,    dc4    },    /* 11 */
  44.     {     '1',     '!',    '1',    '!'    },    /* 12 */
  45.     {     '2',     '@',    inv,    inv    },    /* 13 - why the inv's???*/
  46.     {     '3',     '#',    '3',    '#'    },    /* 14 */
  47.     {     '4',     '$',    '4',    '$'    },    /* 15 */
  48.     {     '6',     '^',    rs,    rs    },    /* 16 */
  49.     {     '5',     '%',    '5',    '%'    },    /* 17 */
  50.     {     '=',     '+',    '=',    '+'    },    /* 18 */
  51.     {     '9',     '(',    '9',    '('    },    /* 19 */
  52.     {     '7',     '&',    '7',    '&'    },    /* 1a */
  53.     {     '-',     '_',    us,    us    },    /* 1b */
  54.     {     '8',     '*',    '8',    '*'    },    /* 1c */
  55.     {     '0',     ')',    '0',    ')'    },    /* 1d */
  56.     {     ']',     '}',    gs,    gs    },    /* 1e */
  57.     {     'o',     'O',    si,    si    },    /* 1f */
  58.     {     'u',     'U',    nak,    nak    },    /* 20 */
  59.     {     '[',     '{',    esc,    esc    },    /* 21 */
  60.     {     'i',     'I',    '\t',    '\t'    },    /* 22 */
  61.     {     'p',     'P',    dle,    dle    },    /* 23 */
  62.     {     '\r',     '\r',    '\r',    '\r'    },    /* 24 */
  63.     {     'l',     'L',    np,    np    },    /* 25 */
  64.     {     'j',     'J',    '\n',    '\n'    },    /* 26 */
  65.     {     '\'',     '\"',    inv,    inv    },    /* 27 */
  66.     {     'k',     'K',    vt,    vt    },    /* 28 */
  67.     {     ';',     ':',    ';',    ':'    },    /* 29 */
  68.     {     '\\',     '|',    fs,    fs    },    /* 2a */
  69.     {     ',',     '<',    ',',    '<'    },    /* 2b */
  70.     {     '/',     '?',    '/',    '?'    },    /* 2c */
  71.     {     'n',     'N',    so,    so    },    /* 2d */
  72.     {     'm',     'M',    '\r',    '\r'    },    /* 2e */
  73.     {     '.',     '>',    '.',    '>'    },    /* 2f */
  74.     {     '\t',     '\t',    '\t',    '\t'    },    /* 30 */
  75.     {     ' ',     ' ',    inv,    inv     },    /* 31 */
  76.     {     '`',     '~',    '`',    '~'    },    /* 32 */
  77.     {     del,     bs,    inv,    inv    },    /* 33 */
  78.     {     inv,     inv,    inv,    inv    },    /* 34 */
  79.     {     esc,     esc,    esc,    esc    },    /* 35 */
  80.     {     CTL_LEFT,     CTL_LEFT,     CTL_LEFT,    CTL_LEFT    },    /* 36 */
  81.     {     APPLE_LEFT,   APPLE_LEFT,   APPLE_LEFT,     APPLE_LEFT  },    /* 37 */
  82.     {     SHIFT_LEFT,   SHIFT_LEFT,   SHIFT_LEFT,     SHIFT_LEFT  },    /* 38 */
  83.     {     CAPS_LOCK,    CAPS_LOCK,    CAPS_LOCK,     CAPS_LOCK   },    /* 39 */
  84.     {     OPTION_LEFT,  OPTION_LEFT,  OPTION_LEFT, OPTION_LEFT },    /* 3a */
  85.     {     CURS_LEFT,    CURS_LEFT,    CURS_LEFT,     CURS_LEFT   },    /* 3b */
  86.     {     CURS_RIGHT,   CURS_RIGHT,   CURS_RIGHT,     CURS_RIGHT  },    /* 3c */
  87.     {     CURS_DOWN,    CURS_DOWN,    CURS_DOWN,     CURS_DOWN   },    /* 3d */
  88.     {     CURS_UP,      CURS_UP,        CURS_UP,     CURS_UP     },    /* 3e */
  89.     {     inv,     inv,    inv,    inv    },    /* 3f */
  90.     {     inv,     inv,    inv,    inv    },    /* 40 */
  91.     {     '.',     '.',    '.',    '.'    },    /* 41 (keypad) */
  92.     {     inv,     inv,    inv,    inv    },    /* 42 */
  93.     {     '*',     '*',    '*',    '*'    },    /* 43 (keypad) */
  94.     {     inv,     inv,    inv,    inv    },    /* 44 */
  95.     {     '+',     '+',    '+',    '+'    },    /* 45 (keypad) */
  96.     {     inv,     inv,    inv,    inv    },    /* 46 */
  97.     {     np,     np,    np,    np    },    /* 47 - clear == ff? */
  98.     {     inv,     inv,    inv,    inv    },    /* 48 */
  99.     {     inv,     inv,    inv,    inv    },    /* 49 */
  100.     {     inv,     inv,    inv,    inv    },    /* 4a */
  101.     {     '/',     '\\',    '/',    fs    },    /* 4b (keypad) */
  102.     {     '\r',     '\r',    '\r',    '\r'    },    /* 4c (keypad) */
  103.     {     inv,     inv,    inv,    inv    },    /* 4d */
  104.     {     inv,     inv,    inv,    inv    },    /* 4e */
  105.     {     inv,     inv,    inv,    inv    },    /* 4f */
  106.     {     inv,     inv,    inv,    inv    },    /* 50 */
  107.     {     '=',     '|',    '=',    fs    },    /* 51 (keypad) */
  108.     {     '0',     '0',    '0',    '0'    },    /* 52 (keypad) */
  109.     {     '1',     '1',    '1',    '1'    },    /* 53 (keypad) */
  110.     {     '2',     '2',    '2',    '2'    },    /* 54 (keypad) */
  111.     {     '3',     '3',    '3',    '3'    },    /* 55 (keypad) */
  112.     {     '4',     '4',    '4',    '4'    },    /* 56 (keypad) */
  113.     {     '5',     '5',    '5',    '5'    },    /* 57 (keypad) */
  114.     {     '6',     '6',    '6',    '6'    },    /* 58 (keypad) */
  115.     {     '7',     '7',    '7',    '7'    },    /* 59 (keypad) */
  116.     {     inv,     inv,    inv,    inv    },    /* 5a */
  117.     {     '8',     '8',    '8',    '8'    },    /* 5b (keypad) */
  118.     {     '9',     '9',    '9',    '9'    },    /* 5c (keypad) */
  119.     {     inv,     inv,    inv,    inv    },    /* 5d */
  120.     {     inv,     inv,    inv,    inv    },    /* 5e */
  121.     {     inv,     inv,    inv,    inv    },    /* 5f */
  122.     {     inv,     inv,    inv,    inv    },    /* 60 */
  123.     {     inv,     inv,    inv,    inv    },    /* 61 */
  124.     {     inv,     inv,    inv,    inv    },    /* 62 */
  125.     {     inv,     inv,    inv,    inv    },    /* 63 */
  126.     {     inv,     inv,    inv,    inv    },    /* 64 */
  127.     {     inv,     inv,    inv,    inv    },    /* 65 */
  128.     {     inv,     inv,    inv,    inv    },    /* 66 */
  129.     {     inv,     inv,    inv,    inv    },    /* 67 */
  130.     {     inv,     inv,    inv,    inv    },    /* 68 */
  131.     {     inv,     inv,    inv,    inv    },    /* 69 */
  132.     {     inv,     inv,    inv,    inv    },    /* 6a */
  133.     {     inv,     inv,    inv,    inv    },    /* 6b */
  134.     {     inv,     inv,    inv,    inv    },    /* 6c */
  135.     {     inv,     inv,    inv,    inv    },    /* 6d */
  136.     {     inv,     inv,    inv,    inv    },    /* 6e */
  137.     {     inv,     inv,    inv,    inv    },    /* 6f */
  138.     {     inv,     inv,    inv,    inv    },    /* 70 */
  139.     {     inv,     inv,    inv,    inv    },    /* 71 */
  140.     {     inv,     inv,    inv,    inv    },    /* 72 */
  141.     {     VOLUME_UP, VOLUME_UP, VOLUME_UP, VOLUME_UP },        /* 73 */
  142.     {     BRIGHT_UP, BRIGHT_UP, BRIGHT_UP, BRIGHT_UP },        /* 74 */
  143.     {     inv,     inv,    inv,    inv    },    /* 75 */
  144.     {     inv,     inv,    inv,    inv    },    /* 76 */
  145.     {     VOLUME_DOWN, VOLUME_DOWN, VOLUME_DOWN, VOLUME_DOWN },    /* 77 */
  146.     {     inv,     inv,    inv,    inv    },    /* 78 */
  147.     {     BRIGHT_DOWN, BRIGHT_DOWN, BRIGHT_DOWN, BRIGHT_DOWN },    /* 79 */
  148.     {     inv,     inv,    inv,    inv    },    /* 7a */
  149.     {     inv,     inv,    inv,    inv    },    /* 7b */
  150.     {     inv,     inv,    inv,    inv    },    /* 7c */
  151.     {     inv,     inv,    inv,    inv    },    /* 7d */
  152.     {     inv,     inv,    inv,    inv    },    /* 7e */
  153.     {     ADB_RESET, ADB_RESET, ADB_RESET, ADB_RESET },    /* 7f */
  154. };
  155.  
  156. /*
  157.  * Standard apple keyboard.
  158.  */
  159. static const adb_kb_map_t std_adb_kb_map = {
  160.  
  161.     1,            // handler_id, US Apple, standard
  162.     apple_keys
  163. };
  164.  
  165. static const adb_kb_map_t iso_std_adb_kb_map = {
  166.  
  167.     4,            // handler_id, ISO Apple, standard
  168.     apple_keys
  169. };
  170.  
  171. /*
  172.  * Extended apple keyboard.
  173.  */
  174. static const adb_kb_map_t extend_adb_kb_map = {
  175.  
  176.     2,            // handler_id, US Apple, extended
  177.     apple_keys
  178. };
  179.  
  180. static const adb_kb_map_t iso_extend_adb_kb_map = {
  181.  
  182.     5,            // handler_id, ISO Apple, extended
  183.     apple_keys
  184. };
  185.  
  186.  
  187. /*
  188.  * Format of keyboard data in register 0. Each event has two bytes
  189.  * in this format.
  190.  */
  191. #define KEY_DIR_MASK        0x80
  192. #define KEY_DIR_UP        0x80
  193. #define KEY_CODE_MASK        0x7f
  194. #define KEY_CODE_NULL        0xff
  195.  
  196. /*
  197.  * Format of register 2. Bit positions are relative to the keyboard's
  198.  * 16-bit register.
  199.  */
  200. typedef struct {
  201.     unsigned    rsvd1:1,        // bit 15 - reserved
  202.             delete:1,
  203.             caps_lock:1,
  204.             reset:1,
  205.             control:1,
  206.             shift:1,
  207.             option:1,
  208.             open_apple:1,
  209.             rsvd2:8,        // bits 7..0 - reserved
  210.             rsvd3:16;        // fill word
  211. } adb_kb_reg2_t;
  212.  
  213. #endif    _ARCHITECTURE_ADB_KB_CODES_
  214.