from adafruit_hid.keycode import Keycode characters = [ [ [ [ [ [None, None, None, None], #00000 ["\u2423", "\u002e", "\u003c", "\u0031"], #00001 [SPACE, FULLSTOP, LESS THAN, 1] ], [ ["\u21b9", "\u002c", None, "\u0032"], #00010 [TAB, COMMA, None, 2] ["\u0065", "\u0045", "\u003d", "\u0035"], #00011 [e, E, EQUALS, 5] ], ], [ [ ["\u232b", "\u003a", None, "\u0033"], #00100 [BACKSPACE, COLON, None, 3] ["\u0061", "\u0041", "\u002b", "\u0036"], #00101 [a, A, PLUS, 6] ], [ ["\u0072", "\u0052", "\u002f", "\u1f50e"], #00110 [r, R, SLASH, CTRL+F] ["\u0075", "\u0055", "\u0027", "\u0038"], #00111 [u, U, APOSTROPHE, 8] ], ], ], [ [ [ ["\u238b", "\u003b", None, "\u0034"], #01000 [ESCAPE, SEMICOLON, None, 4] ["\u0069", "\u0049", "\u002a", "\u0037"], #01001 [i, I, ASTERISK, 7] ], [ ["\u0063", "\u0043", "\u005c", "\u261d"], #01010 [c, C, BACKSLASH, CTRL+A] ["\u0078", "\u0058", "\u0022", "\u0039"], #01011 [x, X, DOUBLE QUOTES, 9] ], ], [ [ ["\u006c", "\u004c", "\u007e", "\u2190\u2318"], #01100 [l, L, TILDE, SUPER LEFT] ["\u007a", "\u005a", "\u003e", "\u2192\u2318"], #01101 [z, Z, GREATER THAN, SUPER RIGHT] ], [ ["\u0064", "\u0044", "\u0060", "\u29c8"], #01110 [d, D, TICK, PASTE] ["\u0068", "\u0048", "\u0040", "\u0030"], #01111 [h, H, AT, 0] ], ], ], ], [ [ [ [ ["\u23ce", "\u21e7\u23ce", "\u002d", "\u2399"], #10000 [RETURN, SHIFT RETURN, MINUS, PRINT SCREEN] ["\u006f", "\u004f", "\u0029", "\u2193"], #10001 [o, O, CLOSE BRACKET, DOWN] ], [ ["\u006d", "\u004d", "\u0028", "\u2192"], #10010 [m, M, OPEN BRACKET, RIGHT] ["\u0070", "\u0050", "\u005f", None], #10011 [p, P, UNDERSCORE, None] ], ], [ [ ["\u0066", "\u0046", "\u0023", "\u2191"], #10100 [f, F, HASH, UP] ["\u0077", "\u0057", "\u007c", None], #10101 [w, W, PIPE, None] ], [ ["\u006a", "\u004a", "\u0025", None], #10110 [j, J, PERCENT, None] ["\u0071", "\u0051", "\u003f", None], #10111 [q, Q, QUESTION MARK, None] ], ], ], [ [ [ ["\u0079", "\u0059", "\u0024", "\u2318"], #11000 [y, Y, DOLLAR, LEFT] ["\u0062", "\u0042", "\u007d", None], #11001 [b, B, CLOSE CURLY BRACKET, None] ], [ ["\u006b", "\u004b", "\u007b", None], #11010 [k, K, OPEN CURLY BRACKET, None] ["\u0067", "\u0047", "\u0021", None], #11011 [g, G, EXCLAMATION MARK, None] ], ], [ [ ["\u0073", "\u0053", "\u005e", "\u21e4"], #11100 [s, S, CIRCUMFLEX, HOME] ["\u0076", "\u0056", "\u005d", "\u21e5"], #11101 [v, V, CLOSE SQUARE BRACKET, END] ], [ ["\u006e", "\u004e", "\u005b", "\u29c9"], #11110 [n, N, OPEN SQUARE BRACKET, CTRL+C] ["\u0074", "\u0054", "\u0026", "\u2318"], #11111 [t, T, AMPERSAND, SUPER] ], ], ], ], ] keycodes = { "\u2423": [Keycode.SPACEBAR], "\u002e": [Keycode.PERIOD], "\u003c": [Keycode.SHIFT, Keycode.COMMA], "\u0031": [Keycode.ONE], "\u21b9": [Keycode.TAB], "\u002c": [Keycode.COMMA], "\u0032": [Keycode.TWO], "\u0065": [Keycode.E], "\u0045": [Keycode.SHIFT, Keycode.E], "\u0045": [Keycode.EQUALS], "\u0035": [Keycode.FIVE], "\u232b": [Keycode.BACKSPACE], "\u003a": [Keycode.SHIFT, Keycode.SEMICOLON], "\u0033": [Keycode.THREE], "\u0061": [Keycode.A], "\u0041": [Keycode.SHIFT, Keycode.A], "\u002b": [Keycode.SHIFT, Keycode.EQUALS], "\u0036": [Keycode.SIX], "\u0072": [Keycode.R], "\u0052": [Keycode.SHIFT, Keycode.R], "\u002f": [Keycode.FORWARD_SLASH], "\u1f50e": [Keycode.LEFT_CONTROL, Keycode.F], "\u0075": [Keycode.U], "\u0055": [Keycode.SHIFT, Keycode.U], "\u0027": [Keycode.QUOTE], "\u0038": [Keycode.EIGHT], "\u238b": [Keycode.ESCAPE], "\u003b": [Keycode.SEMICOLON], "\u0034": [Keycode.FOUR], "\u0069": [Keycode.I], "\u0049": [Keycode.SHIFT, Keycode.I], "\u002a": [Keycode.SHIFT, Keycode.EIGHT], "\u0037": [Keycode.SEVEN], "\u0063": [Keycode.C], "\u0043": [Keycode.SHIFT, Keycode.C], "\u005c": [Keycode.BACKSLASH], "\u261d": [Keycode.LEFT_CONTROL, Keycode.A], "\u0078": [Keycode.X], "\u0058": [Keycode.SHIFT, Keycode.X], "\u0022": [Keycode.SHIFT, Keycode.QUOTE], "\u0039": [Keycode.NINE], "\u006c": [Keycode.L], "\u004c": [Keycode.SHIFT, Keycode.L], "\u007e": [Keycode.SHIFT, Keycode.GRAVE_ACCENT], "\u2190\u2318": [Keycode.APPLICATION, Keycode.LEFT_ARROW], "\u007a": [Keycode.Z], "\u005a": [Keycode.SHIFT, Keycode.Z], "\u003e": [Keycode.SHIFT, Keycode.PERIOD], "\u2192\u2318": [Keycode.APPLICATION, Keycode.RIGHT_ARROW], "\u0064": [Keycode.D], "\u0044": [Keycode.SHIFT, Keycode.D], "\u0060": [Keycode.GRAVE_ACCENT], "\u29c8": [Keycode.LEFT_CONTROL, Keycode.V], "\u0068": [Keycode.H], "\u0048": [Keycode.SHIFT, Keycode.H], "\u0040": [Keycode.SHIFT, Keycode.TWO], "\u0030": [Keycode.ZERO], "\u23ce": [Keycode.RETURN], "\u21e7\u23ce": [Keycode.SHIFT, Keycode.RETURN], "\u002d": [Keycode.MINUS], "\u2399": [Keycode.PRINT_SCREEN], "\u006f": [Keycode.O], "\u004f": [Keycode.SHIFT, Keycode.O], "\u0029": [Keycode.SHIFT, Keycode.ZERO], "\u2193": [Keycode.DOWN_ARROW], "\u006d": [Keycode.M], "\u004d": [Keycode.SHIFT, Keycode.M], "\u0028": [Keycode.SHIFT, Keycode.NINE], "\u2192": [Keycode.RIGHT_ARROW], "\u0070": [Keycode.P], "\u0050": [Keycode.SHIFT, Keycode.P], "\u005f": [Keycode.SHIFT, Keycode.MINUS], "\u0066": [Keycode.F], "\u0046": [Keycode.SHIFT, Keycode.F], "\u0023": [Keycode.SHIFT, Keycode.THREE], "\u2191": [Keycode.UP_ARROW], "\u0077": [Keycode.W], "\u0057": [Keycode.SHIFT, Keycode.W], "\u007c": [Keycode.SHIFT, Keycode.BACKSLASH], "\u006a": [Keycode.J], "\u004a": [Keycode.SHIFT, Keycode.J], "\u0025": [Keycode.SHIFT, Keycode.FIVE], "\u0071": [Keycode.Q], "\u0051": [Keycode.SHIFT, Keycode.Q], "\u003f": [Keycode.SHIFT, Keycode.FORWARD_SLASH], "\u0079": [Keycode.Y], "\u0059": [Keycode.SHIFT, Keycode.Y], "\u0024": [Keycode.SHIFT, Keycode.FOUR], "\u2318": [Keycode.LEFT_ARROW], "\u0062": [Keycode.B], "\u0042": [Keycode.SHIFT, Keycode.B], "\u007d": [Keycode.SHIFT, Keycode.RIGHT_BRACKET], "\u006b": [Keycode.K], "\u004b": [Keycode.SHIFT, Keycode.K], "\u007b": [Keycode.SHIFT, Keycode.LEFT_BRACKET], "\u0067": [Keycode.G], "\u0047": [Keycode.SHIFT, Keycode.G], "\u0021": [Keycode.SHIFT, Keycode.ONE], "\u0073": [Keycode.S], "\u0053": [Keycode.SHIFT, Keycode.S], "\u005e": [Keycode.SHIFT, Keycode.SIX], "\u21e4": [Keycode.HOME], "\u0076": [Keycode.V], "\u0056": [Keycode.SHIFT, Keycode.V], "\u005d": [Keycode.RIGHT_BRACKET], "\u21e5": [Keycode.END], "\u006e": [Keycode.N], "\u004e": [Keycode.SHIFT, Keycode.N], "\u005b": [Keycode.LEFT_BRACKET], "\u29c9": [Keycode.LEFT_CONTROL, Keycode.C], "\u0074": [Keycode.T], "\u0054": [Keycode.SHIFT, Keycode.T], "\u0026": [Keycode.SHIFT, Keycode.SEVEN], "\u2318": [Keycode.APPLICATION], } def get_character_set(): return sorted(list(set(sum([list(a) for a in sum(sum(sum(sum(sum(characters, []), []), []), []), []) if a is not None], [])))) missing = ["-", "_"]