如何学习当前选择的键盘布局/输入语言?
我正在玩NSInputManager,但无法实现任何目标。
[NSInputManager currentInputManager]
返回(null)(与%@一起报告),因此
[[NSInputManager currentInputManager] localizedInputManagerName]
对我来说,最好只取回EN或FR所用语言的双字母缩写,但菜单栏中显示的键盘布局名称也可以。
有什么想法吗?感谢。
编辑:我还发现AppleSelectedInputSourcesChangedNotification已发布到
[NSDistributedNotificationCenter defaultCenter]
当用户更改布局时,但没有关于新选择的布局的信息被“附加”到此通知。
答案 0 :(得分:13)
键盘布局到语言组合通常是一对多的,因此虽然您可以获取当前所选键盘布局的本地化名称(或者更常见的是输入源),但源可用于键入文本很多语言。你为什么要这样做?
也就是说,您可以使用Text Input Source Services获取有关当前文本输入源的信息。例如:
TISInputSourceRef source = TISCopyCurrentKeyboardInputSource();
NSLog(@"languages: %@",
TISGetInputSourceProperty(source, kTISPropertyInputSourceLanguages));
NSLog(@"localized name: %@",
TISGetInputSourceProperty(source, kTISPropertyLocalizedName));
给了我:
2009-04-23 14:30:17.581 sample[30688:10b] languages: (
en,
ca,
da,
de,
es,
eu,
fr,
ga,
gl,
gv,
id,
it,
kw,
ms,
nb,
nl,
nn,
om,
pt,
so,
sq,
sv,
sw
)
2009-04-23 14:30:17.584 sample[30688:10b] localized name: U.S.