diff --git a/key/goKey.h b/key/goKey.h index 77c1927..c66338d 100644 --- a/key/goKey.h +++ b/key/goKey.h @@ -143,6 +143,8 @@ int CheckKeyCodes(char* k, MMKeyCode *key){ if (strlen(k) == 1) { *key = keyCodeForChar(*k); + if (*key == K_NOT_A_KEY) + return -2; return 0; } diff --git a/key/keycode_c.h b/key/keycode_c.h index cb19f51..25891a6 100644 --- a/key/keycode_c.h +++ b/key/keycode_c.h @@ -79,7 +79,7 @@ MMKeyCode keyCodeForChar(const char c){ 128, &kCFCopyStringDictionaryKeyCallBacks, NULL); - if (charToCodeDict == NULL) return UINT16_MAX; + if (charToCodeDict == NULL) return K_NOT_A_KEY; /* Loop through every keycode (0 - 127) to find its current mapping. */ for (i = 0; i < 128; ++i) { @@ -100,9 +100,18 @@ MMKeyCode keyCodeForChar(const char c){ } CFRelease(charStr); + + if (code == UINT16_MAX) { + return K_NOT_A_KEY; + } + return (MMKeyCode)code; #elif defined(IS_WINDOWS) - return VkKeyScan(c); + CGKeyCode code; + code = VkKeyScan(c); + if (code == 0xFFFF) + return K_NOT_A_KEY; + return code; #elif defined(USE_X11) MMKeyCode code; @@ -125,6 +134,9 @@ MMKeyCode keyCodeForChar(const char c){ } } + if (code == NoSymbol) + return K_NOT_A_KEY; + return code; #endif }