您好, 我想从键盘(Digital Alphabetical)获取所有可用字符的列表,以便创建NSArray。
TISInputSourceRef source = TISCopyCurrentKeyboardInputSource();
NSLog(@"languages: %@", TISGetInputSourceProperty(source, kTISPropertyInputSourceLanguages));
NSLog(@"localized name: %@", TISGetInputSourceProperty(source, kTISPropertyLocalizedName));
我使用这些行,但找不到合适的功能来列出字符。
我也试过这一行:
NSLog(@"List: %@", TISGetInputSourceProperty(source, kTISPropertyUnicodeKeyLayoutData));
答案 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中包含的信息?