HATPC/engine/keymaps.c

156 lines
3.8 KiB
C

#include "keymaps.h"
#include "raylib.h"
/**
* The raylib's version doesn't cover all keys,
* so manually create the name for each relevant key.
*
* Since it is a string, need them to exist statically.
* So do a static table.
*
* Separate table for different ranges to save a little
* memory?
*
* This is the dumb but straightforward way.
* May be memory-inefficient and a little slow.
*
*/
static const char* KEYNAMES_MAPPING_39[] = {
[KEY_APOSTROPHE-39] = "'",
[1] = "",
[2] = "",
[3] = "",
[4] = "",
[KEY_COMMA-39] = ",",
[KEY_MINUS-39] = "-",
[KEY_PERIOD-39] = ",",
[KEY_SLASH-39] = "/",
[KEY_ZERO-39] = "0",
[KEY_ONE-39] = "1",
[KEY_TWO-39] = "2",
[KEY_THREE-39] = "3",
[KEY_FOUR-39] = "4",
[KEY_FIVE-39] = "5",
[KEY_SIX-39] = "6",
[KEY_SEVEN-39] = "7",
[KEY_EIGHT-39] = "8",
[KEY_NINE-39] = "9",
[KEY_SEMICOLON-39] = ";",
[KEY_EQUAL-39] = "=",
[KEY_A-39] = "A",
[KEY_B-39] = "B",
[KEY_C-39] = "C",
[KEY_D-39] = "D",
[KEY_E-39] = "E",
[KEY_F-39] = "F",
[KEY_G-39] = "G",
[KEY_H-39] = "H",
[KEY_I-39] = "I",
[KEY_J-39] = "J",
[KEY_K-39] = "K",
[KEY_L-39] = "L",
[KEY_M-39] = "M",
[KEY_N-39] = "N",
[KEY_O-39] = "O",
[KEY_P-39] = "P",
[KEY_Q-39] = "Q",
[KEY_R-39] = "R",
[KEY_S-39] = "S",
[KEY_T-39] = "T",
[KEY_U-39] = "U",
[KEY_V-39] = "V",
[KEY_W-39] = "W",
[KEY_X-39] = "X",
[KEY_Y-39] = "Y",
[KEY_Z-39] = "Z",
[KEY_LEFT_BRACKET-39] = "[",
[KEY_BACKSLASH-39] = "\\",
[KEY_RIGHT_BRACKET-39] = "]",
[KEY_GRAVE-39] = "`",
};
//Mapping for key after 255
static const char* KEYNAMES_MAPPING_256[] = {
[KEY_ESCAPE-256] = "",
[KEY_ENTER-256] = "",
[KEY_TAB-256] = "TAB",
[KEY_BACKSPACE-256] = "",
[KEY_INSERT-256] = "INSERT",
[KEY_DELETE-256] = "DELETE",
[KEY_RIGHT-256] = "RIGHT",
[KEY_LEFT-256] = "LEFT",
[KEY_DOWN-256] = "DOWN",
[KEY_UP-256] = "UP",
[KEY_PAGE_UP-256] = "PG UP",
[KEY_PAGE_DOWN-256] = "PG DOWN",
[KEY_HOME-256] = "HOME",
[KEY_END-256] = "END",
[KEY_CAPS_LOCK-256] = "CAPLOCKS",
[KEY_SCROLL_LOCK-256] = "SCR LCK",
[KEY_NUM_LOCK-256] = "",
[KEY_PRINT_SCREEN-256] = "PRT SCN",
[KEY_PAUSE-256] = "PAUSE",
[KEY_F1-256] = "F1",
[KEY_F2-256] = "F2",
[KEY_F3-256] = "F3",
[KEY_F4-256] = "F4",
[KEY_F5-256] = "F5",
[KEY_F6-256] = "F6",
[KEY_F7-256] = "F7",
[KEY_F8-256] = "F8",
[KEY_F9-256] = "F9",
[KEY_F10-256] = "F10",
[KEY_F11-256] = "F11",
[KEY_F12-256] = "F12",
[KEY_LEFT_SHIFT-256] = "LSHIFT",
[KEY_LEFT_CONTROL-256] = "LCTRL",
[KEY_LEFT_ALT-256] = "LALT",
[KEY_LEFT_SUPER-256] = "",
[KEY_RIGHT_SHIFT-256] = "RSHIFT",
[KEY_RIGHT_CONTROL-256] = "RCTRL",
[KEY_RIGHT_ALT-256] = "RALT",
[KEY_RIGHT_SUPER-256] = "",
[KEY_KB_MENU-256] = "",
[KEY_KP_0-256] = "KPad 0",
[KEY_KP_1-256] = "KPad 1",
[KEY_KP_2-256] = "KPad 2",
[KEY_KP_3-256] = "KPad 3",
[KEY_KP_4-256] = "KPad 4",
[KEY_KP_5-256] = "KPad 5",
[KEY_KP_6-256] = "KPad 6",
[KEY_KP_7-256] = "KPad 7",
[KEY_KP_8-256] = "KPad 8",
[KEY_KP_9-256] = "KPad 9",
[KEY_KP_DECIMAL-256] = "",
[KEY_KP_DIVIDE-256] = "",
[KEY_KP_MULTIPLY-256] = "",
[KEY_KP_SUBTRACT-256] = "",
[KEY_KP_ADD-256] = "",
[KEY_KP_ENTER-256] = "",
[KEY_KP_EQUAL-256] = "",
};
const char* ExtGetKeyName(int key)
{
if (key >= KEY_ESCAPE)
{
key -= KEY_ESCAPE;
return KEYNAMES_MAPPING_256[key];
}
if (key >= KEY_APOSTROPHE)
{
key -= KEY_APOSTROPHE;
return KEYNAMES_MAPPING_39[key];
}
if (key == KEY_SPACE)
{
return "SPACE";
}
return "";
}