| # 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', | |
| } |