#include "boot_keyboard_table.h"
#define A | KBTYPE_ALPHA
#define C & 0x1f
#define F | KBTYPE_FUNC
#define N | KBTYPE_NUMPAD
#define ALT KBTYPE_SPEC_ALT
#define CTRL KBTYPE_SPEC_CTRL
#define LSHIFT KBTYPE_SPEC_LSHIFT
#define NOP KBTYPE_SPEC_NOP
#define NUMLK KBTYPE_SPEC_NUM_LOCK
#define SCRLLK KBTYPE_SPEC_SCROLL_LOCK
#define CAPSLK KBTYPE_SPEC_CAPS_LOCK
#define RSHIFT KBTYPE_SPEC_RSHIFT
#define REBOOT KBTYPE_SPEC_MAYBE_REBOOT
#define UNDEF KBTYPE_SPEC_UNDEF
struct keyboard_translate keyboard_translate[128] = {
UNDEF, UNDEF, UNDEF, UNDEF,
'['C, '['C, NOP, NOP,
'1', '!', NOP, 0x78 F,
'2', '@', NOP, 0x79 F,
'3', '#', NOP, 0x7a F,
'4', '$', NOP, 0x7b F,
'5', '%', NOP, 0x7c F,
'6', '^', '^'C, 0x7d F,
'7', '&', NOP, 0x7e F,
'8', '*', NOP, 0x7f F,
'9', '(', NOP, 0x80 F,
'0', ')', NOP, 0x81 F,
'-', '_', NOP, 0x82 F,
'=', '+', NOP, 0x83 F,
'h'C, 0x0e F, 0x7f, NOP,
'i'C, 0x0f F, NOP, NOP,
'q'A, 'Q', 'q'C, 0x10 F,
'w'A, 'W', 'w'C, 0x11 F,
'e'A, 'E', 'e'C, 0x12 F,
'r'A, 'R', 'r'C, 0x13 F,
't'A, 'T', 't'C, 0x14 F,
'y'A, 'Y', 'y'C, 0x15 F,
'u'A, 'U', 'u'C, 0x16 F,
'i'A, 'I', 'i'C, 0x17 F,
'o'A, 'O', 'o'C, 0x18 F,
'p'A, 'P', 'p'C, 0x19 F,
'[', '{', '['C, NOP,
']', '}', ']'C, NOP,
'm'C, 'm'C, NOP, NOP,
CTRL, CTRL, CTRL, CTRL,
'a'A, 'A', 'a'C, 0x1e F,
's'A, 'S', 's'C, 0x1f F,
'd'A, 'D', 'd'C, 0x20 F,
'f'A, 'F', 'f'C, 0x21 F,
'g'A, 'G', 'g'C, 0x22 F,
'h'A, 'H', 'h'C, 0x23 F,
'j'A, 'J', 'j'C, 0x24 F,
'k'A, 'K', 'k'C, 0x25 F,
'l'A, 'L', 'l'C, 0x26 F,
';', ':', NOP, NOP,
'\'', '"', NOP, NOP,
'`', '~', NOP, NOP,
LSHIFT, LSHIFT, LSHIFT, LSHIFT,
'\\', '|', '\\'C, NOP,
'z'A, 'Z', 'z'C, 0x2c F,
'x'A, 'X', 'x'C, 0x2d F,
'c'A, 'C', 'c'C, 0x2e F,
'v'A, 'V', 'v'C, 0x2f F,
'b'A, 'B', 'b'C, 0x30 F,
'n'A, 'N', 'n'C, 0x31 F,
'm'A, 'M', 'm'C, 0x32 F,
',', '<', NOP, NOP,
'.', '>', NOP, NOP,
'/', '?', NOP, NOP,
RSHIFT, RSHIFT, RSHIFT, RSHIFT,
'*', NOP, NOP, NOP,
ALT, ALT, ALT, ALT,
' ', ' ', NOP, NOP,
CAPSLK, CAPSLK, CAPSLK, CAPSLK,
0x3b F, 0x54 F, 0x5e F, 0x68 F,
0x3c F, 0x55 F, 0x5f F, 0x69 F,
0x3d F, 0x56 F, 0x60 F, 0x6a F,
0x3e F, 0x57 F, 0x61 F, 0x6b F,
0x3f F, 0x58 F, 0x62 F, 0x6c F,
0x40 F, 0x59 F, 0x63 F, 0x6d F,
0x41 F, 0x5a F, 0x64 F, 0x6e F,
0x42 F, 0x5b F, 0x65 F, 0x6f F,
0x43 F, 0x5c F, 0x66 F, 0x70 F,
0x44 F, 0x5d F, 0x67 F, 0x71 F,
NUMLK, NUMLK, NUMLK, NUMLK,
SCRLLK, SCRLLK, SCRLLK, SCRLLK,
0x47 N, '7', NOP, NOP,
0x48 N, '8', NOP, NOP,
0x49 N, '9', NOP, NOP,
'-', '-', NOP, NOP,
0x4b N, '4', NOP, NOP,
NOP, '5', NOP, NOP,
0x4d N, '6', NOP, NOP,
'+', '+', NOP, NOP,
0x4f N, '1', NOP, NOP,
0x50 N, '2', NOP, NOP,
0x51 N, '3', NOP, NOP,
0x52 N, '0', NOP, NOP,
0x53 N, '.', REBOOT, REBOOT,
NOP, NOP, NOP, NOP,
UNDEF, UNDEF, UNDEF, UNDEF,
UNDEF, UNDEF, UNDEF, UNDEF,
UNDEF, UNDEF, UNDEF, UNDEF,
UNDEF, UNDEF, UNDEF, UNDEF,
UNDEF, UNDEF, UNDEF, UNDEF,
UNDEF, UNDEF, UNDEF, UNDEF,
UNDEF, UNDEF, UNDEF, UNDEF,
UNDEF, UNDEF, UNDEF, UNDEF,
UNDEF, UNDEF, UNDEF, UNDEF,
UNDEF, UNDEF, UNDEF, UNDEF,
UNDEF, UNDEF, UNDEF, UNDEF,
UNDEF, UNDEF, UNDEF, UNDEF,
UNDEF, UNDEF, UNDEF, UNDEF,
UNDEF, UNDEF, UNDEF, UNDEF,
UNDEF, UNDEF, UNDEF, UNDEF,
UNDEF, UNDEF, UNDEF, UNDEF,
UNDEF, UNDEF, UNDEF, UNDEF,
UNDEF, UNDEF, UNDEF, UNDEF,
UNDEF, UNDEF, UNDEF, UNDEF,
UNDEF, UNDEF, UNDEF, UNDEF,
UNDEF, UNDEF, UNDEF, UNDEF,
UNDEF, UNDEF, UNDEF, UNDEF,
UNDEF, UNDEF, UNDEF, UNDEF,
UNDEF, UNDEF, UNDEF, UNDEF,
UNDEF, UNDEF, UNDEF, UNDEF,
UNDEF, UNDEF, UNDEF, UNDEF,
UNDEF, UNDEF, UNDEF, UNDEF,
UNDEF, UNDEF, UNDEF, UNDEF,
UNDEF, UNDEF, UNDEF, UNDEF,
UNDEF, UNDEF, UNDEF, UNDEF,
UNDEF, UNDEF, UNDEF, UNDEF,
UNDEF, UNDEF, UNDEF, UNDEF,
UNDEF, UNDEF, UNDEF, UNDEF,
UNDEF, UNDEF, UNDEF, UNDEF,
UNDEF, UNDEF, UNDEF, UNDEF,
UNDEF, UNDEF, UNDEF, UNDEF,
UNDEF, UNDEF, UNDEF, UNDEF,
UNDEF, UNDEF, UNDEF, UNDEF,
UNDEF, UNDEF, UNDEF, UNDEF,
UNDEF, UNDEF, UNDEF, UNDEF,
UNDEF, UNDEF, UNDEF, UNDEF,
UNDEF, UNDEF, UNDEF, UNDEF,
UNDEF, UNDEF, UNDEF, UNDEF,
};