#define NULL_SK ""
#define A_Make_SK  "\x1e"
#define A_Break_SK "\x9e"
#define B_Make_SK  "\x30"
#define B_Break_SK "\xb0"
#define C_Make_SK  "\x2e"
#define C_Break_SK "\xae"
#define D_Make_SK  "\x20"
#define D_Break_SK "\xa0"
#define E_Make_SK  "\x12"
#define E_Break_SK "\x92"
#define F_Make_SK  "\x21"
#define F_Break_SK "\xa1"
#define G_Make_SK  "\x22"
#define G_Break_SK "\xa2"
#define H_Make_SK  "\x23"
#define H_Break_SK "\xa3"
#define I_Make_SK  "\x17"
#define I_Break_SK "\x97"
#define J_Make_SK  "\x24"
#define J_Break_SK "\xa4"
#define K_Make_SK  "\x25"
#define K_Break_SK "\xa5"
#define L_Make_SK  "\x26"
#define L_Break_SK "\xa6"
#define M_Make_SK  "\x32"
#define M_Break_SK "\xb2"
#define N_Make_SK  "\x31"
#define N_Break_SK "\xb1"
#define O_Make_SK  "\x18"
#define O_Break_SK "\x98"
#define P_Make_SK  "\x19"
#define P_Break_SK "\x99"
#define Q_Make_SK  "\x10"
#define Q_Break_SK "\x90"
#define R_Make_SK  "\x13"
#define R_Break_SK "\x93"
#define S_Make_SK  "\x1f"
#define S_Break_SK "\x9f"
#define T_Make_SK  "\x14"
#define T_Break_SK "\x94"
#define U_Make_SK  "\x16"
#define U_Break_SK "\x96"
#define V_Make_SK  "\x2f"
#define V_Break_SK "\xaf"
#define W_Make_SK  "\x11"
#define W_Break_SK "\x91"
#define X_Make_SK  "\x2d"
#define X_Break_SK "\xad"
#define Y_Make_SK  "\x15"
#define Y_Break_SK "\x95"
#define Z_Make_SK  "\x2c"
#define Z_Break_SK "\xac"
#define SPACE_Make_SK  "\x39"
#define SPACE_Break_SK "\xb9"
#define ENTER_Make_SK  "\x1c"
#define ENTER_Break_SK "\x9c"
#define SHIFT_Make_SK  "\x2a" /***************/
#define SHIFT_Break_SK "\xaa" /***************/
#define BACKSPACE_Make_SK  "\x0e"
#define BACKSPACE_Break_SK "\x8e"
#define DELETE_Make_SK  "\xe0\x53"
#define DELETE_Break_SK "\xe0\xd3"
#define ALT_Make_SK  "\x38"  /****************/
#define ALT_Break_SK "\xb8"  /****************/
#define CTL_Make_SK  "\x1d"  /****************/
#define CTL_Break_SK "\x9d"  /****************/
#define ESCAPE_Make_SK  "\x01"
#define ESCAPE_Break_SK "\x81"
#define TAB_Make_SK  "\x0f"
#define TAB_Break_SK "\x8f"
#define CAPS_LOCK_Make_SK  "\x3a" /****************/
#define CAPS_LOCK_Break_SK "\xba" /****************/
#define INSERT_Make_SK  "\xe0\x52"
#define INSERT_Break_SK "\xe0\xd2"
/* No decernable difference between PAUSE and BREAK and there is no up down behavior, scancodes only show on down */
#define BREAK_Make_SK  "\xe1\xd1\x45\xe1\x9d\xc5"
#define BREAK_Break_SK ""
#define PAUSE_Make_SK  "\xe1\xd1\x45\xe1\x9d\xc5"
#define PAUSE_Break_SK ""
#define COMMA_LEFT_ANGLE_BRACKET_Make_SK  "\x33"
#define COMMA_LEFT_ANGLE_BRACKET_Break_SK "\xb3"
#define PERIOD_RIGHT_ANGLE_BRACKET_Make_SK  "\x34"
#define PERIOD_RIGHT_ANGLE_BRACKET_Break_SK "\xb4"
#define APOSTROPHY_DOUBLE_QUOTES_Make_SK  "\x28"
#define APOSTROPHY_DOUBLE_QUOTES_Break_SK "\xa8"
#define SEMICOLON_COLON_Make_SK  "\x27"
#define SEMICOLON_COLON_Break_SK "\xa7"
#define HOME_Make_SK  "\xe0\x47"
#define HOME_Break_SK "\xe0\xc7"
#define END_Make_SK  "\xe0\x4f"
#define END_Break_SK "\xe0\xcf"
#define PGUP_Make_SK  "\xe0\x49"
#define PGUP_Break_SK "\xe0\xc9"
#define PGDOWN_Make_SK  "\xe0\x51"
#define PGDOWN_Break_SK "\xe0\xd1"
#define LEFT_ARROW_Make_SK  "\xe0\x4b"
#define LEFT_ARROW_Break_SK "\xe0\xcb"
#define RIGHT_ARROW_Make_SK  "\xe0\x4d"
#define RIGHT_ARROW_Break_SK "\xe0\xcd"
#define UP_ARROW_Make_SK  "\xe0\x48"
#define UP_ARROW_Break_SK "\xe0\xc8"
#define DOWN_ARROW_Make_SK  "\xe0\x50"
#define DOWN_ARROW_Break_SK "\xe0\xd0"
#define PRINT_SCREEN_Make_SK  "\e0\x2a\x37\xe0\xb7\xaa"
#define PRINT_SCREEN_Break_SK ""
/* #define SCROLL_LOCK_SK "\x3c\xbc" Don't have it*/
#define F1_Make_SK  "\x3b"
#define F1_Break_SK "\xbb"
#define F2_Make_SK  "\x3c"
#define F2_Break_SK "\xbc"
#define F3_Make_SK  "\x3d"
#define F3_Break_SK "\xbd"
#define F4_Make_SK  "\x3e"
#define F4_Break_SK "\xbe"
#define F5_Make_SK  "\x3f"
#define F5_Break_SK "\xbf"
#define F6_Make_SK  "\x40"
#define F6_Break_SK "\xc0"
#define F7_Make_SK  "\x41"
#define F7_Break_SK "\xc1"
#define F8_Make_SK  "\x42"
#define F8_Break_SK "\xc2"
#define F9_Make_SK  "\x43"
#define F9_Break_SK "\xc3"
#define F10_Make_SK  "\x44"
#define F10_Break_SK "\xc4"
#define F11_Make_SK  "\x57"
#define F11_Break_SK "\xd7"
#define F12_Make_SK  "\x58"
#define F12_Break_SK "\xd8"
#define ONE_EXCLIMATION_Make_SK  "\x02"
#define ONE_EXCLIMATION_Break_SK "\x82"
#define TWO_AT_Make_SK  "\x03"
#define TWO_AT_Break_SK "\x83"
#define THREE_POUND_Make_SK  "\x04"
#define THREE_POUND_Break_SK "\x84"
#define FOUR_DOLLAR_Make_SK  "\x05"
#define FOUR_DOLLAR_Break_SK "\x85"
#define FIVE_PERCENT_Make_SK  "\x06"
#define FIVE_PERCENT_Break_SK "\x86"
#define SIX_CARROT_Make_SK  "\x07"
#define SIX_CARROT_Break_SK "\x87"
#define SEVEN_AMPERSAND_Make_SK  "\x08"
#define SEVEN_AMPERSAND_Break_SK "\x88"
#define EIGHT_STAR_Make_SK  "\x09"
#define EIGHT_STAR_Break_SK "\x89"
#define NINE_LEFT_CURVED_BRACKET_Make_SK  "\x0a"
#define NINE_LEFT_CURVED_BRACKET_Break_SK "\x8a"
#define ZERO_RIGHT_CURVED_BRACKET_Make_SK  "\x0b"
#define ZERO_RIGHT_CURVED_BRACKET_Break_SK "\x8b"
#define BACKSLASH_PIPE_Make_SK  "\x2b"
#define BACKSLASH_PIPE_Break_SK "\xab"
#define LEFT_APOSTROPHY_TILDE_Make_SK  "\x29"
#define LEFT_APOSTROPHY_TILDE_Break_SK "\xa9"
#define LEFT_SQUARE_BRACKET_LEFT_SQUIGLY_BRACKET_Make_SK  "\x1a"
#define LEFT_SQUARE_BRACKET_LEFT_SQUIGLY_BRACKET_Break_SK "\x9a"
#define RIGHT_SQUARE_BRACKET_RIGHT_SQUIGLY_BRACKET_Make_SK "\x1b"
#define RIGHT_SQUARE_BRACKET_RIGHT_SQUIGLY_BRACKET_Break_SK "\x9b"
#define DASH_UNDERSCORE_Make_SK  "\x0c"
#define DASH_UNDERSCORE_Break_SK "\x8c"
#define SLASH_QUESTIONMARK_Make_SK  "\x35"
#define SLASH_QUESTIONMARK_Break_SK "\xb5"
#define EQUALS_PLUS_Make_SK  "\x0d"
#define EQUALS_PLUS_Break_SK "\x8d"
#define ADD_Make_SK  "\x2a\x0d"
#define ADD_Break_SK "\x8d\xaa"
#define MULTIPLY_Make_SK  "\x2a\x09"
#define MULTIPLY_Break_SK "\x89\xaa"
#define PERCENT_Make_SK  "\x2a\x06"
#define PERCENT_Break_SK "\x86\xaa"
#define AMPERSAND_Make_SK "\x2a\x08"
#define AMPERSAND_Break_SK "\x88\xaa"
#define QUESTIONMARK_Make_SK  "\x2a\x35"
#define QUESTIONMARK_Break_SK "\xb5\xaa"
#define QUOTES_Make_SK ""
#define QUOTES_Break_SK "\x2a\x28\xa8\x28\xa8\xaa\xe0\x4b\xe0\xcb"
#define PARENS_Make_SK  ""
#define PARENS_Break_SK "\x2a\x0a\x8a\x0b\x8b\xaa\xe0\x4b\xe0\xcb"
#define DOUBLE_ZERO_Make_SK ""
#define DOUBLE_ZERO_Break_SK "\x0b\x8b\x0b\x8b"
#define TRIPLE_ZERO_Make_SK ""
#define TRIPLE_ZERO_Break_SK "\x0b\x8b\x0b\x8b\x0b\x8b"

#define FUNCTION_MODE_SK ""
#define NUMBER_MODE_SK ""
#define RESET_SK ""
#define MACRO1_SK ""
#define MACRO2_SK ""
#define KEYPAD_MODE_SK ""
#define NUMBER_MODE_LOCK_SK ""
#define WORDCHORD_SK ""

#define PINKY_MAKECODE 0x18
#define RING_MAKECODE 0x21
#define MIDDLE_MAKECODE 0x23
#define INDEX_MAKECODE 0x03
#define THUMB_RED_MAKECODE 0x10
#define THUMB_GREY_MAKECODE 0x25
#define THUMB_BLUE_MAKECODE 0x27

#define PINKY_BREAKCODE 0x98
#define RING_BREAKCODE 0xa1
#define MIDDLE_BREAKCODE 0xa3
#define INDEX_BREAKCODE 0x83
#define THUMB_RED_BREAKCODE 0x90
#define THUMB_GREY_BREAKCODE 0xa5
#define THUMB_BLUE_BREAKCODE 0xa7

#define RESET_CHORD 0x70
#define SHIFT_CHORD 0x40 
#define ALT_CHORD 0x17
#define CTL_CHORD 0x1b
#define NUM_CHORD 0x10
#define NUMLOCK_CHORD 0x1f
#define FUNC_CHORD 0x11

const int PINKY_SWITCH           = (1<<0);
const int RING_SWITCH            = (1<<1);
const int MIDDLE_SWITCH          = (1<<2);
const int INDEX_SWITCH           = (1<<3);
const int THUMB_RED_SWITCH       = (1<<4);
const int THUMB_GREY_SWITCH      = (1<<5);
const int THUMB_BLUE_SWITCH      = (1<<6);

const int SHIFT_STICK            = (1<<0);
const int ALT_STICK              = (1<<1);
const int CNTL_STICK             = (1<<2);
const int NUM_LOCK               = (1<<3);
const int CHORD_ON               = (1<<4);
const int CHORD_UP               = (1<<5);
const int CHORD_FIRST            = (1<<6);

const int NUMBER_MODE            = 0x01;
const int FUNCTION_MODE          = 0x02;

const char ALT_SCANCODE          = 0x38;
const char CTL_SCANCODE          = 0x1d;
const char SHIFT_SCANCODE        = 0x2a;
