#define ADBK_LEFT 0x3B
#define ADBK_RIGHT 0x3C
#define ADBK_UP 0x3E
#define ADBK_DOWN 0x3D
#define ADBK_PGUP 0x74
#define ADBK_PGDN 0x79
#define ADBK_HOME 0x73
#define ADBK_END 0x77
#define ADBK_CONTROL 0x36
#define ADBK_FLOWER 0x37
#define ADBK_SHIFT 0x38
#define ADBK_CAPSLOCK 0x39
#define ADBK_OPTION 0x3A
#define ADBK_F 0x03
#define ADBK_O 0x1F
#define ADBK_P 0x23
#define ADBK_Q 0x0C
#define ADBK_V 0x09
#define ADBK_1 0x12
#define ADBK_2 0x13
#define ADBK_3 0x14
#define ADBK_4 0x15
#define ADBK_5 0x17
#define ADBK_6 0x16
#define ADBK_7 0x1A
#define ADBK_8 0x1C
#define ADBK_9 0x19
#define ADBK_0 0x1D
#define ADBK_F1 0x7A
#define ADBK_F2 0x78
#define ADBK_F3 0x63
#define ADBK_F4 0x76
#define ADBK_F5 0x60
#define ADBK_F6 0x61
#define ADBK_F7 0x62
#define ADBK_F8 0x64
#define ADBK_KEYVAL(key) ((key) & 0x7f)
#define ADBK_PRESS(key) (((key) & 0x80) == 0)
#define ADBK_KEYDOWN(key) (key)
#define ADBK_KEYUP(key) ((key) | 0x80)
#define ADBK_MODIFIER(key) ((((key) & 0x7f) == ADBK_SHIFT) || \
(((key) & 0x7f) == ADBK_CONTROL) || \
(((key) & 0x7f) == ADBK_FLOWER) || \
(((key) & 0x7f) == ADBK_OPTION))
#ifndef KEYBOARD_ARRAY
extern unsigned char keyboard[128][4];
#else
unsigned char keyboard[128][4] = {
{ 'a', 'A', 0x01, 30 },
{ 's', 'S', 0x13, 31 },
{ 'd', 'D', 0x04, 32 },
{ 'f', 'F', 0x06, 33 },
{ 'h', 'H', 0x08, 35 },
{ 'g', 'G', 0x07, 34 },
{ 'z', 'Z', 0x1A, 44 },
{ 'x', 'X', 0x18, 45 },
{ 'c', 'C', 0x03, 46 },
{ 'v', 'V', 0x16, 47 },
{ 0x00, 0x00, 0x00, 86 },
{ 'b', 'B', 0x02, 48 },
{ 'q', 'Q', 0x11, 16 },
{ 'w', 'W', 0x17, 17 },
{ 'e', 'E', 0x05, 18 },
{ 'r', 'R', 0x12, 19 },
{ 'y', 'Y', 0x19, 21 },
{ 't', 'T', 0x14, 20 },
{ '1', '!', 0x00, 2 },
{ '2', '@', 0x00, 3 },
{ '3', '#', 0x00, 4 },
{ '4', '$', 0x00, 5 },
{ '6', '^', 0x1E, 7 },
{ '5', '%', 0x00, 6 },
{ '=', '+', 0x00, 13 },
{ '9', '(', 0x00, 10 },
{ '7', '&', 0x00, 8 },
{ '-', '_', 0x1F, 12 },
{ '8', '*', 0x00, 9 },
{ '0', ')', 0x00, 11 },
{ ']', '}', 0x1D, 27 },
{ 'o', 'O', 0x0F, 24 },
{ 'u', 'U', 0x15, 22 },
{ '[', '{', 0x1B, 26 },
{ 'i', 'I', 0x09, 23 },
{ 'p', 'P', 0x10, 25 },
{ 0x0D, 0x0D, 0x0D, 28 },
{ 'l', 'L', 0x0C, 38 },
{ 'j', 'J', 0x0A, 36 },
{ '\'', '"', 0x00, 40 },
{ 'k', 'K', 0x0B, 37 },
{ ';', ':', 0x00, 39 },
{ '\\', '|', 0x1C, 43 },
{ ',', '<', 0x00, 51 },
{ '/', '?', 0x00, 53 },
{ 'n', 'N', 0x0E, 49 },
{ 'm', 'M', 0x0D, 50 },
{ '.', '>', 0x00, 52 },
{ 0x09, 0x09, 0x09, 15 },
{ ' ', ' ', 0x00, 57 },
{ '`', '~', 0x00, 41 },
{ 0x7F, 0x7F, 0x7F, 211 },
{ 0x00, 0x00, 0x00, 105 },
{ 0x1B, 0x1B, 0x1B, 1 },
{ 0x00, 0x00, 0x00, 29 },
{ 0x00, 0x00, 0x00, 219 },
{ 0x00, 0x00, 0x00, 42 },
{ 0x00, 0x00, 0x00, 58 },
{ 0x00, 0x00, 0x00, 56 },
{ 'h', 0x00, 0x00, 203 },
{ 'l', 0x00, 0x00, 205 },
{ 'j', 0x00, 0x00, 208 },
{ 'k', 0x00, 0x00, 200 },
{ 0x00, 0x00, 0x00, 0 },
{ 0x00, 0x00, 0x00, 0 },
{ '.', '.', 0x00, 83 },
{ 0x00, 0x00, 0x00, 0 },
{ '*', '*', 0x00, 55 },
{ 0x00, 0x00, 0x00, 0 },
{ '+', '+', 0x00, 78 },
{ 0x00, 0x00, 0x00, 0 },
{ 0x00, 0x00, 0x00, 69 },
{ 0x00, 0x00, 0x00, 0 },
{ 0x00, 0x00, 0x00, 0 },
{ 0x00, 0x00, 0x00, 0 },
{ '/', '/', 0x00, 181 },
{ 0x0D, 0x0D, 0x0D, 156 },
{ 0x00, 0x00, 0x00, 0 },
{ '-', '-', 0x00, 74 },
{ 0x00, 0x00, 0x00, 0 },
{ 0x00, 0x00, 0x00, 0 },
{ '=', '=', 0x00, 118 },
{ '0', '0', 0x00, 82 },
{ '1', '1', 0x00, 79 },
{ '2', '2', 0x00, 80 },
{ '3', '3', 0x00, 81 },
{ '4', '4', 0x00, 75 },
{ '5', '5', 0x00, 76 },
{ '6', '6', 0x00, 77 },
{ '7', '7', 0x00, 71 },
{ 0x00, 0x00, 0x00, 0 },
{ '8', '8', 0x00, 72 },
{ '9', '9', 0x00, 73 },
{ 0x00, 0x00, 0x00, 125 },
{ 0x00, 0x00, 0x00, 115 },
{ 0x00, 0x00, 0x00, 51 },
{ 0x00, 0x00, 0x00, 63 },
{ 0x00, 0x00, 0x00, 64 },
{ 0x00, 0x00, 0x00, 65 },
{ 0x00, 0x00, 0x00, 61 },
{ 0x00, 0x00, 0x00, 66 },
{ 0x00, 0x00, 0x00, 67 },
{ 0x00, 0x00, 0x00, 123 },
{ 0x00, 0x00, 0x00, 87 },
{ 0x00, 0x00, 0x00, 112 },
{ 0x00, 0x00, 0x00, 0 },
{ 0x00, 0x00, 0x00, 156 },
{ 0x00, 0x00, 0x00, 0 },
{ 0x00, 0x00, 0x00, 0 },
{ 0x00, 0x00, 0x00, 68 },
{ 0x00, 0x00, 0x00, 0 },
{ 0x00, 0x00, 0x00, 88 },
{ 0x00, 0x00, 0x00, 0 },
{ 0x00, 0x00, 0x00, 0 },
{ 0x00, 0x00, 0x00, 0 },
{ 0x00, 0x00, 0x00, 199 },
{ 0x00, 0x00, 0x00, 201 },
{ 0x00, 0x00, 0x00, 0 },
{ 0x00, 0x00, 0x00, 62 },
{ 0x00, 0x00, 0x00, 207 },
{ 0x00, 0x00, 0x00, 60 },
{ 0x00, 0x00, 0x00, 209 },
{ 0x00, 0x00, 0x00, 59 },
{ 0x00, 0x00, 0x00, 0 },
{ 0x00, 0x00, 0x00, 0 },
{ 0x00, 0x00, 0x00, 0 },
{ 0x00, 0x00, 0x00, 0 },
{ 0x00, 0x00, 0x00, 0 }
};
#endif