diff options
| -rw-r--r-- | DDHotKeyUtilities.m | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/DDHotKeyUtilities.m b/DDHotKeyUtilities.m index 4c44ac1..f298a43 100644 --- a/DDHotKeyUtilities.m +++ b/DDHotKeyUtilities.m @@ -97,6 +97,14 @@ NSString *DDStringFromKeyCode(unsigned short keyCode, NSUInteger modifiers) { TISInputSourceRef currentKeyboard = TISCopyCurrentKeyboardInputSource(); CFDataRef uchr = (CFDataRef)TISGetInputSourceProperty(currentKeyboard, kTISPropertyUnicodeKeyLayoutData); + + // Fix crash using non-unicode layouts, such as Chinese or Japanese. + if (!uchr) { + CFRelease(currentKeyboard); + currentKeyboard = TISCopyCurrentASCIICapableKeyboardLayoutInputSource(); + uchr = (CFDataRef)TISGetInputSourceProperty(currentKeyboard, kTISPropertyUnicodeKeyLayoutData); + } + const UCKeyboardLayout *keyboardLayout = (const UCKeyboardLayout*)CFDataGetBytePtr(uchr); if (keyboardLayout) { |
