This commit is contained in:
2026-05-08 15:09:47 +02:00
parent e4a5ccb043
commit 469177e5cb
6 changed files with 324 additions and 387 deletions
+210
View File
@@ -0,0 +1,210 @@
#include "keymap.h"
const char keymap_normal[] = {
[KEYBOARD_ESC] = 27,
[KEYBOARD_TAB] = '\t',
[KEYBOARD_SPACE] = ' ',
[KEYBOARD_RETURN] = '\n',
[KEYBOARD_BACKSPACE] = '\b',
[KEYBOARD_1] = '1',
[KEYBOARD_2] = '2',
[KEYBOARD_3] = '3',
[KEYBOARD_4] = '4',
[KEYBOARD_5] = '5',
[KEYBOARD_6] = '6',
[KEYBOARD_7] = '7',
[KEYBOARD_8] = '8',
[KEYBOARD_9] = '9',
[KEYBOARD_0] = '0',
[KEYBOARD_Q] = 'q',
[KEYBOARD_W] = 'w',
[KEYBOARD_E] = 'e',
[KEYBOARD_R] = 'r',
[KEYBOARD_T] = 't',
[KEYBOARD_Y] = 'y',
[KEYBOARD_U] = 'u',
[KEYBOARD_I] = 'i',
[KEYBOARD_O] = 'o',
[KEYBOARD_P] = 'p',
[KEYBOARD_A] = 'a',
[KEYBOARD_S] = 's',
[KEYBOARD_D] = 'd',
[KEYBOARD_F] = 'f',
[KEYBOARD_G] = 'g',
[KEYBOARD_H] = 'h',
[KEYBOARD_J] = 'j',
[KEYBOARD_K] = 'k',
[KEYBOARD_L] = 'l',
[KEYBOARD_Z] = 'z',
[KEYBOARD_X] = 'x',
[KEYBOARD_C] = 'c',
[KEYBOARD_V] = 'v',
[KEYBOARD_B] = 'b',
[KEYBOARD_N] = 'n',
[KEYBOARD_M] = 'm',
[KEYBOARD_LEFT] = ',',
[KEYBOARD_RIGHT] = '/',
[KEYBOARD_UP] = ';',
[KEYBOARD_DOWN] = '.',
[KEYBOARD_UNDERSCORE] = '-',
[KEYBOARD_EQUALS] = '=',
[KEYBOARD_LEFT_BRACKET] = '[',
[KEYBOARD_RIGHT_BRACKET] = ']',
[KEYBOARD_APOSTROPHE] = '\'',
[KEYBOARD_BACKSLASH] = '\\',
};
const char keymap_shift[] = {
[KEYBOARD_ESC] = '~',
[KEYBOARD_1] = '!',
[KEYBOARD_2] = '@',
[KEYBOARD_3] = '#',
[KEYBOARD_4] = '$',
[KEYBOARD_5] = '%',
[KEYBOARD_6] = '^',
[KEYBOARD_7] = '&',
[KEYBOARD_8] = '*',
[KEYBOARD_9] = '(',
[KEYBOARD_0] = ')',
[KEYBOARD_Q] = 'Q',
[KEYBOARD_W] = 'W',
[KEYBOARD_E] = 'E',
[KEYBOARD_R] = 'R',
[KEYBOARD_T] = 'T',
[KEYBOARD_Y] = 'Y',
[KEYBOARD_U] = 'U',
[KEYBOARD_I] = 'I',
[KEYBOARD_O] = 'O',
[KEYBOARD_P] = 'P',
[KEYBOARD_A] = 'A',
[KEYBOARD_S] = 'S',
[KEYBOARD_D] = 'D',
[KEYBOARD_F] = 'F',
[KEYBOARD_G] = 'G',
[KEYBOARD_H] = 'H',
[KEYBOARD_J] = 'J',
[KEYBOARD_K] = 'K',
[KEYBOARD_L] = 'L',
[KEYBOARD_Z] = 'Z',
[KEYBOARD_X] = 'X',
[KEYBOARD_C] = 'C',
[KEYBOARD_V] = 'V',
[KEYBOARD_B] = 'B',
[KEYBOARD_N] = 'N',
[KEYBOARD_M] = 'M',
[KEYBOARD_LEFT] = '<',
[KEYBOARD_RIGHT] = '?',
[KEYBOARD_UP] = ':',
[KEYBOARD_DOWN] = '>',
[KEYBOARD_UNDERSCORE] = '_',
[KEYBOARD_EQUALS] = '+',
[KEYBOARD_LEFT_BRACKET] = '{',
[KEYBOARD_RIGHT_BRACKET] = '}',
[KEYBOARD_APOSTROPHE] = '"',
[KEYBOARD_BACKSLASH] = '|',
};
const char * keymap_normal_name[] = {
[KEYBOARD_ESC] = "ESC",
[KEYBOARD_TAB] = "TAB",
[KEYBOARD_SPACE] = "SPACE",
[KEYBOARD_MOD_FN] = "FN",
[KEYBOARD_MOD_CTRL] = "CTRL",
[KEYBOARD_MOD_SHIFT] = "SHIFT",
[KEYBOARD_MOD_OPT] = "OPT",
[KEYBOARD_MOD_ALT] = "ALT",
[KEYBOARD_LEFT] = ",",
[KEYBOARD_RIGHT] = "/",
[KEYBOARD_UP] = ";",
[KEYBOARD_DOWN] = ".",
[KEYBOARD_UNDERSCORE] = "-",
[KEYBOARD_EQUALS] = "=",
[KEYBOARD_LEFT_BRACKET] = "[",
[KEYBOARD_RIGHT_BRACKET] = "]",
[KEYBOARD_APOSTROPHE] = "'",
[KEYBOARD_BACKSLASH] = "\\",
[KEYBOARD_SHIFT_DELETE] = "DELETE",
[KEYBOARD_RETURN] = "RETURN",
[KEYBOARD_1] = "1",
[KEYBOARD_2] = "2",
[KEYBOARD_3] = "3",
[KEYBOARD_4] = "4",
[KEYBOARD_5] = "5",
[KEYBOARD_6] = "6",
[KEYBOARD_7] = "7",
[KEYBOARD_8] = "8",
[KEYBOARD_9] = "9",
[KEYBOARD_0] = "0",
[KEYBOARD_Q] = "q",
[KEYBOARD_W] = "w",
[KEYBOARD_E] = "e",
[KEYBOARD_R] = "r",
[KEYBOARD_T] = "t",
[KEYBOARD_Y] = "y",
[KEYBOARD_U] = "u",
[KEYBOARD_I] = "i",
[KEYBOARD_O] = "o",
[KEYBOARD_P] = "p",
[KEYBOARD_A] = "a",
[KEYBOARD_S] = "s",
[KEYBOARD_D] = "d",
[KEYBOARD_F] = "f",
[KEYBOARD_G] = "g",
[KEYBOARD_H] = "h",
[KEYBOARD_J] = "j",
[KEYBOARD_K] = "k",
[KEYBOARD_L] = "l",
[KEYBOARD_Z] = "z",
[KEYBOARD_X] = "x",
[KEYBOARD_C] = "c",
[KEYBOARD_V] = "v",
[KEYBOARD_B] = "b",
[KEYBOARD_N] = "n",
[KEYBOARD_M] = "m",
};
const char * keymap_shift_name[] = {
[KEYBOARD_ESC] = "~",
[KEYBOARD_1] = "!",
[KEYBOARD_2] = "@",
[KEYBOARD_3] = "#",
[KEYBOARD_4] = "$",
[KEYBOARD_5] = "%",
[KEYBOARD_6] = "^",
[KEYBOARD_7] = "&",
[KEYBOARD_8] = "*",
[KEYBOARD_9] = "(",
[KEYBOARD_0] = ")",
[KEYBOARD_LEFT] = "<",
[KEYBOARD_RIGHT] = "?",
[KEYBOARD_UP] = ":",
[KEYBOARD_DOWN] = ">",
[KEYBOARD_UNDERSCORE] = "_",
[KEYBOARD_EQUALS] = "+",
[KEYBOARD_LEFT_BRACKET] = "{",
[KEYBOARD_RIGHT_BRACKET] = "}",
[KEYBOARD_APOSTROPHE] = "\"",
[KEYBOARD_BACKSLASH] = "|",
};
+104
View File
@@ -0,0 +1,104 @@
#pragma once
#define KEYBOARD_KEYS_COUNT 80
typedef enum {
KEYBOARD_GPIO0 = 0,
KEYBOARD_ESC = 1,
KEYBOARD_TAB = 2,
KEYBOARD_MOD_FN = 3,
KEYBOARD_MOD_CTRL = 4,
KEYBOARD_1 = 5,
KEYBOARD_Q = 6,
KEYBOARD_MOD_SHIFT = 7,
KEYBOARD_MOD_OPT = 8,
KEYBOARD_2 = 11,
KEYBOARD_W = 12,
KEYBOARD_A = 13,
KEYBOARD_MOD_ALT = 14,
KEYBOARD_3 = 15,
KEYBOARD_E = 16,
KEYBOARD_S = 17,
KEYBOARD_Z = 18,
KEYBOARD_4 = 21,
KEYBOARD_R = 22,
KEYBOARD_D = 23,
KEYBOARD_X = 24,
KEYBOARD_5 = 25,
KEYBOARD_T = 26,
KEYBOARD_F = 27,
KEYBOARD_C = 28,
KEYBOARD_6 = 31,
KEYBOARD_Y = 32,
KEYBOARD_G = 33,
KEYBOARD_V = 34,
KEYBOARD_7 = 35,
KEYBOARD_U = 36,
KEYBOARD_H = 37,
KEYBOARD_B = 38,
KEYBOARD_8 = 41,
KEYBOARD_I = 42,
KEYBOARD_J = 43,
KEYBOARD_N = 44,
KEYBOARD_9 = 45,
KEYBOARD_O = 46,
KEYBOARD_K = 47,
KEYBOARD_M = 48,
KEYBOARD_0 = 51,
KEYBOARD_P = 52,
KEYBOARD_L = 53,
KEYBOARD_LEFT = 54, //also comma
KEYBOARD_UNDERSCORE = 55,
KEYBOARD_LEFT_BRACKET = 56,
KEYBOARD_UP = 57, //also semicolon
KEYBOARD_DOWN = 58,
KEYBOARD_EQUALS = 61,
KEYBOARD_RIGHT_BRACKET = 62,
KEYBOARD_APOSTROPHE = 63,
KEYBOARD_RIGHT = 64, //also slash
KEYBOARD_BACKSPACE = 65,
KEYBOARD_BACKSLASH = 66,
KEYBOARD_RETURN = 67,
KEYBOARD_SPACE = 68
}
KEYMAP_MAP;
typedef enum {
KEYBOARD_SHIFT_TILDE = KEYBOARD_ESC,
KEYBOARD_SHIFT_EXCLAMATION = KEYBOARD_1,
KEYBOARD_SHIFT_AT = KEYBOARD_2,
KEYBOARD_SHIFT_HASH = KEYBOARD_3,
KEYBOARD_SHIFT_DOLLAR = KEYBOARD_4,
KEYBOARD_SHIFT_PERCENT = KEYBOARD_5,
KEYBOARD_SHIFT_POWER = KEYBOARD_6,
KEYBOARD_SHIFT_AMPERSAND = KEYBOARD_7,
KEYBOARD_SHIFT_STAR = KEYBOARD_8,
KEYBOARD_SHIFT_OPENPARETHESIS = KEYBOARD_9,
KEYBOARD_SHIFT_CLOSEPARENTHESIS = KEYBOARD_0,
KEYBOARD_SHIFT_LESS = KEYBOARD_LEFT,
KEYBOARD_SHIFT_DASH = KEYBOARD_UNDERSCORE,
KEYBOARD_SHIFT_LEFT_CURLY_BRACKET = KEYBOARD_LEFT_BRACKET,
KEYBOARD_SHIFT_COLON = KEYBOARD_UP,
KEYBOARD_SHIFT_GREATER = KEYBOARD_DOWN,
KEYBOARD_SHIFT_PLUS = KEYBOARD_EQUALS,
KEYBOARD_SHIFT_RIGHT_CURLY_BRACKET = KEYBOARD_RIGHT_BRACKET,
KEYBOARD_SHIFT_APOSTROPHES = KEYBOARD_APOSTROPHE,
KEYBOARD_SHIFT_QUESTIONMARK = KEYBOARD_LEFT, //also slash
KEYBOARD_SHIFT_DELETE = KEYBOARD_BACKSPACE,
KEYBOARD_SHIFT_PIPE = KEYBOARD_BACKSLASH,
} KEYMAP_SHIFT;
extern const char keymap_normal[KEYBOARD_KEYS_COUNT];
extern const char keymap_shift[KEYBOARD_KEYS_COUNT];
extern const char * keymap_normal_name[KEYBOARD_KEYS_COUNT];
extern const char * keymap_shift_name[KEYBOARD_KEYS_COUNT];
+3 -1
View File
@@ -135,7 +135,9 @@ void st7789_init(void) {
st7789_write_cmd(0x21); // INVERT ON (fixes many panels)
st7789_write_cmd(0x29); // DISPON
vTaskDelay(pdMS_TO_TICKS(20));
st7789_fill(0x0000);
st7789_flush_full();
gpio_set_level(LCD_BACKLIGHT_AND_RGB_POWER, 1);
}
/*rendering*/
+1 -370
View File
@@ -1,6 +1,7 @@
#pragma once
// --- System registers ---
#include <stdint.h>
#include "keymap.h"
#define TCA8418_REG_CFG 0x01
#define TCA8418_REG_INT_STAT 0x02
#define TCA8418_REG_KEY_LCK_EC 0x03
@@ -71,376 +72,6 @@
void tca8418_init(void);
int tca8418_read(uint8_t *key, uint8_t *pressed);
/* test
key= 2 pressed
key= 3 pressed
key= 4 pressed
key=1 5 pressed
key=q 6 pressed
key= 7 pressed
key= 8 pressed
key=a 11 pressed
key= 12 pressed
key=3 13 pressed
key=e 14 pressed
key=s 15 pressed
key=z 16 pressed
key=4 17 pressed
key=r 18 pressed
key=5 21 pressed
key=t 22 pressed
key=f 23 pressed
key=c 24 pressed
key=6 25 pressed
key=y 26 pressed
key=g 27 pressed
key=v 28 pressed
key=h 31 pressed
key=b 32 pressed
key=8 33 pressed
key=i 34 pressed
key=j 35 pressed
key=n 36 pressed
key=9 37 pressed
key=o 38 pressed
key=0 41 pressed
key=p 42 pressed
key=l 43 pressed
key= 44 pressed
key= 45 pressed
key= 46 pressed
key= 47 pressed
key= 48 pressed
key= 51 pressed
key= 52 pressed
key= 53 pressed
key= 54 pressed
key= 55 pressed
key= 56 pressed
key= 57 pressed
key= 58 pressed
key=s 61 pressed
key=2 62 pressed
key=8 63 pressed
key=1 64 pressed
key=2 65 pressed
key=_ 66 pressed
key=s 67 pressed
key=e 68 pressed
*/
typedef enum {
KEYBOARD_GPIO0 = 0,
KEYBOARD_ESC = 1,
KEYBOARD_TAB = 2,
KEYBOARD_MOD_FN = 3,
KEYBOARD_MOD_CTRL = 4,
KEYBOARD_1 = 5,
KEYBOARD_Q = 6,
KEYBOARD_MOD_SHIFT = 7,
KEYBOARD_MOD_OPT = 8,
KEYBOARD_2 = 11,
KEYBOARD_W = 12,
KEYBOARD_A = 13,
KEYBOARD_MOD_ALT = 14,
KEYBOARD_3 = 15,
KEYBOARD_E = 16,
KEYBOARD_S = 17,
KEYBOARD_Z = 18,
KEYBOARD_4 = 21,
KEYBOARD_R = 22,
KEYBOARD_D = 23,
KEYBOARD_X = 24,
KEYBOARD_5 = 25,
KEYBOARD_T = 26,
KEYBOARD_F = 27,
KEYBOARD_C = 28,
KEYBOARD_6 = 31,
KEYBOARD_Y = 32,
KEYBOARD_G = 33,
KEYBOARD_V = 34,
KEYBOARD_7 = 35,
KEYBOARD_U = 36,
KEYBOARD_H = 37,
KEYBOARD_B = 38,
KEYBOARD_8 = 41,
KEYBOARD_I = 42,
KEYBOARD_J = 43,
KEYBOARD_N = 44,
KEYBOARD_9 = 45,
KEYBOARD_O = 46,
KEYBOARD_K = 47,
KEYBOARD_M = 48,
KEYBOARD_0 = 51,
KEYBOARD_P = 52,
KEYBOARD_L = 53,
KEYBOARD_LEFT = 54, //also comma
KEYBOARD_UNDERSCORE = 55,
KEYBOARD_LEFT_BRACKET = 56,
KEYBOARD_UP = 57, //also semicolon
KEYBOARD_DOWN = 58,
KEYBOARD_EQUALS = 61,
KEYBOARD_RIGHT_BRACKET = 62,
KEYBOARD_APOSTROPHE = 63,
KEYBOARD_RIGHT = 64, //also slash
KEYBOARD_BACKSPACE = 65,
KEYBOARD_BACKSLASH = 66,
KEYBOARD_RETURN = 67,
KEYBOARD_SPACE = 68
}
KEYMAP_MAP;
#define KEYBOARD_KEYS_COUNT 80
typedef enum {
KEYBOARD_SHIFT_TILDE = KEYBOARD_ESC,
KEYBOARD_SHIFT_EXCLAMATION = KEYBOARD_1,
KEYBOARD_SHIFT_AT = KEYBOARD_2,
KEYBOARD_SHIFT_HASH = KEYBOARD_3,
KEYBOARD_SHIFT_DOLLAR = KEYBOARD_4,
KEYBOARD_SHIFT_PERCENT = KEYBOARD_5,
KEYBOARD_SHIFT_POWER = KEYBOARD_6,
KEYBOARD_SHIFT_AMPERSAND = KEYBOARD_7,
KEYBOARD_SHIFT_STAR = KEYBOARD_8,
KEYBOARD_SHIFT_OPENPARETHESIS = KEYBOARD_9,
KEYBOARD_SHIFT_CLOSEPARENTHESIS = KEYBOARD_0,
KEYBOARD_SHIFT_LESS = KEYBOARD_LEFT,
KEYBOARD_SHIFT_DASH = KEYBOARD_UNDERSCORE,
KEYBOARD_SHIFT_LEFT_CURLY_BRACKET = KEYBOARD_LEFT_BRACKET,
KEYBOARD_SHIFT_COLON = KEYBOARD_UP,
KEYBOARD_SHIFT_GREATER = KEYBOARD_DOWN,
KEYBOARD_SHIFT_PLUS = KEYBOARD_EQUALS,
KEYBOARD_SHIFT_RIGHT_CURLY_BRACKET = KEYBOARD_RIGHT_BRACKET,
KEYBOARD_SHIFT_APOSTROPHES = KEYBOARD_APOSTROPHE,
KEYBOARD_SHIFT_QUESTIONMARK = KEYBOARD_LEFT, //also slash
KEYBOARD_SHIFT_DELETE = KEYBOARD_BACKSPACE,
KEYBOARD_SHIFT_PIPE = KEYBOARD_BACKSLASH,
} KEYMAP_SHIFT;
static const char keymap_normal[] = {
[KEYBOARD_ESC] = 27,
[KEYBOARD_TAB] = '\t',
[KEYBOARD_SPACE] = ' ',
[KEYBOARD_RETURN] = '\n',
[KEYBOARD_BACKSPACE] = '\b',
[KEYBOARD_1] = '1',
[KEYBOARD_2] = '2',
[KEYBOARD_3] = '3',
[KEYBOARD_4] = '4',
[KEYBOARD_5] = '5',
[KEYBOARD_6] = '6',
[KEYBOARD_7] = '7',
[KEYBOARD_8] = '8',
[KEYBOARD_9] = '9',
[KEYBOARD_0] = '0',
[KEYBOARD_Q] = 'q',
[KEYBOARD_W] = 'w',
[KEYBOARD_E] = 'e',
[KEYBOARD_R] = 'r',
[KEYBOARD_T] = 't',
[KEYBOARD_Y] = 'y',
[KEYBOARD_U] = 'u',
[KEYBOARD_I] = 'i',
[KEYBOARD_O] = 'o',
[KEYBOARD_P] = 'p',
[KEYBOARD_A] = 'a',
[KEYBOARD_S] = 's',
[KEYBOARD_D] = 'd',
[KEYBOARD_F] = 'f',
[KEYBOARD_G] = 'g',
[KEYBOARD_H] = 'h',
[KEYBOARD_J] = 'j',
[KEYBOARD_K] = 'k',
[KEYBOARD_L] = 'l',
[KEYBOARD_Z] = 'z',
[KEYBOARD_X] = 'x',
[KEYBOARD_C] = 'c',
[KEYBOARD_V] = 'v',
[KEYBOARD_B] = 'b',
[KEYBOARD_N] = 'n',
[KEYBOARD_M] = 'm',
[KEYBOARD_LEFT] = ',',
[KEYBOARD_RIGHT] = '/',
[KEYBOARD_UP] = ';',
[KEYBOARD_DOWN] = '.',
[KEYBOARD_UNDERSCORE] = '-',
[KEYBOARD_EQUALS] = '=',
[KEYBOARD_LEFT_BRACKET] = '[',
[KEYBOARD_RIGHT_BRACKET] = ']',
[KEYBOARD_APOSTROPHE] = '\'',
[KEYBOARD_BACKSLASH] = '\\',
};
static const char keymap_shift[] = {
[KEYBOARD_ESC] = '~',
[KEYBOARD_1] = '!',
[KEYBOARD_2] = '@',
[KEYBOARD_3] = '#',
[KEYBOARD_4] = '$',
[KEYBOARD_5] = '%',
[KEYBOARD_6] = '^',
[KEYBOARD_7] = '&',
[KEYBOARD_8] = '*',
[KEYBOARD_9] = '(',
[KEYBOARD_0] = ')',
[KEYBOARD_Q] = 'Q',
[KEYBOARD_W] = 'W',
[KEYBOARD_E] = 'E',
[KEYBOARD_R] = 'R',
[KEYBOARD_T] = 'T',
[KEYBOARD_Y] = 'Y',
[KEYBOARD_U] = 'U',
[KEYBOARD_I] = 'I',
[KEYBOARD_O] = 'O',
[KEYBOARD_P] = 'P',
[KEYBOARD_A] = 'A',
[KEYBOARD_S] = 'S',
[KEYBOARD_D] = 'D',
[KEYBOARD_F] = 'F',
[KEYBOARD_G] = 'G',
[KEYBOARD_H] = 'H',
[KEYBOARD_J] = 'J',
[KEYBOARD_K] = 'K',
[KEYBOARD_L] = 'L',
[KEYBOARD_Z] = 'Z',
[KEYBOARD_X] = 'X',
[KEYBOARD_C] = 'C',
[KEYBOARD_V] = 'V',
[KEYBOARD_B] = 'B',
[KEYBOARD_N] = 'N',
[KEYBOARD_M] = 'M',
[KEYBOARD_LEFT] = '<',
[KEYBOARD_RIGHT] = '?',
[KEYBOARD_UP] = ':',
[KEYBOARD_DOWN] = '>',
[KEYBOARD_UNDERSCORE] = '_',
[KEYBOARD_EQUALS] = '+',
[KEYBOARD_LEFT_BRACKET] = '{',
[KEYBOARD_RIGHT_BRACKET] = '}',
[KEYBOARD_APOSTROPHE] = '"',
[KEYBOARD_BACKSLASH] = '|',
};
static const char * keymap_normal_name[] = {
[KEYBOARD_ESC] = "ESC",
[KEYBOARD_TAB] = "TAB",
[KEYBOARD_SPACE] = "SPACE",
[KEYBOARD_MOD_FN] = "FN",
[KEYBOARD_MOD_CTRL] = "CTRL",
[KEYBOARD_MOD_SHIFT] = "SHIFT",
[KEYBOARD_MOD_OPT] = "OPT",
[KEYBOARD_MOD_ALT] = "ALT",
[KEYBOARD_LEFT] = ",",
[KEYBOARD_RIGHT] = "/",
[KEYBOARD_UP] = ";",
[KEYBOARD_DOWN] = ".",
[KEYBOARD_UNDERSCORE] = "-",
[KEYBOARD_EQUALS] = "=",
[KEYBOARD_LEFT_BRACKET] = "[",
[KEYBOARD_RIGHT_BRACKET] = "]",
[KEYBOARD_APOSTROPHE] = "'",
[KEYBOARD_BACKSLASH] = "\\",
[KEYBOARD_SHIFT_DELETE] = "DELETE",
[KEYBOARD_RETURN] = "RETURN",
[KEYBOARD_1] = "1",
[KEYBOARD_2] = "2",
[KEYBOARD_3] = "3",
[KEYBOARD_4] = "4",
[KEYBOARD_5] = "5",
[KEYBOARD_6] = "6",
[KEYBOARD_7] = "7",
[KEYBOARD_8] = "8",
[KEYBOARD_9] = "9",
[KEYBOARD_0] = "0",
[KEYBOARD_Q] = "q",
[KEYBOARD_W] = "w",
[KEYBOARD_E] = "e",
[KEYBOARD_R] = "r",
[KEYBOARD_T] = "t",
[KEYBOARD_Y] = "y",
[KEYBOARD_U] = "u",
[KEYBOARD_I] = "i",
[KEYBOARD_O] = "o",
[KEYBOARD_P] = "p",
[KEYBOARD_A] = "a",
[KEYBOARD_S] = "s",
[KEYBOARD_D] = "d",
[KEYBOARD_F] = "f",
[KEYBOARD_G] = "g",
[KEYBOARD_H] = "h",
[KEYBOARD_J] = "j",
[KEYBOARD_K] = "k",
[KEYBOARD_L] = "l",
[KEYBOARD_Z] = "z",
[KEYBOARD_X] = "x",
[KEYBOARD_C] = "c",
[KEYBOARD_V] = "v",
[KEYBOARD_B] = "b",
[KEYBOARD_N] = "n",
[KEYBOARD_M] = "m",
};
static const char * keymap_shift_name[] = {
[KEYBOARD_ESC] = "~",
[KEYBOARD_1] = "!",
[KEYBOARD_2] = "@",
[KEYBOARD_3] = "#",
[KEYBOARD_4] = "$",
[KEYBOARD_5] = "%",
[KEYBOARD_6] = "^",
[KEYBOARD_7] = "&",
[KEYBOARD_8] = "*",
[KEYBOARD_9] = "(",
[KEYBOARD_0] = ")",
[KEYBOARD_LEFT] = "<",
[KEYBOARD_RIGHT] = "?",
[KEYBOARD_UP] = ":",
[KEYBOARD_DOWN] = ">",
[KEYBOARD_UNDERSCORE] = "_",
[KEYBOARD_EQUALS] = "+",
[KEYBOARD_LEFT_BRACKET] = "{",
[KEYBOARD_RIGHT_BRACKET] = "}",
[KEYBOARD_APOSTROPHE] = "\"",
[KEYBOARD_BACKSLASH] = "|",
};
typedef struct {
bool fnPressed;