glfwGetKeyName(int key) - Windows version consistency improvements

This commit is contained in:
Doug Binks 2013-08-15 17:41:29 +02:00
parent 5205f071a4
commit 2a59848c8f

View File

@ -1128,6 +1128,7 @@ const char*_glfwPlatformGetKeyName(int key)
UINT charVK;
WCHAR keyName[2];
int vkKey = 0;
int length;
free(_glfw.win32.keyName);
_glfw.win32.keyName = NULL;
@ -1200,11 +1201,39 @@ const char*_glfwPlatformGetKeyName(int key)
keyName[0] = charVK;
keyName[1] = 0;
_glfw.win32.keyName = _glfwCreateUTF8FromWideString(keyName);
// need to ensure common chars are interpreted similarily:
length = strlen(_glfw.win32.keyName);
if(length=1)
{
if(_glfw.win32.keyName[0]>='a' && _glfw.win32.keyName[0]<='z')
{
// Capitalize
_glfw.win32.keyName[0] += 'A'-'a';
}
switch(_glfw.win32.keyName[0])
{
case ' ': return "SPACE";
case '-': return "MINUS";
case '=': return "EQUAL";
case '[': return "LEFT BRACKET";
case ']': return "RIGHT BRACKET";
case '\\': return "BACKSLASH";
case ';': return "SEMICOLON";
case '\'': return "APOSTROPHE";
case '`': return "GRAVE ACCENT";
case ',': return "COMMA";
case '.': return "PERIOD";
case '/': return "SLASH";
default: break;
}
}
return _glfw.win32.keyName;
}
}
if( NULL == _glfw.win32.keyName )
{
// key could not be mapped or was not a printable key
// fall back to hard-coded values but do not set _glfw.win32.keyName
switch (key)
@ -1333,13 +1362,9 @@ const char*_glfwPlatformGetKeyName(int key)
case GLFW_KEY_RIGHT_SUPER: return "RIGHT SUPER";
case GLFW_KEY_MENU: return "MENU";
case GLFW_KEY_UNKNOWN: return "UNKNOWN";
default: return NULL;
}
}
return _glfw.win32.keyName;
return NULL;
}
//////////////////////////////////////////////////////////////////////////