2

アラビア語の語彙トレーナーを作成すると、私のプログラムは、入力方法をユーザーのデフォルト言語とアラビア語の間で自動的に切り替えます。

Windowsでは、これはLoadKeyboardLayoutとActivateKeyboardLayoutを使用して実行できます。

OS Xで同じことを実現するためのAPI呼び出しはありますか?

ユーザーがシステム設定を介してアラビア語のkbdレイアウトを一度有効にするように要求することは問題ありませんが、毎回手動で切り替える必要があるのは避けたい迷惑です。

または、代わりに、優先入力方法をCarbonテキスト入力フィールドに割り当てて、2つの入力フィールド(1つは米国用、もう1つはアラビア語用)を使用できるようにすることはできますか?

4

1 に答える 1

0

が必要ですCarbon apiテキスト入力ソースサービスリファレンスをご覧ください。

エラー処理なしのサンプルコードを次に示します(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 に答える