#include <keymap.h>
#define array_size(a) (sizeof(a) / sizeof((a)[0]))
static char shifted_keymap[] = {
[KEY_0] = ')',
[KEY_1] = '!',
[KEY_2] = '@',
[KEY_3] = '#',
[KEY_4] = '$',
[KEY_5] = '%',
[KEY_6] = '^',
[KEY_7] = '&',
[KEY_8] = '*',
[KEY_9] = '(',
[KEY_A] = 'A',
[KEY_B] = 'X',
[KEY_C] = 'J',
[KEY_D] = 'E',
[KEY_E] = '>',
[KEY_F] = 'U',
[KEY_G] = 'I',
[KEY_H] = 'D',
[KEY_I] = 'C',
[KEY_J] = 'H',
[KEY_K] = 'T',
[KEY_L] = 'N',
[KEY_M] = 'M',
[KEY_N] = 'B',
[KEY_O] = 'R',
[KEY_P] = 'L',
[KEY_Q] = '"',
[KEY_R] = 'P',
[KEY_S] = 'O',
[KEY_T] = 'Y',
[KEY_U] = 'G',
[KEY_V] = 'K',
[KEY_W] = '<',
[KEY_X] = 'Q',
[KEY_Y] = 'F',
[KEY_Z] = ':',
[KEY_SEMICOLON] = 'S',
[KEY_SPACE] = ' ',
[KEY_COMMA] = 'W',
[KEY_DOT] = 'V',
[KEY_SLASH] = 'Z',
[KEY_LEFTBRACE] = '?',
[KEY_RIGHTBRACE] = '+',
[KEY_BACKSLASH] = '|',
[KEY_MINUS] = '{',
[KEY_EQUAL] = '}',
[KEY_APOSTROPHE] = '_',
[KEY_GRAVE] = '~',
[KEY_ENTER] = '\n',
[KEY_TAB] = '\t',
};
static char keymap[] = {
[KEY_0] = '0',
[KEY_1] = '1',
[KEY_2] = '2',
[KEY_3] = '3',
[KEY_4] = '4',
[KEY_5] = '5',
[KEY_6] = '6',
[KEY_7] = '7',
[KEY_8] = '8',
[KEY_9] = '9',
[KEY_A] = 'a',
[KEY_B] = 'x',
[KEY_C] = 'j',
[KEY_D] = 'e',
[KEY_E] = '.',
[KEY_F] = 'u',
[KEY_G] = 'i',
[KEY_H] = 'd',
[KEY_I] = 'c',
[KEY_J] = 'h',
[KEY_K] = 't',
[KEY_L] = 'n',
[KEY_M] = 'm',
[KEY_N] = 'b',
[KEY_O] = 'r',
[KEY_P] = 'l',
[KEY_Q] = '\'',
[KEY_R] = 'p',
[KEY_S] = 'o',
[KEY_T] = 'y',
[KEY_U] = 'g',
[KEY_V] = 'k',
[KEY_W] = ',',
[KEY_X] = 'q',
[KEY_Y] = 'f',
[KEY_Z] = ';',
[KEY_SEMICOLON] = 's',
[KEY_SPACE] = ' ',
[KEY_COMMA] = 'w',
[KEY_DOT] = 'v',
[KEY_SLASH] = 'z',
[KEY_LEFTBRACE] = '/',
[KEY_RIGHTBRACE] = '=',
[KEY_BACKSLASH] = '\\',
[KEY_MINUS] = '[',
[KEY_EQUAL] = ']',
[KEY_APOSTROPHE] = '-',
[KEY_GRAVE] = '`',
[KEY_ENTER] = '\r',
[KEY_TAB] = '\t',
};
char
keymap_lookup(int code)
{
if (code < 0 || array_size(keymap) <= code)
return 0;
return keymap[code];
}
char
keymap_lookup_shifted(int code)
{
if (code < 0 || array_size(shifted_keymap) <= code)
return 0;
return shifted_keymap[code];
}