diff options
Diffstat (limited to 'lib/char_to_key_code.m')
-rw-r--r-- | lib/char_to_key_code.m | 70 |
1 files changed, 0 insertions, 70 deletions
diff --git a/lib/char_to_key_code.m b/lib/char_to_key_code.m deleted file mode 100644 index ab4da15..0000000 --- a/lib/char_to_key_code.m +++ /dev/null @@ -1,70 +0,0 @@ -#import "char_to_key_code.h" - -// Théo Winterhalter -// https://stackoverflow.com/users/1275975/th%c3%a9o-winterhalter -// https://stackoverflow.com/questions/1918841/how-to-convert-ascii-character-to-cgkeycode/33584460#33584460 - -NSString* keyCodeToString(CGKeyCode keyCode) -{ - TISInputSourceRef currentKeyboard = TISCopyCurrentKeyboardInputSource(); - CFDataRef uchr = - (CFDataRef)TISGetInputSourceProperty(currentKeyboard, - kTISPropertyUnicodeKeyLayoutData); - const UCKeyboardLayout *keyboardLayout = - (const UCKeyboardLayout*)CFDataGetBytePtr(uchr); - - if(keyboardLayout) - { - UInt32 deadKeyState = 0; - UniCharCount maxStringLength = 255; - UniCharCount actualStringLength = 0; - UniChar unicodeString[maxStringLength]; - - OSStatus status = UCKeyTranslate(keyboardLayout, - keyCode, kUCKeyActionDown, 0, - LMGetKbdType(), 0, - &deadKeyState, - maxStringLength, - &actualStringLength, unicodeString); - - if (actualStringLength == 0 && deadKeyState) - { - status = UCKeyTranslate(keyboardLayout, - kVK_Space, kUCKeyActionDown, 0, - LMGetKbdType(), 0, - &deadKeyState, - maxStringLength, - &actualStringLength, unicodeString); - } - if(actualStringLength > 0 && status == noErr) - return [[NSString stringWithCharacters:unicodeString - length:(NSUInteger)actualStringLength] lowercaseString]; - } - - return nil; -} - -NSNumber* charToKeyCode(const char c) -{ - static NSMutableDictionary* dict = nil; - - if (dict == nil) - { - dict = [NSMutableDictionary dictionary]; - - // For every keyCode - int i; - for (i = 0; i < 128; ++i) - { - NSString* str = keyCodeToString((CGKeyCode)i); - if(str != nil && ![str isEqualToString:@""]) - { - [dict setObject:[NSNumber numberWithInt:i] forKey:str]; - } - } - } - - NSString * keyChar = [NSString stringWithFormat:@"%c" , c]; - - return [dict objectForKey:keyChar]; -} |