#include #include bool is_shift_down = false; kb_key_press_t decode_scancode(uint8_t scancode) {return (kb_key_press_t) scancode;} // TODO: check the shift scan code as a boolean, if yes ... blah blah char decode_key_enum(kb_key_press_t keycode) { switch(keycode) { case KEY_Q: return (is_shift_down) ? 'Q' : 'q'; case KEY_W: return (is_shift_down) ? 'W' : 'w'; case KEY_E: return (is_shift_down) ? 'E' : 'e'; case KEY_R: return (is_shift_down) ? 'R' : 'r'; case KEY_T: return (is_shift_down) ? 'T' : 't'; case KEY_Y: return (is_shift_down) ? 'Y' : 'y'; case KEY_U: return (is_shift_down) ? 'U' : 'u'; case KEY_I: return (is_shift_down) ? 'I' : 'i'; case KEY_O: return (is_shift_down) ? 'O' : 'o'; case KEY_P: return (is_shift_down) ? 'P' : 'p'; case KEY_A: return (is_shift_down) ? 'A' : 'a'; case KEY_S: return (is_shift_down) ? 'S' : 's'; case KEY_D: return (is_shift_down) ? 'D' : 'd'; case KEY_F: return (is_shift_down) ? 'F' : 'f'; case KEY_G: return (is_shift_down) ? 'G' : 'g'; case KEY_H: return (is_shift_down) ? 'H' : 'h'; case KEY_J: return (is_shift_down) ? 'J' : 'j'; case KEY_K: return (is_shift_down) ? 'K' : 'k'; case KEY_L: return (is_shift_down) ? 'L' : 'l'; case KEY_Z: return (is_shift_down) ? 'Z' : 'z'; case KEY_X: return (is_shift_down) ? 'X' : 'x'; case KEY_C: return (is_shift_down) ? 'C' : 'c'; case KEY_V: return (is_shift_down) ? 'V' : 'v'; case KEY_B: return (is_shift_down) ? 'B' : 'b'; case KEY_N: return (is_shift_down) ? 'N' : 'n'; case KEY_M: return (is_shift_down) ? 'M' : 'm'; case KEY_1: return (is_shift_down) ? '!' : '1'; case KEY_2: return (is_shift_down) ? '@' : '2'; case KEY_3: return (is_shift_down) ? '#' : '3'; case KEY_4: return (is_shift_down) ? '$' : '4'; case KEY_5: return (is_shift_down) ? '%' : '5'; case KEY_6: return (is_shift_down) ? '^' : '6'; case KEY_7: return (is_shift_down) ? '&' : '7'; case KEY_8: return (is_shift_down) ? '*' : '8'; case KEY_9: return (is_shift_down) ? '(' : '9'; case KEY_0: return (is_shift_down) ? ')' : '0'; case KEY_MINUS: return (is_shift_down) ? '_' : '-'; case KEY_EQUALS: return (is_shift_down) ? '=' : '+'; case KEY_LEFT_BRACKET: return (is_shift_down) ? '{' : '['; case KEY_RIGHT_BRACKET: return (is_shift_down) ? '}' : ']'; case KEY_BACKSLASH: return (is_shift_down) ? '|' : '\\'; case KEY_SEMICOLON: return (is_shift_down) ? ':' : ';'; case KEY_SINGLE_QUOTE: return (is_shift_down) ? '\"' : '\''; case KEY_COMMA: return (is_shift_down) ? '<' : ','; case KEY_PERIOD: return (is_shift_down) ? '>' : '.'; case KEY_FORWARDSLASH: return (is_shift_down) ? '?' : '/'; case KEY_BACK_TICK: return (is_shift_down) ? '~' : '`'; case KEY_ENTER: return '\n'; case KEY_SPACE: return ' '; case KEY_LEFT_SHIFT: case KEY_RIGHT_SHIFT: is_shift_down = true; return '\0'; case KEY_LEFT_SHIFT_R: case KEY_RIGHT_SHIFT_R: is_shift_down = false; return '\0'; // TODO: should i send a character on a no op key? default: return '\0'; } }