From d5e6ab5bad050d21d93781a5e4e8c6e60ca449e6 Mon Sep 17 00:00:00 2001 From: nilennoct Date: Sat, 7 Feb 2015 01:43:16 +0800 Subject: Fix crash using non-unicode layouts Fix crash using non-unicode layouts, such as Chinese or Japanese.--- DDHotKeyUtilities.m | 8 ++++++++ 1 file changed, 8 insertions(+) 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) { -- cgit v1.2.3