6

私は問題があります。Macには2つのキーボードレイアウトがあります。これは、異なる人と通信しながら2つの異なる言語で入力する必要があるためです。キーボードショートカットを使用して、Cmd+Spaceあるレイアウト(言語)から別のレイアウト(言語)に切り替えます。

Cmd+Spaceが押されたときにカスタムスクリプトを実行できるかどうか疑問に思いますか?それができるPuntoSwitcherというアプリがあることは知っています。

私の考えは、現在の言語を示すためにキーボードの強調表示レベルを変更することです。

  • 明るい=ドイツ語(またはロシア語など)
  • 薄暗い=英語

問題は、次のことができるAPIをどこで見つけるかです。

  1. MacOSXでキーボードレイアウトをインターセプトする
  2. キーボードのハイライトの明るさを変更する

ここに画像の説明を入力してください

4

2 に答える 2

5

@Anoop Vaidya からの LED 輝度に関するきちんとしたポインタ - 面白そうです!

入力方法が変更されると、システムは通知を送信します。

まず、通知を受け取る関数を宣言します。

void theKeyboardChanged(CFNotificationCenterRef center, void *observer, CFStringRef name, const void *object, CFDictionaryRef userInfo) {
    NSLog(@"Keyboard/input method changed.");
}

次に、変更通知を登録します。

CFNotificationCenterAddObserver(CFNotificationCenterGetDistributedCenter(),
    myContextInfo, theKeyboardChanged,
    kTISNotifySelectedKeyboardInputSourceChanged, NULL,
    CFNotificationSuspensionBehaviorDeliverImmediately);
于 2013-03-02T01:24:01.063 に答える
1

Amit Singh のブログを見つけました。彼は文書化されていない API のようにアイデアを出しました。彼は C を使用していました。このために、きっと何らかの助けが得られるでしょう。

光の実験

または、次のコードで試すことができます。

UInt64 lightInsideGetLEDBrightness(){
    kern_return_t kr = 0;
    IOItemCount   scalarInputCount  = 1;
    IOItemCount   scalarOutputCount = 1;
    UInt64        in_unknown = 0, out_brightness;
    kr = IOConnectCallScalarMethod(dataPort, kGetLEDBrightnessID, &in_unknown, scalarInputCount, &out_brightness, &scalarOutputCount);
    return out_brightness;
}
于 2013-03-01T15:29:07.150 に答える