# shift map

# letters
shift_map = {
    'a': 'A',
    'b': 'B',
    'c': 'C',
    'd': 'D',
    'e': 'E',
    'f': 'F',
    'g': 'G',
    'h': 'H',
    'i': 'I',
    'j': 'J',
    'k': 'K',
    'l': 'L',
    'm': 'M',
    'n': 'N',
    'o': 'O',
    'p': 'P',
    'q': 'Q',
    'r': 'R',
    's': 'S',
    't': 'T',
    'u': 'U',
    'v': 'V',
    'w': 'W',
    'x': 'X',
    'y': 'Y',
    'z': 'Z',
    # numbers
    '1': '!',
    '2': '@',
    '3': '#',
    '4': '$',
    '5': '%',
    '6': '^',
    '7': '&',
    '8': '*',
    '9': '(',
    '0': ')',
    # symbols
    '-': '_',
    '=': '+',
    '[': '{',
    ']': '}',
    '\\': '|',
    ';': ':',
    '\'': '"',
    ',': '<',
    '.': '>',
    '/': '?',
    '`': '~',
}

# hex map

# modifier keys
mod_keys = {
    '00': '',
    '01': 'left_ctrl',
    '02': 'left_shift',
    '04': 'left_alt',
    '08': 'left_meta',
    '10': 'right_ctrl',
    '20': 'right_shift',
    '40': 'right_alt',
    '80': 'right_meta',
}

# base keys

base_keys = {
    # meta
    '00': '',  # none
    '01': 'error_ovf',
    # letters
    '04': 'a',
    '05': 'b',
    '06': 'c',
    '07': 'd',
    '08': 'e',
    '09': 'f',
    '0a': 'g',
    '0b': 'h',
    '0c': 'i',
    '0d': 'j',
    '0e': 'k',
    '0f': 'l',
    '10': 'm',
    '11': 'n',
    '12': 'o',
    '13': 'p',
    '14': 'q',
    '15': 'r',
    '16': 's',
    '17': 't',
    '18': 'u',
    '19': 'v',
    '1a': 'w',
    '1b': 'x',
    '1c': 'y',
    '1d': 'z',
    # numbers
    '1e': '1',
    '1f': '2',
    '20': '3',
    '21': '4',
    '22': '5',
    '23': '6',
    '24': '7',
    '25': '8',
    '26': '9',
    '27': '0',
    # misc
    '28': 'enter',  # enter \n
    '29': 'esc',
    '2a': 'backspace',
    '2b': 'tab',
    '2c': 'spacebar',  # space
    '2d': '-',
    '2e': '=',
    '2f': '[',
    '30': ']',
    '31': '\\',
    '32': '=',
    '33': '_SEMICOLON',
    '34': 'KEY_APOSTROPHE',
    '35': 'KEY_GRAVE',
    '36': 'KEY_COMMA',
    '37': 'KEY_DOT',
    '38': 'KEY_SLASH',
    '39': 'KEY_CAPSLOCK',
    '3a': 'KEY_F1',
    '3b': 'KEY_F2',
    '3c': 'KEY_F3',
    '3d': 'KEY_F4',
    '3e': 'KEY_F5',
    '3f': 'KEY_F6',
    '40': 'KEY_F7',
    '41': 'KEY_F8',
    '42': 'KEY_F9',
    '43': 'KEY_F10',
    '44': 'KEY_F11',
    '45': 'KEY_F12',
    '46': 'KEY_SYSRQ',
    '47': 'KEY_SCROLLLOCK',
    '48': 'KEY_PAUSE',
    '49': 'KEY_INSERT',
    '4a': 'KEY_HOME',
    '4b': 'KEY_PAGEUP',
    '4c': 'KEY_DELETE',
    '4d': 'KEY_END',
    '4e': 'KEY_PAGEDOWN',
    '4f': 'KEY_RIGHT',
    '50': 'KEY_LEFT',
    '51': 'KEY_DOWN',
    '52': 'KEY_UP',
    '53': 'KEY_NUMLOCK',
    '54': 'KEY_KPSLASH',
    '55': 'KEY_KPASTERISK',
    '56': 'KEY_KPMINUS',
    '57': 'KEY_KPPLUS',
    '58': 'KEY_KPENTER',
    '59': 'KEY_KP1',
    '5a': 'KEY_KP2',
    '5b': 'KEY_KP3',
    '5c': 'KEY_KP4',
    '5d': 'KEY_KP5',
    '5e': 'KEY_KP6',
    '5f': 'KEY_KP7',
    '60': 'KEY_KP8',
    '61': 'KEY_KP9',
    '62': 'KEY_KP0',
    '63': 'KEY_KPDOT',
    '64': 'KEY_102ND',
    '65': 'KEY_COMPOSE',
    '66': 'KEY_POWER',
    '67': 'KEY_KPEQUAL',
    '68': 'KEY_F13',
    '69': 'KEY_F14',
    '6a': 'KEY_F15',
    '6b': 'KEY_F16',
    '6c': 'KEY_F17',
    '6d': 'KEY_F18',
    '6e': 'KEY_F19',
    '6f': 'KEY_F20',
    '70': 'KEY_F21',
    '71': 'KEY_F22',
    '72': 'KEY_F23',
    '73': 'KEY_F24',
    '74': 'KEY_OPEN',
    '75': 'KEY_HELP',
    '76': 'KEY_PROPS',
    '77': 'KEY_FRONT',
    '78': 'KEY_STOP',
    '79': 'KEY_AGAIN',
    '7a': 'KEY_UNDO',
    '7b': 'KEY_CUT',
    '7c': 'KEY_COPY',
    '7d': 'KEY_PASTE',
    '7e': 'KEY_FIND',
    '7f': 'KEY_MUTE',
    '80': 'KEY_VOLUMEUP',
    '81': 'KEY_VOLUMEDOWN',
    '85': 'KEY_KPCOMMA',
    '87': 'KEY_RO',
    '88': 'KEY_KATAKANAHIRAGANA',
    '89': 'KEY_YEN',
    '8a': 'KEY_HENKAN',
    '8b': 'KEY_MUHENKAN',
    '8c': 'KEY_KPJPCOMMA',
    '90': 'KEY_HANGEUL',
    '91': 'KEY_HANJA',
    '92': 'KEY_KATAKANA',
    '93': 'KEY_HIRAGANA',
    '94': 'KEY_ZENKAKUHANKAKU',
    'b6': 'KEY_KPLEFTPAREN',
    'b7': 'KEY_KPRIGHTPAREN',
    'e0': 'KEY_LEFTCTRL',
    'e1': 'KEY_LEFTSHIFT',
    'e2': 'KEY_LEFTALT',
    'e3': 'KEY_LEFTMETA',
    'e4': 'KEY_RIGHTCTRL',
    'e5': 'KEY_RIGHTSHIFT',
    'e6': 'KEY_RIGHTALT',
    'e7': 'KEY_RIGHTMETA',
    'e8': 'KEY_MEDIA_PLAYPAUSE',
    'e9': 'KEY_MEDIA_STOPCD',
    'ea': 'KEY_MEDIA_PREVIOUSSONG',
    'eb': 'KEY_MEDIA_NEXTSONG',
    'ec': 'KEY_MEDIA_EJECTCD',
    'ed': 'KEY_MEDIA_VOLUMEUP',
    'ee': 'KEY_MEDIA_VOLUMEDOWN',
    'ef': 'KEY_MEDIA_MUTE',
    'f0': 'KEY_MEDIA_WWW',
    'f1': 'KEY_MEDIA_BACK',
    'f2': 'KEY_MEDIA_FORWARD',
    'f3': 'KEY_MEDIA_STOP',
    'f4': 'KEY_MEDIA_FIND',
    'f5': 'KEY_MEDIA_SCROLLUP',
    'f6': 'KEY_MEDIA_SCROLLDOWN',
    'f7': 'KEY_MEDIA_EDIT',
    'f8': 'KEY_MEDIA_SLEEP',
    'f9': 'KEY_MEDIA_COFFEE',
    'fa': 'KEY_MEDIA_REFRESH',
    'fb': 'KEY_MEDIA_CALC',
}
