home *** CD-ROM | disk | FTP | other *** search
- /* Copyright (c) 1991 NeXT Computer, Inc. All rights reserved.
- *
- * File: achitecture/adb_kb_codes.h
- *
- * Scan code conversion table for standard Apple ADB keyboard.
- *
- * HISTORY
- * 07-Oct-91 Doug Mitchell at NeXT
- * Created.
- */
-
- #ifndef _ARCHITECTURE_ADB_KB_CODES_
- #define _ARCHITECTURE_ADB_KB_CODES_
-
- #import <architecture/adb_kb_map.h>
-
- #define inv KEY_INVALID
-
- /*
- * These key codes are are shared by standard Apple keyboards (handler ID
- * 1) and Extended keyboards (ID 2).
- */
- static const adb_key_t apple_keys[NUM_ADB_KEYCODES] = {
-
- /* normal shift ctl ctl-shift keycode (hex) */
- { 'a', 'A', soh, soh }, /* 00 */
- { 's', 'S', dc3, dc3 }, /* 01 */
- { 'd', 'D', eot, eot }, /* 02 */
- { 'f', 'F', ack, ack }, /* 03 */
- { 'h', 'H', bs, bs }, /* 04 */
- { 'g', 'G', bel, bel }, /* 05 */
- { 'z', 'Z', sub, sub }, /* 06 */
- { 'x', 'X', can, can }, /* 07 */
- { 'c', 'C', etx, etx }, /* 08 */
- { 'v', 'V', syn, syn }, /* 09 */
- { '<', '>', inv, inv }, /* 0a */
- { 'b', 'B', stx, stx }, /* 0b */
- { 'q', 'Q', dc1, dc1 }, /* 0c */
- { 'w', 'W', etb, etb }, /* 0d */
- { 'e', 'E', enq, enq }, /* 0e */
- { 'r', 'R', dc2, dc2 }, /* 0f */
- { 'y', 'Y', em, em }, /* 10 */
- { 't', 'T', dc4, dc4 }, /* 11 */
- { '1', '!', '1', '!' }, /* 12 */
- { '2', '@', inv, inv }, /* 13 - why the inv's???*/
- { '3', '#', '3', '#' }, /* 14 */
- { '4', '$', '4', '$' }, /* 15 */
- { '6', '^', rs, rs }, /* 16 */
- { '5', '%', '5', '%' }, /* 17 */
- { '=', '+', '=', '+' }, /* 18 */
- { '9', '(', '9', '(' }, /* 19 */
- { '7', '&', '7', '&' }, /* 1a */
- { '-', '_', us, us }, /* 1b */
- { '8', '*', '8', '*' }, /* 1c */
- { '0', ')', '0', ')' }, /* 1d */
- { ']', '}', gs, gs }, /* 1e */
- { 'o', 'O', si, si }, /* 1f */
- { 'u', 'U', nak, nak }, /* 20 */
- { '[', '{', esc, esc }, /* 21 */
- { 'i', 'I', '\t', '\t' }, /* 22 */
- { 'p', 'P', dle, dle }, /* 23 */
- { '\r', '\r', '\r', '\r' }, /* 24 */
- { 'l', 'L', np, np }, /* 25 */
- { 'j', 'J', '\n', '\n' }, /* 26 */
- { '\'', '\"', inv, inv }, /* 27 */
- { 'k', 'K', vt, vt }, /* 28 */
- { ';', ':', ';', ':' }, /* 29 */
- { '\\', '|', fs, fs }, /* 2a */
- { ',', '<', ',', '<' }, /* 2b */
- { '/', '?', '/', '?' }, /* 2c */
- { 'n', 'N', so, so }, /* 2d */
- { 'm', 'M', '\r', '\r' }, /* 2e */
- { '.', '>', '.', '>' }, /* 2f */
- { '\t', '\t', '\t', '\t' }, /* 30 */
- { ' ', ' ', inv, inv }, /* 31 */
- { '`', '~', '`', '~' }, /* 32 */
- { del, bs, inv, inv }, /* 33 */
- { inv, inv, inv, inv }, /* 34 */
- { esc, esc, esc, esc }, /* 35 */
- { CTL_LEFT, CTL_LEFT, CTL_LEFT, CTL_LEFT }, /* 36 */
- { APPLE_LEFT, APPLE_LEFT, APPLE_LEFT, APPLE_LEFT }, /* 37 */
- { SHIFT_LEFT, SHIFT_LEFT, SHIFT_LEFT, SHIFT_LEFT }, /* 38 */
- { CAPS_LOCK, CAPS_LOCK, CAPS_LOCK, CAPS_LOCK }, /* 39 */
- { OPTION_LEFT, OPTION_LEFT, OPTION_LEFT, OPTION_LEFT }, /* 3a */
- { CURS_LEFT, CURS_LEFT, CURS_LEFT, CURS_LEFT }, /* 3b */
- { CURS_RIGHT, CURS_RIGHT, CURS_RIGHT, CURS_RIGHT }, /* 3c */
- { CURS_DOWN, CURS_DOWN, CURS_DOWN, CURS_DOWN }, /* 3d */
- { CURS_UP, CURS_UP, CURS_UP, CURS_UP }, /* 3e */
- { inv, inv, inv, inv }, /* 3f */
- { inv, inv, inv, inv }, /* 40 */
- { '.', '.', '.', '.' }, /* 41 (keypad) */
- { inv, inv, inv, inv }, /* 42 */
- { '*', '*', '*', '*' }, /* 43 (keypad) */
- { inv, inv, inv, inv }, /* 44 */
- { '+', '+', '+', '+' }, /* 45 (keypad) */
- { inv, inv, inv, inv }, /* 46 */
- { np, np, np, np }, /* 47 - clear == ff? */
- { inv, inv, inv, inv }, /* 48 */
- { inv, inv, inv, inv }, /* 49 */
- { inv, inv, inv, inv }, /* 4a */
- { '/', '\\', '/', fs }, /* 4b (keypad) */
- { '\r', '\r', '\r', '\r' }, /* 4c (keypad) */
- { inv, inv, inv, inv }, /* 4d */
- { inv, inv, inv, inv }, /* 4e */
- { inv, inv, inv, inv }, /* 4f */
- { inv, inv, inv, inv }, /* 50 */
- { '=', '|', '=', fs }, /* 51 (keypad) */
- { '0', '0', '0', '0' }, /* 52 (keypad) */
- { '1', '1', '1', '1' }, /* 53 (keypad) */
- { '2', '2', '2', '2' }, /* 54 (keypad) */
- { '3', '3', '3', '3' }, /* 55 (keypad) */
- { '4', '4', '4', '4' }, /* 56 (keypad) */
- { '5', '5', '5', '5' }, /* 57 (keypad) */
- { '6', '6', '6', '6' }, /* 58 (keypad) */
- { '7', '7', '7', '7' }, /* 59 (keypad) */
- { inv, inv, inv, inv }, /* 5a */
- { '8', '8', '8', '8' }, /* 5b (keypad) */
- { '9', '9', '9', '9' }, /* 5c (keypad) */
- { inv, inv, inv, inv }, /* 5d */
- { inv, inv, inv, inv }, /* 5e */
- { inv, inv, inv, inv }, /* 5f */
- { inv, inv, inv, inv }, /* 60 */
- { inv, inv, inv, inv }, /* 61 */
- { inv, inv, inv, inv }, /* 62 */
- { inv, inv, inv, inv }, /* 63 */
- { inv, inv, inv, inv }, /* 64 */
- { inv, inv, inv, inv }, /* 65 */
- { inv, inv, inv, inv }, /* 66 */
- { inv, inv, inv, inv }, /* 67 */
- { inv, inv, inv, inv }, /* 68 */
- { inv, inv, inv, inv }, /* 69 */
- { inv, inv, inv, inv }, /* 6a */
- { inv, inv, inv, inv }, /* 6b */
- { inv, inv, inv, inv }, /* 6c */
- { inv, inv, inv, inv }, /* 6d */
- { inv, inv, inv, inv }, /* 6e */
- { inv, inv, inv, inv }, /* 6f */
- { inv, inv, inv, inv }, /* 70 */
- { inv, inv, inv, inv }, /* 71 */
- { inv, inv, inv, inv }, /* 72 */
- { VOLUME_UP, VOLUME_UP, VOLUME_UP, VOLUME_UP }, /* 73 */
- { BRIGHT_UP, BRIGHT_UP, BRIGHT_UP, BRIGHT_UP }, /* 74 */
- { inv, inv, inv, inv }, /* 75 */
- { inv, inv, inv, inv }, /* 76 */
- { VOLUME_DOWN, VOLUME_DOWN, VOLUME_DOWN, VOLUME_DOWN }, /* 77 */
- { inv, inv, inv, inv }, /* 78 */
- { BRIGHT_DOWN, BRIGHT_DOWN, BRIGHT_DOWN, BRIGHT_DOWN }, /* 79 */
- { inv, inv, inv, inv }, /* 7a */
- { inv, inv, inv, inv }, /* 7b */
- { inv, inv, inv, inv }, /* 7c */
- { inv, inv, inv, inv }, /* 7d */
- { inv, inv, inv, inv }, /* 7e */
- { ADB_RESET, ADB_RESET, ADB_RESET, ADB_RESET }, /* 7f */
- };
-
- /*
- * Standard apple keyboard.
- */
- static const adb_kb_map_t std_adb_kb_map = {
-
- 1, // handler_id, US Apple, standard
- apple_keys
- };
-
- static const adb_kb_map_t iso_std_adb_kb_map = {
-
- 4, // handler_id, ISO Apple, standard
- apple_keys
- };
-
- /*
- * Extended apple keyboard.
- */
- static const adb_kb_map_t extend_adb_kb_map = {
-
- 2, // handler_id, US Apple, extended
- apple_keys
- };
-
- static const adb_kb_map_t iso_extend_adb_kb_map = {
-
- 5, // handler_id, ISO Apple, extended
- apple_keys
- };
-
-
- /*
- * Format of keyboard data in register 0. Each event has two bytes
- * in this format.
- */
- #define KEY_DIR_MASK 0x80
- #define KEY_DIR_UP 0x80
- #define KEY_CODE_MASK 0x7f
- #define KEY_CODE_NULL 0xff
-
- /*
- * Format of register 2. Bit positions are relative to the keyboard's
- * 16-bit register.
- */
- typedef struct {
- unsigned rsvd1:1, // bit 15 - reserved
- delete:1,
- caps_lock:1,
- reset:1,
- control:1,
- shift:1,
- option:1,
- open_apple:1,
- rsvd2:8, // bits 7..0 - reserved
- rsvd3:16; // fill word
- } adb_kb_reg2_t;
-
- #endif _ARCHITECTURE_ADB_KB_CODES_
-