Use available translations for shortcut keys.

This commit is contained in:
Aaron van Geffen 2019-10-26 20:46:06 +02:00
parent 9bf2cffbb7
commit e3b0c52086
2 changed files with 272 additions and 158 deletions

View File

@ -11,6 +11,7 @@
#include <SDL.h>
#include <algorithm>
#include <map>
#include <openrct2/PlatformEnvironment.h>
#include <openrct2/common.h>
#include <openrct2/core/Console.hpp>
@ -153,7 +154,122 @@ std::string KeyboardShortcuts::GetShortcutString(int32_t shortcut) const
format_string(formatBuffer, sizeof(formatBuffer), STR_CMD_PLUS, nullptr);
String::Append(buffer, sizeof(buffer), formatBuffer);
}
String::Append(buffer, sizeof(buffer), SDL_GetKeyName(SDL_GetKeyFromScancode((SDL_Scancode)(shortcutKey & 0xFF))));
static const std::map<const SDL_Scancode, const rct_string_id> specialCharNames = {
{ SDL_SCANCODE_BACKSPACE, STR_SHORTCUT_BACKSPACE },
{ SDL_SCANCODE_TAB, STR_SHORTCUT_TAB },
{ SDL_SCANCODE_CLEAR, STR_SHORTCUT_CLEAR },
{ SDL_SCANCODE_RETURN, STR_SHORTCUT_RETURN },
{ SDL_SCANCODE_LALT, STR_SHORTCUT_ALT },
{ SDL_SCANCODE_PAUSE, STR_SHORTCUT_PAUSE },
{ SDL_SCANCODE_CAPSLOCK, STR_SHORTCUT_CAPS },
{ SDL_SCANCODE_ESCAPE, STR_SHORTCUT_ESCAPE },
{ SDL_SCANCODE_SPACE, STR_SHORTCUT_SPACEBAR },
{ SDL_SCANCODE_PAGEUP, STR_SHORTCUT_PGUP },
{ SDL_SCANCODE_PAGEDOWN, STR_SHORTCUT_PGDN },
{ SDL_SCANCODE_END, STR_SHORTCUT_END },
{ SDL_SCANCODE_HOME, STR_SHORTCUT_HOME },
{ SDL_SCANCODE_LEFT, STR_SHORTCUT_LEFT },
{ SDL_SCANCODE_UP, STR_SHORTCUT_UP },
{ SDL_SCANCODE_RIGHT, STR_SHORTCUT_RIGHT },
{ SDL_SCANCODE_DOWN, STR_SHORTCUT_DOWN },
{ SDL_SCANCODE_SELECT, STR_SHORTCUT_SELECT },
{ SDL_SCANCODE_PRINTSCREEN, STR_SHORTCUT_PRINT },
{ SDL_SCANCODE_EXECUTE, STR_SHORTCUT_EXECUTE },
{ SDL_SCANCODE_SYSREQ, STR_SHORTCUT_SNAPSHOT },
{ SDL_SCANCODE_INSERT, STR_SHORTCUT_INSERT },
{ SDL_SCANCODE_DELETE, STR_SHORTCUT_DELETE },
{ SDL_SCANCODE_HELP, STR_SHORTCUT_HELP },
{ SDL_SCANCODE_0, STR_SHORTCUT_0 },
{ SDL_SCANCODE_1, STR_SHORTCUT_1 },
{ SDL_SCANCODE_2, STR_SHORTCUT_2 },
{ SDL_SCANCODE_3, STR_SHORTCUT_3 },
{ SDL_SCANCODE_4, STR_SHORTCUT_4 },
{ SDL_SCANCODE_5, STR_SHORTCUT_5 },
{ SDL_SCANCODE_6, STR_SHORTCUT_6 },
{ SDL_SCANCODE_7, STR_SHORTCUT_7 },
{ SDL_SCANCODE_8, STR_SHORTCUT_8 },
{ SDL_SCANCODE_9, STR_SHORTCUT_9 },
{ SDL_SCANCODE_A, STR_SHORTCUT_A },
{ SDL_SCANCODE_B, STR_SHORTCUT_B },
{ SDL_SCANCODE_C, STR_SHORTCUT_C },
{ SDL_SCANCODE_D, STR_SHORTCUT_D },
{ SDL_SCANCODE_E, STR_SHORTCUT_E },
{ SDL_SCANCODE_F, STR_SHORTCUT_F },
{ SDL_SCANCODE_G, STR_SHORTCUT_G },
{ SDL_SCANCODE_H, STR_SHORTCUT_H },
{ SDL_SCANCODE_I, STR_SHORTCUT_I },
{ SDL_SCANCODE_J, STR_SHORTCUT_J },
{ SDL_SCANCODE_K, STR_SHORTCUT_K },
{ SDL_SCANCODE_L, STR_SHORTCUT_L },
{ SDL_SCANCODE_M, STR_SHORTCUT_M },
{ SDL_SCANCODE_N, STR_SHORTCUT_N },
{ SDL_SCANCODE_O, STR_SHORTCUT_O },
{ SDL_SCANCODE_P, STR_SHORTCUT_P },
{ SDL_SCANCODE_Q, STR_SHORTCUT_Q },
{ SDL_SCANCODE_R, STR_SHORTCUT_R },
{ SDL_SCANCODE_S, STR_SHORTCUT_S },
{ SDL_SCANCODE_T, STR_SHORTCUT_T },
{ SDL_SCANCODE_U, STR_SHORTCUT_U },
{ SDL_SCANCODE_V, STR_SHORTCUT_V },
{ SDL_SCANCODE_W, STR_SHORTCUT_W },
{ SDL_SCANCODE_X, STR_SHORTCUT_X },
{ SDL_SCANCODE_Y, STR_SHORTCUT_Y },
{ SDL_SCANCODE_Z, STR_SHORTCUT_Z },
{ SDL_SCANCODE_APPLICATION, STR_SHORTCUT_MENU },
{ SDL_SCANCODE_KP_0, STR_SHORTCUT_NUMPAD_0 },
{ SDL_SCANCODE_KP_1, STR_SHORTCUT_NUMPAD_1 },
{ SDL_SCANCODE_KP_2, STR_SHORTCUT_NUMPAD_2 },
{ SDL_SCANCODE_KP_3, STR_SHORTCUT_NUMPAD_3 },
{ SDL_SCANCODE_KP_4, STR_SHORTCUT_NUMPAD_4 },
{ SDL_SCANCODE_KP_5, STR_SHORTCUT_NUMPAD_5 },
{ SDL_SCANCODE_KP_6, STR_SHORTCUT_NUMPAD_6 },
{ SDL_SCANCODE_KP_7, STR_SHORTCUT_NUMPAD_7 },
{ SDL_SCANCODE_KP_8, STR_SHORTCUT_NUMPAD_8 },
{ SDL_SCANCODE_KP_9, STR_SHORTCUT_NUMPAD_9 },
{ SDL_SCANCODE_KP_MULTIPLY, STR_SHORTCUT_NUMPAD_MULTIPLY },
{ SDL_SCANCODE_KP_PLUS, STR_SHORTCUT_NUMPAD_PLUS },
{ SDL_SCANCODE_KP_MINUS, STR_SHORTCUT_NUMPAD_MINUS },
{ SDL_SCANCODE_KP_PERIOD, STR_SHORTCUT_NUMPAD_PERIOD },
{ SDL_SCANCODE_KP_DIVIDE, STR_SHORTCUT_NUMPAD_DIVIDE },
{ SDL_SCANCODE_F1, STR_SHORTCUT_F1 },
{ SDL_SCANCODE_F2, STR_SHORTCUT_F2 },
{ SDL_SCANCODE_F3, STR_SHORTCUT_F3 },
{ SDL_SCANCODE_F4, STR_SHORTCUT_F4 },
{ SDL_SCANCODE_F5, STR_SHORTCUT_F5 },
{ SDL_SCANCODE_F6, STR_SHORTCUT_F6 },
{ SDL_SCANCODE_F7, STR_SHORTCUT_F7 },
{ SDL_SCANCODE_F8, STR_SHORTCUT_F8 },
{ SDL_SCANCODE_F9, STR_SHORTCUT_F9 },
{ SDL_SCANCODE_F10, STR_SHORTCUT_F10 },
{ SDL_SCANCODE_F11, STR_SHORTCUT_F11 },
{ SDL_SCANCODE_F12, STR_SHORTCUT_F12 },
{ SDL_SCANCODE_F13, STR_SHORTCUT_F13 },
{ SDL_SCANCODE_F14, STR_SHORTCUT_F14 },
{ SDL_SCANCODE_F15, STR_SHORTCUT_F15 },
{ SDL_SCANCODE_F16, STR_SHORTCUT_F16 },
{ SDL_SCANCODE_F17, STR_SHORTCUT_F17 },
{ SDL_SCANCODE_F18, STR_SHORTCUT_F18 },
{ SDL_SCANCODE_F19, STR_SHORTCUT_F19 },
{ SDL_SCANCODE_F20, STR_SHORTCUT_F20 },
{ SDL_SCANCODE_F21, STR_SHORTCUT_F21 },
{ SDL_SCANCODE_F22, STR_SHORTCUT_F22 },
{ SDL_SCANCODE_F23, STR_SHORTCUT_F23 },
{ SDL_SCANCODE_F24, STR_SHORTCUT_F24 },
{ SDL_SCANCODE_NUMLOCKCLEAR, STR_SHORTCUT_NUMLOCK },
{ SDL_SCANCODE_SCROLLLOCK, STR_SHORTCUT_SCROLL },
};
SDL_Scancode scanCode = static_cast<SDL_Scancode>(shortcutKey & 0xFF);
auto keyPair = specialCharNames.find(scanCode);
if (keyPair != specialCharNames.end())
{
format_string(formatBuffer, sizeof(formatBuffer), keyPair->second, nullptr);
String::Append(buffer, sizeof(buffer), formatBuffer);
}
else
String::Append(buffer, sizeof(buffer), SDL_GetKeyName(SDL_GetKeyFromScancode(scanCode)));
return std::string(buffer);
}

View File

@ -1927,163 +1927,161 @@ enum
STR_SHORTCUT_SHOW_RECENT_MESSAGES = 2522,
STR_SHORTCUT_SHOW_MAP = 2523,
STR_SHORTCUT_SCREENSHOT = 2524,
STR_SHORTCUT_KEY_UNKNOWN = 2525,
// STR_2525 :???
// STR_2526 :???
// STR_2527 :???
// STR_2528 :???
// STR_2529 :???
// STR_2530 :???
// STR_2531 :???
// STR_2532 :???
// STR_2533 :Backspace
// STR_2534 :Tab
// STR_2535 :???
// STR_2536 :???
// STR_2537 :Clear
// STR_2538 :Return
// STR_2539 :???
// STR_2540 :???
// STR_2541 :???
// STR_2542 :???
// STR_2543 :Alt/Menu
// STR_2544 :Pause
// STR_2545 :Caps
// STR_2546 :???
// STR_2547 :???
// STR_2548 :???
// STR_2549 :???
// STR_2550 :???
// STR_2551 :???
// STR_2552 :Escape
// STR_2553 :???
// STR_2554 :???
// STR_2555 :???
// STR_2556 :???
// STR_2557 :Spacebar
// STR_2558 :PgUp
// STR_2559 :PgDn
// STR_2560 :End
// STR_2561 :Home
// STR_2562 :Left
// STR_2563 :Up
// STR_2564 :Right
// STR_2565 :Down
// STR_2566 :Select
// STR_2567 :Print
// STR_2568 :Execute
// STR_2569 :Snapshot
// STR_2570 :Insert
// STR_2571 :Delete
// STR_2572 :Help
// STR_2573 :0
// STR_2574 :1
// STR_2575 :2
// STR_2576 :3
// STR_2577 :4
// STR_2578 :5
// STR_2579 :6
// STR_2580 :7
// STR_2581 :8
// STR_2582 :9
// STR_2583 :???
// STR_2584 :???
// STR_2585 :???
// STR_2586 :???
// STR_2587 :???
// STR_2588 :???
// STR_2589 :???
// STR_2590 :A
// STR_2591 :B
// STR_2592 :C
// STR_2593 :D
// STR_2594 :E
// STR_2595 :F
// STR_2596 :G
// STR_2597 :H
// STR_2598 :I
// STR_2599 :J
// STR_2600 :K
// STR_2601 :L
// STR_2602 :M
// STR_2603 :N
// STR_2604 :O
// STR_2605 :P
// STR_2606 :Q
// STR_2607 :R
// STR_2608 :S
// STR_2609 :T
// STR_2610 :U
// STR_2611 :V
// STR_2612 :W
// STR_2613 :X
// STR_2614 :Y
// STR_2615 :Z
// STR_2616 :???
// STR_2617 :???
// STR_2618 :Menu
// STR_2619 :???
// STR_2620 :???
// STR_2621 :NumPad 0
// STR_2622 :NumPad 1
// STR_2623 :NumPad 2
// STR_2624 :NumPad 3
// STR_2625 :NumPad 4
// STR_2626 :NumPad 5
// STR_2627 :NumPad 6
// STR_2628 :NumPad 7
// STR_2629 :NumPad 8
// STR_2630 :NumPad 9
// STR_2631 :NumPad *
// STR_2632 :NumPad +
// STR_2633 :???
// STR_2634 :NumPad -
// STR_2635 :NumPad .
// STR_2636 :NumPad /
// STR_2637 :F1
// STR_2638 :F2
// STR_2639 :F3
// STR_2640 :F4
// STR_2641 :F5
// STR_2642 :F6
// STR_2643 :F7
// STR_2644 :F8
// STR_2645 :F9
// STR_2646 :F10
// STR_2647 :F11
// STR_2648 :F12
// STR_2649 :F13
// STR_2650 :F14
// STR_2651 :F15
// STR_2652 :F16
// STR_2653 :F17
// STR_2654 :F18
// STR_2655 :F19
// STR_2656 :F20
// STR_2657 :F21
// STR_2658 :F22
// STR_2659 :F23
// STR_2660 :F24
// STR_2661 :???
// STR_2662 :???
// STR_2663 :???
// STR_2664 :???
// STR_2665 :???
// STR_2666 :???
// STR_2667 :???
// STR_2668 :???
// STR_2669 :NumLock
// STR_2670 :Scroll
// STR_2671 :???
// STR_2672 :???
// STR_2673 :???
// STR_2674 :???
// STR_2675 :???
// STR_2676 :???
// STR_2677 :???
// STR_2678 :???
// STR_2679 :???
STR_SHORTCUT_UNKNOWN_2525 = 2525,
STR_SHORTCUT_UNKNOWN_2526 = 2526,
STR_SHORTCUT_UNKNOWN_2527 = 2527,
STR_SHORTCUT_UNKNOWN_2528 = 2528,
STR_SHORTCUT_UNKNOWN_2529 = 2529,
STR_SHORTCUT_UNKNOWN_2530 = 2530,
STR_SHORTCUT_UNKNOWN_2531 = 2531,
STR_SHORTCUT_UNKNOWN_2532 = 2532,
STR_SHORTCUT_BACKSPACE = 2533,
STR_SHORTCUT_TAB = 2534,
STR_SHORTCUT_UNKNOWN_2535 = 2535,
STR_SHORTCUT_UNKNOWN_2536 = 2536,
STR_SHORTCUT_CLEAR = 2537,
STR_SHORTCUT_RETURN = 2538,
STR_SHORTCUT_UNKNOWN_2539 = 2539,
STR_SHORTCUT_UNKNOWN_2540 = 2540,
STR_SHORTCUT_UNKNOWN_2541 = 2541,
STR_SHORTCUT_UNKNOWN_2542 = 2542,
STR_SHORTCUT_ALT = 2543,
STR_SHORTCUT_PAUSE = 2544,
STR_SHORTCUT_CAPS = 2545,
STR_SHORTCUT_UNKNOWN_2546 = 2546,
STR_SHORTCUT_UNKNOWN_2547 = 2547,
STR_SHORTCUT_UNKNOWN_2548 = 2548,
STR_SHORTCUT_UNKNOWN_2549 = 2549,
STR_SHORTCUT_UNKNOWN_2550 = 2550,
STR_SHORTCUT_UNKNOWN_2551 = 2551,
STR_SHORTCUT_ESCAPE = 2552,
STR_SHORTCUT_UNKNOWN_2553 = 2553,
STR_SHORTCUT_UNKNOWN_2554 = 2554,
STR_SHORTCUT_UNKNOWN_2555 = 2555,
STR_SHORTCUT_UNKNOWN_2556 = 2556,
STR_SHORTCUT_SPACEBAR = 2557,
STR_SHORTCUT_PGUP = 2558,
STR_SHORTCUT_PGDN = 2559,
STR_SHORTCUT_END = 2560,
STR_SHORTCUT_HOME = 2561,
STR_SHORTCUT_LEFT = 2562,
STR_SHORTCUT_UP = 2563,
STR_SHORTCUT_RIGHT = 2564,
STR_SHORTCUT_DOWN = 2565,
STR_SHORTCUT_SELECT = 2566,
STR_SHORTCUT_PRINT = 2567,
STR_SHORTCUT_EXECUTE = 2568,
STR_SHORTCUT_SNAPSHOT = 2569,
STR_SHORTCUT_INSERT = 2570,
STR_SHORTCUT_DELETE = 2571,
STR_SHORTCUT_HELP = 2572,
STR_SHORTCUT_0 = 2573,
STR_SHORTCUT_1 = 2574,
STR_SHORTCUT_2 = 2575,
STR_SHORTCUT_3 = 2576,
STR_SHORTCUT_4 = 2577,
STR_SHORTCUT_5 = 2578,
STR_SHORTCUT_6 = 2579,
STR_SHORTCUT_7 = 2580,
STR_SHORTCUT_8 = 2581,
STR_SHORTCUT_9 = 2582,
STR_SHORTCUT_UNKNOWN_2583 = 2583,
STR_SHORTCUT_UNKNOWN_2584 = 2584,
STR_SHORTCUT_UNKNOWN_2585 = 2585,
STR_SHORTCUT_UNKNOWN_2586 = 2586,
STR_SHORTCUT_UNKNOWN_2587 = 2587,
STR_SHORTCUT_UNKNOWN_2588 = 2588,
STR_SHORTCUT_UNKNOWN_2589 = 2589,
STR_SHORTCUT_A = 2590,
STR_SHORTCUT_B = 2591,
STR_SHORTCUT_C = 2592,
STR_SHORTCUT_D = 2593,
STR_SHORTCUT_E = 2594,
STR_SHORTCUT_F = 2595,
STR_SHORTCUT_G = 2596,
STR_SHORTCUT_H = 2597,
STR_SHORTCUT_I = 2598,
STR_SHORTCUT_J = 2599,
STR_SHORTCUT_K = 2600,
STR_SHORTCUT_L = 2601,
STR_SHORTCUT_M = 2602,
STR_SHORTCUT_N = 2603,
STR_SHORTCUT_O = 2604,
STR_SHORTCUT_P = 2605,
STR_SHORTCUT_Q = 2606,
STR_SHORTCUT_R = 2607,
STR_SHORTCUT_S = 2608,
STR_SHORTCUT_T = 2609,
STR_SHORTCUT_U = 2610,
STR_SHORTCUT_V = 2611,
STR_SHORTCUT_W = 2612,
STR_SHORTCUT_X = 2613,
STR_SHORTCUT_Y = 2614,
STR_SHORTCUT_Z = 2615,
STR_SHORTCUT_UNKNOWN_2616 = 2616,
STR_SHORTCUT_UNKNOWN_2617 = 2617,
STR_SHORTCUT_MENU = 2618,
STR_SHORTCUT_UNKNOWN_2619 = 2619,
STR_SHORTCUT_UNKNOWN_2620 = 2620,
STR_SHORTCUT_NUMPAD_0 = 2621,
STR_SHORTCUT_NUMPAD_1 = 2622,
STR_SHORTCUT_NUMPAD_2 = 2623,
STR_SHORTCUT_NUMPAD_3 = 2624,
STR_SHORTCUT_NUMPAD_4 = 2625,
STR_SHORTCUT_NUMPAD_5 = 2626,
STR_SHORTCUT_NUMPAD_6 = 2627,
STR_SHORTCUT_NUMPAD_7 = 2628,
STR_SHORTCUT_NUMPAD_8 = 2629,
STR_SHORTCUT_NUMPAD_9 = 2630,
STR_SHORTCUT_NUMPAD_MULTIPLY = 2631,
STR_SHORTCUT_NUMPAD_PLUS = 2632,
STR_SHORTCUT_UNKNOWN_2633 = 2633,
STR_SHORTCUT_NUMPAD_MINUS = 2634,
STR_SHORTCUT_NUMPAD_PERIOD = 2635,
STR_SHORTCUT_NUMPAD_DIVIDE = 2636,
STR_SHORTCUT_F1 = 2637,
STR_SHORTCUT_F2 = 2638,
STR_SHORTCUT_F3 = 2639,
STR_SHORTCUT_F4 = 2640,
STR_SHORTCUT_F5 = 2641,
STR_SHORTCUT_F6 = 2642,
STR_SHORTCUT_F7 = 2643,
STR_SHORTCUT_F8 = 2644,
STR_SHORTCUT_F9 = 2645,
STR_SHORTCUT_F10 = 2646,
STR_SHORTCUT_F11 = 2647,
STR_SHORTCUT_F12 = 2648,
STR_SHORTCUT_F13 = 2649,
STR_SHORTCUT_F14 = 2650,
STR_SHORTCUT_F15 = 2651,
STR_SHORTCUT_F16 = 2652,
STR_SHORTCUT_F17 = 2653,
STR_SHORTCUT_F18 = 2654,
STR_SHORTCUT_F19 = 2655,
STR_SHORTCUT_F20 = 2656,
STR_SHORTCUT_F21 = 2657,
STR_SHORTCUT_F22 = 2658,
STR_SHORTCUT_F23 = 2659,
STR_SHORTCUT_F24 = 2660,
STR_SHORTCUT_UNKNOWN_2661 = 2661,
STR_SHORTCUT_UNKNOWN_2662 = 2662,
STR_SHORTCUT_UNKNOWN_2663 = 2663,
STR_SHORTCUT_UNKNOWN_2664 = 2664,
STR_SHORTCUT_UNKNOWN_2665 = 2665,
STR_SHORTCUT_UNKNOWN_2666 = 2666,
STR_SHORTCUT_UNKNOWN_2667 = 2667,
STR_SHORTCUT_UNKNOWN_2668 = 2668,
STR_SHORTCUT_NUMLOCK = 2669,
STR_SHORTCUT_SCROLL = 2670,
STR_SHORTCUT_UNKNOWN_2671 = 2671,
STR_SHORTCUT_UNKNOWN_2672 = 2672,
STR_SHORTCUT_UNKNOWN_2673 = 2673,
STR_SHORTCUT_UNKNOWN_2674 = 2674,
STR_SHORTCUT_UNKNOWN_2675 = 2675,
STR_SHORTCUT_UNKNOWN_2676 = 2676,
STR_SHORTCUT_UNKNOWN_2677 = 2677,
STR_SHORTCUT_UNKNOWN_2678 = 2678,
STR_SHORTCUT_UNKNOWN_2679 = 2679,
STR_RESEARCH_COMPLETED_AL = 2680,
STR_CHEAT_5K_MONEY_TIP = 2681,
// STR_2682 :<removed string - do not use>