diff options
Diffstat (limited to 'src/osk_gui.cpp')
-rw-r--r-- | src/osk_gui.cpp | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/src/osk_gui.cpp b/src/osk_gui.cpp index 42ff5b5bf..80a87edd5 100644 --- a/src/osk_gui.cpp +++ b/src/osk_gui.cpp @@ -299,14 +299,22 @@ void GetKeyboardLayout() if (StrEmpty(_keyboard_opt[1])) { GetString(keyboard[1], STR_OSK_KEYBOARD_LAYOUT_CAPS, lastof(keyboard[1])); } else { - strncpy(keyboard[0], _keyboard_opt[0], lengthof(keyboard[1])); + strncpy(keyboard[1], _keyboard_opt[1], lengthof(keyboard[1])); } for (uint j = 0; j < 2; j++) { const char *kbd = keyboard[j]; + bool ended = false; for (uint i = 0; i < OSK_KEYBOARD_ENTRIES; i++) { _keyboard[j][i] = Utf8Consume(&kbd); + /* Be lenient when the last characters are missing (is quite normal) */ + if (_keyboard[j][i] == '\0' || ended) { + ended = true; + _keyboard[j][i] = ' '; + continue; + } + if (IsPrintable(_keyboard[j][i])) { errormark[j][i] = ' '; } else { |