From 12fb240b56288f9602a601eecc01886481d18b75 Mon Sep 17 00:00:00 2001 From: anatawa12 Date: Tue, 8 Sep 2020 21:00:46 +0900 Subject: [PATCH] returns "Invalid key code specified." if specified character is not valid --- key/goKey.h | 2 ++ key/keycode_c.h | 16 ++++++++++++++-- 2 files changed, 16 insertions(+), 2 deletions(-) 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 }