如何以编程方式更改Mac OS X键盘布局?

时间:2010-07-26 20:37:30

标签: macos qt keyboard-layout

我的Qt应用支持在Linux和Windows上更改输入语言。我想在Mac OSX中添加对更改输入语言的支持。

很遗憾,我没有关于Mac SDK的任何信息。 (我在OS X的第一次和最后一次工作是编译Qt并编译我的应用程序!)

我在谷歌上搜索这个问题,发现我需要使用Text Input Source Services,我也找到了这些代码:

TISInputSourceRef isref;
isref = TISCopyCurrentKeyboardInputSource();
CFDataRef uchr = (CFDataRef)TISGetInputSourceProperty(isref, kTISPropertyUnicodeKeyLayoutData);

UCKeyboardLayout * keyLayoutPtr=(UCKeyboardLayout*)CFDataGetBytePtr(uchr);

keyLayoutPtr是当前键盘布局的指针吗?

如果上述问题的答案为“是”,那么我应该与keyLayoutPtr进行比较?

换句话说,如何检查当前的键盘布局是否(例如)“英语”? (或者类似Win API中的LANG_ENGLISH或XLib中的us。)

1 个答案:

答案 0 :(得分:1)

我认为您使用密钥isrefTISGetInputSourceProperty传递给kTISPropertyInputSourceLanguages,并检查数组中的第一个语言代码是否为“en”或类似内容。我不知道它是否只会返回“en”或“en-US”等。