returns "Invalid key code specified." if specified character is not valid

This commit is contained in:
anatawa12 2020-09-08 21:00:46 +09:00
parent 484e86d55f
commit 12fb240b56
2 changed files with 16 additions and 2 deletions

View File

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

View File

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