2

为阿拉伯语编写一个词汇训练器,我的程序将自动在用户的默认语言和阿拉伯语之间切换输入法。

在 Windows 上,这可以通过 LoadKeyboardLayout 和 ActivateKeyboardLayout 来完成。

在 OS X 上是否有 API 调用来完成相同的操作?

可以要求用户通过系统首选项自己启用阿拉伯语 kbd 布局,但他每次都必须手动来回切换是我想避免的麻烦。

或者,或者,我可以将首选输入法分配给 Carbon 文本输入字段,以便我可以使用两个输入字段,一个用于美国,一个用于阿拉伯语,这样吗?

4

1 回答 1

0

您需要Carbon api,请查看Text Input Source Services Reference

这是一个没有错误处理的示例代码(Mac OS X v10.5及更高版本)

CFStringRef tID = CFSTR("com.apple.keylayout.Arabic"); // or "com.apple.keylayout.US"
TISInputSourceRef inputSource = NULL;
CFArrayRef allInputs = TISCreateInputSourceList(NULL, true);
NSUInteger count = CFArrayGetCount(allInputs);
for (int i = 0; i < count; i++) {
    inputSource = (TISInputSourceRef)CFArrayGetValueAtIndex(allInputs, i);
    if (!CFStringCompare(tID, TISGetInputSourceProperty(inputSource, kTISPropertyInputSourceID), 0)) {
        TISEnableInputSource(inputSource);
        TISSelectInputSource(inputSource);
        break;
    }
}
CFRelease(allInputs);
于 2012-07-17T19:18:25.170 回答