Fixed bug with striping key names of trailing and starting whitespace before using them for SDL_GetKeyFromName

dev
shariq 8 years ago
parent e5f5a9399d
commit 4f214da550
  1. 2
      README.md
  2. 9
      src/game/platform.c
  3. 1
      src/libsymmetry/input.c

@ -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

@ -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)

@ -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);

Loading…
Cancel
Save