diff --git a/src/core.h b/src/core.h index 37c587a..27611e1 100644 --- a/src/core.h +++ b/src/core.h @@ -142,6 +142,9 @@ enum InputKey { ikNone, ik0, ik1, ik2, ik3, ik4, ik5, ik6, ik7, ik8, ik9, ikA, ikB, ikC, ikD, ikE, ikF, ikG, ikH, ikI, ikJ, ikK, ikL, ikM, ikN, ikO, ikP, ikQ, ikR, ikS, ikT, ikU, ikV, ikW, ikX, ikY, ikZ, + ikN0, ikN1, ikN2, ikN3, ikN4, ikN5, ikN6, ikN7, ikN8, ikN9, ikNAdd, ikNSub, ikNMul, ikNDiv, ikNDot, + ikF1, ikF2, ikF3, ikF4, ikF5, ikF6, ikF7, ikF8, ikF9, ikF10, ikF11, ikF12, + ikMinus, ikPlus, ikLSB, ikRSB, ikSlash, ikBSlash, ikComa, ikDot, ikTilda, ikColon, ikApos, ikPrev, ikNext, ikHome, ikEnd, ikDel, ikIns, ikBack, // mouse ikMouseL, ikMouseR, ikMouseM, // touch diff --git a/src/input.h b/src/input.h index 55cc0b3..202f828 100644 --- a/src/input.h +++ b/src/input.h @@ -88,7 +88,7 @@ namespace Input { } down[key] = value; - if (value && key <= ikZ) { + if (value && key <= ikBack) { lastKey = key; touchTimerVis = 0.0f; } diff --git a/src/lang.h b/src/lang.h index 291566d..5a1edd3 100644 --- a/src/lang.h +++ b/src/lang.h @@ -92,7 +92,7 @@ enum StringID { , STR_CTRL_LAST = STR_CTRL_FIRST + cMAX - 1 // keys , STR_KEY_FIRST - , STR_KEY_LAST = STR_KEY_FIRST + ikZ + , STR_KEY_LAST = STR_KEY_FIRST + ikBack // gamepad , STR_JOY_FIRST , STR_JOY_LAST = STR_JOY_FIRST + jkMAX - 1 @@ -258,6 +258,9 @@ enum StringID { , "0", "1", "2", "3", "4", "5", "6", "7", "8", "9" \ , "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M" \ , "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z" \ + , "PAD0", "PAD1", "PAD2", "PAD3", "PAD4", "PAD5", "PAD6", "PAD7", "PAD8", "PAD9", "PAD+", "PAD-", "PADx", "PAD/", "PAD." \ + , "F1", "F2", "F3", "F4", "F5", "F6", "F7", "F8", "F9", "F10", "F11", "F12" \ + , "-", "+", "<", ">", "/", "\\", ",", ".", "$", ":", "'", "PGUP", "PGDN", "HOME", "END", "DEL", "INS", "BKSP" \ , "NONE", "A", "B", "X", "Y", "L BUMPER", "R BUMPER", "SELECT", "START", "L STICK", "R STICK", "L TRIGGER", "R TRIGGER", "D-LEFT", "D-RIGHT", "D-UP", "D-DOWN" const char *helpText = diff --git a/src/platform/web/main.cpp b/src/platform/web/main.cpp index d1bdd0a..c7ece32 100644 --- a/src/platform/web/main.cpp +++ b/src/platform/web/main.cpp @@ -272,11 +272,16 @@ InputKey keyToInputKey(int code) { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', + 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6B, 0x6D, 0x6A, 0x6F, 0x6E, + 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7A, 0x7B, + 0xBB, 0xBD, 0xDB, 0xDD, 0xBF, 0xDC, 0xBC, 0xBE, 0xC0, 0xBA, 0xDE, 0x21, 0x22, 0x24, 0x23, 0x2E, 0x2D, 0x08 }; - for (int i = 0; i < sizeof(codes) / sizeof(codes[0]); i++) - if (codes[i] == code) + for (int i = 0; i < COUNT(codes); i++) { + if (codes[i] == code) { return (InputKey)(ikLeft + i); + } + } return ikNone; } diff --git a/src/platform/win/main.cpp b/src/platform/win/main.cpp index 57b34d4..7c04f3f 100644 --- a/src/platform/win/main.cpp +++ b/src/platform/win/main.cpp @@ -79,11 +79,16 @@ InputKey keyToInputKey(int code) { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', + VK_NUMPAD0, VK_NUMPAD1, VK_NUMPAD2, VK_NUMPAD3, VK_NUMPAD4, VK_NUMPAD5, VK_NUMPAD6, VK_NUMPAD7, VK_NUMPAD8, VK_NUMPAD9, VK_ADD, VK_SUBTRACT, VK_MULTIPLY, VK_DIVIDE, VK_DECIMAL, + VK_F1, VK_F2, VK_F3, VK_F4, VK_F5, VK_F6, VK_F7, VK_F8, VK_F9, VK_F10, VK_F11, VK_F12, + VK_OEM_MINUS, VK_OEM_PLUS, VK_OEM_4, VK_OEM_6, VK_OEM_2, VK_OEM_5, VK_OEM_COMMA, VK_OEM_PERIOD, VK_OEM_3, VK_OEM_1, VK_OEM_7, VK_PRIOR, VK_NEXT, VK_HOME, VK_END, VK_DELETE, VK_INSERT, VK_BACK, }; - for (int i = 0; i < sizeof(codes) / sizeof(codes[0]); i++) - if (codes[i] == code) + for (int i = 0; i < COUNT(codes); i++) { + if (codes[i] == code) { return (InputKey)(ikLeft + i); + } + } return ikNone; } diff --git a/src/ui.h b/src/ui.h index 0c11522..d6505e3 100644 --- a/src/ui.h +++ b/src/ui.h @@ -161,7 +161,7 @@ namespace UI { if (c == '\xBF') c = '?'; if (c == '\xA1') c = '!'; - if (skipChar(c)) { + if (skipChar(c) && *text && *text != '@') { // } else if (c == ' ' || c == '_') { x += 6; @@ -193,7 +193,7 @@ namespace UI { if (c == '\xBF') c = '?'; if (c == '\xA1') c = '!'; - if (skipChar(c)) { + if (skipChar(c) && *text && *text != '@') { // } else if (c == ' ' || c == '_') { x += 6; @@ -344,7 +344,7 @@ namespace UI { if (charFrame == '{') charFrame = '('; int frame = charRemap(charFrame); - if (c == '+') frame = CHAR_SPR_TILDA; + if (c == '+' && *text && *text != '@') frame = CHAR_SPR_TILDA; if (c == 'i' && skipChar(lastChar)) frame = CHAR_SPR_I; lastChar = c; @@ -365,7 +365,7 @@ namespace UI { } } - bool isSkipChar = skipChar(c); + bool isSkipChar = skipChar(c) && *text && *text != '@'; if (isSkipChar) { int idx = charRemap(remapCyrillic(*text));