从键盘获取可用字符列表

时间:2012-10-27 11:58:14

标签: objective-c

您好, 我想从键盘(Digital Alphabetical)获取所有可用字符的列表,以便创建NSArray。

TISInputSourceRef source = TISCopyCurrentKeyboardInputSource(); 
 NSLog(@"languages: %@", TISGetInputSourceProperty(source,       kTISPropertyInputSourceLanguages));
 NSLog(@"localized name: %@", TISGetInputSourceProperty(source, kTISPropertyLocalizedName));

我使用这些行,但找不到合适的功能来列出字符。

我也试过这一行:

NSLog(@"List: %@", TISGetInputSourceProperty(source, kTISPropertyUnicodeKeyLayoutData));

2 个答案:

答案 0 :(得分:0)

你可以通过致电来获取它:

TISGetInputSourceProperty(source, kTISPropertyUnicodeKeyLayoutData);

这将返回键盘布局的'uchr'数据(如果存在),为CFDataRef。您可以阅读有关'uchr'数据here的布局。您需要从CFDataRef获取字节,可能需要调用类似CFDataGetBytes()CFDataGetBytePtr()的内容。

答案 1 :(得分:0)

TISInputSourceRef currentKeyboard = TISCopyCurrentKeyboardInputSource();
    CFDataRef uchr = (CFDataRef)TISGetInputSourceProperty(currentKeyboard, kTISPropertyUnicodeKeyLayoutData);
    const UCKeyboardLayout *keyboardLayout = (const UCKeyboardLayout*)CFDataGetBytePtr(uchr);

    Byte* buffer =
    (Byte*) malloc (sizeof(Byte) * CFDataGetLength(uchr));



    CFDataGetBytes(
                   uchr,
                   CFRangeMake(0,CFDataGetLength(uchr)),
                   buffer
                   );

如何阅读CFDataRef中包含的信息?

相关问题