#ifndef _ARCHITECTURE_ADB_KB_CODES_
#define _ARCHITECTURE_ADB_KB_CODES_
#include <architecture/adb_kb_map.h>
#define inv KEY_INVALID
static const adb_key_t apple_keys[NUM_ADB_KEYCODES] = {
{ 'a', 'A', soh, soh },
{ 's', 'S', dc3, dc3 },
{ 'd', 'D', eot, eot },
{ 'f', 'F', ack, ack },
{ 'h', 'H', bs, bs },
{ 'g', 'G', bel, bel },
{ 'z', 'Z', sub, sub },
{ 'x', 'X', can, can },
{ 'c', 'C', etx, etx },
{ 'v', 'V', syn, syn },
{ '<', '>', inv, inv },
{ 'b', 'B', stx, stx },
{ 'q', 'Q', dc1, dc1 },
{ 'w', 'W', etb, etb },
{ 'e', 'E', enq, enq },
{ 'r', 'R', dc2, dc2 },
{ 'y', 'Y', em, em },
{ 't', 'T', dc4, dc4 },
{ '1', '!', '1', '!' },
{ '2', '@', inv, inv },
{ '3', '#', '3', '#' },
{ '4', '$', '4', '$' },
{ '6', '^', rs, rs },
{ '5', '%', '5', '%' },
{ '=', '+', '=', '+' },
{ '9', '(', '9', '(' },
{ '7', '&', '7', '&' },
{ '-', '_', us, us },
{ '8', '*', '8', '*' },
{ '0', ')', '0', ')' },
{ ']', '}', gs, gs },
{ 'o', 'O', si, si },
{ 'u', 'U', nak, nak },
{ '[', '{', esc, esc },
{ 'i', 'I', '\t', '\t' },
{ 'p', 'P', dle, dle },
{ '\r', '\r', '\r', '\r' },
{ 'l', 'L', np, np },
{ 'j', 'J', '\n', '\n' },
{ '\'', '\"', inv, inv },
{ 'k', 'K', vt, vt },
{ ';', ':', ';', ':' },
{ '\\', '|', fs, fs },
{ ',', '<', ',', '<' },
{ '/', '?', '/', '?' },
{ 'n', 'N', so, so },
{ 'm', 'M', '\r', '\r' },
{ '.', '>', '.', '>' },
{ '\t', '\t', '\t', '\t' },
{ ' ', ' ', inv, inv },
{ '`', '~', '`', '~' },
{ del, bs, inv, inv },
{ inv, inv, inv, inv },
{ esc, esc, esc, esc },
{ CTL_LEFT, CTL_LEFT, CTL_LEFT, CTL_LEFT },
{ APPLE_LEFT, APPLE_LEFT, APPLE_LEFT, APPLE_LEFT },
{ SHIFT_LEFT, SHIFT_LEFT, SHIFT_LEFT, SHIFT_LEFT },
{ CAPS_LOCK, CAPS_LOCK, CAPS_LOCK, CAPS_LOCK },
{ OPTION_LEFT, OPTION_LEFT, OPTION_LEFT, OPTION_LEFT },
{ CURS_LEFT, CURS_LEFT, CURS_LEFT, CURS_LEFT },
{ CURS_RIGHT, CURS_RIGHT, CURS_RIGHT, CURS_RIGHT },
{ CURS_DOWN, CURS_DOWN, CURS_DOWN, CURS_DOWN },
{ CURS_UP, CURS_UP, CURS_UP, CURS_UP },
{ inv, inv, inv, inv },
{ inv, inv, inv, inv },
{ '.', '.', '.', '.' },
{ inv, inv, inv, inv },
{ '*', '*', '*', '*' },
{ inv, inv, inv, inv },
{ '+', '+', '+', '+' },
{ inv, inv, inv, inv },
{ np, np, np, np },
{ inv, inv, inv, inv },
{ inv, inv, inv, inv },
{ inv, inv, inv, inv },
{ '/', '\\', '/', fs },
{ '\r', '\r', '\r', '\r' },
{ inv, inv, inv, inv },
{ inv, inv, inv, inv },
{ inv, inv, inv, inv },
{ inv, inv, inv, inv },
{ '=', '|', '=', fs },
{ '0', '0', '0', '0' },
{ '1', '1', '1', '1' },
{ '2', '2', '2', '2' },
{ '3', '3', '3', '3' },
{ '4', '4', '4', '4' },
{ '5', '5', '5', '5' },
{ '6', '6', '6', '6' },
{ '7', '7', '7', '7' },
{ inv, inv, inv, inv },
{ '8', '8', '8', '8' },
{ '9', '9', '9', '9' },
{ inv, inv, inv, inv },
{ inv, inv, inv, inv },
{ inv, inv, inv, inv },
{ inv, inv, inv, inv },
{ inv, inv, inv, inv },
{ inv, inv, inv, inv },
{ inv, inv, inv, inv },
{ inv, inv, inv, inv },
{ inv, inv, inv, inv },
{ inv, inv, inv, inv },
{ inv, inv, inv, inv },
{ inv, inv, inv, inv },
{ inv, inv, inv, inv },
{ inv, inv, inv, inv },
{ inv, inv, inv, inv },
{ inv, inv, inv, inv },
{ inv, inv, inv, inv },
{ inv, inv, inv, inv },
{ inv, inv, inv, inv },
{ inv, inv, inv, inv },
{ inv, inv, inv, inv },
{ inv, inv, inv, inv },
{ VOLUME_UP, VOLUME_UP, VOLUME_UP, VOLUME_UP },
{ BRIGHT_UP, BRIGHT_UP, BRIGHT_UP, BRIGHT_UP },
{ inv, inv, inv, inv },
{ inv, inv, inv, inv },
{ VOLUME_DOWN, VOLUME_DOWN, VOLUME_DOWN, VOLUME_DOWN },
{ inv, inv, inv, inv },
{ BRIGHT_DOWN, BRIGHT_DOWN, BRIGHT_DOWN, BRIGHT_DOWN },
{ inv, inv, inv, inv },
{ inv, inv, inv, inv },
{ inv, inv, inv, inv },
{ inv, inv, inv, inv },
{ inv, inv, inv, inv },
{ ADB_RESET, ADB_RESET, ADB_RESET, ADB_RESET },
};
static const adb_kb_map_t std_adb_kb_map = {
1, apple_keys
};
static const adb_kb_map_t iso_std_adb_kb_map = {
4, apple_keys
};
static const adb_kb_map_t extend_adb_kb_map = {
2, apple_keys
};
static const adb_kb_map_t iso_extend_adb_kb_map = {
5, apple_keys
};
#define KEY_DIR_MASK 0x80
#define KEY_DIR_UP 0x80
#define KEY_CODE_MASK 0x7f
#define KEY_CODE_NULL 0xff
typedef struct {
unsigned rsvd1:1, delete:1,
caps_lock:1,
reset:1,
control:1,
shift:1,
option:1,
open_apple:1,
rsvd2:8, rsvd3:16; } adb_kb_reg2_t;
#endif