diff --git a/glfw/cocoa_window.m b/glfw/cocoa_window.m index 2550a3b43..9f2e46b82 100644 --- a/glfw/cocoa_window.m +++ b/glfw/cocoa_window.m @@ -288,10 +288,16 @@ static int translateKey(unsigned int key, bool apply_keymap) { if (apply_keymap) { // Look for the effective key name after applying any keyboard layouts/mappings - const char *name = _glfwPlatformGetScancodeName(key); - if (name && name[1] == 0) { - // Single letter key name - switch(name[0]) { + const char *name_chars = _glfwPlatformGetScancodeName(key); + uint32_t name = 0; + for (int i = 0; i < 4; i++) { + if (!name_chars[i]) break; + name <<= 8; + name |= (uint8_t)name_chars[i]; + } + if (name) { + // Key name + switch(name) { #define K(ch, name) case ch: return GLFW_KEY_##name K('A', A); K('a', A); K('B', B); K('b', B);