diff --git a/README.md b/README.md index ff12a72..17e11e6 100644 --- a/README.md +++ b/README.md @@ -149,7 +149,6 @@ - ## TODO - - Fix bugs in stripping key name for input map - Modify entity loading logic to use the new parsing code - Implement sound/listener loading from scene file - Finish loading scene from file @@ -319,3 +318,4 @@ * Camera fbo params are now written to file when entity is saved * Fixed several bugs with entity loading * Removed duplicate parsing logic + * Fixed bugs in stripping key name for input map diff --git a/src/game/platform.c b/src/game/platform.c index d466afc..76bc5c0 100644 --- a/src/game/platform.c +++ b/src/game/platform.c @@ -425,11 +425,14 @@ int platform_key_from_name(const char* key_name) int start = 0; while(isspace(key_name[start]) != 0) start++; - int end = strlen(key_name); + int end = strlen(key_name) - 1; while(isspace(key_name[end]) != 0) end--; - strncpy(trimmed_key_name, &key_name[start], (end - start)); - return SDL_GetKeyFromName(trimmed_key_name); + strncpy(trimmed_key_name, &key_name[start], (end - start) + 1); + int key = SDL_GetKeyFromName(trimmed_key_name); + if(key == SDLK_UNKNOWN) + log_error("platform:key_from_name", "Unrecognized key '%s', SDL (%s)", trimmed_key_name, SDL_GetError()); + return key; } const char* platform_key_name_get(int key) diff --git a/src/libsymmetry/input.c b/src/libsymmetry/input.c index 2fcddc8..5149cea 100644 --- a/src/libsymmetry/input.c +++ b/src/libsymmetry/input.c @@ -116,7 +116,6 @@ void on_parser_assign(const char* key, const char* value, const char* filename, { memset(key_name, '\0', max_key_str_len); strncpy(key_name, start_loc, (keys - start_loc)); - log_message("key_name : %s", key_name); int key_modifier = platform->key_from_name(key_name);