Mac OS X: 拦截键盘布局更改

6
我有一个问题。我在Mac中有两种键盘布局,因为我需要用不同的语言与不同的人交流。我使用键盘快捷键 Cmd+Space 切换到另一种布局(语言)。
我想知道当按下 Cmd+Space 时是否可以运行自定义脚本?我知道有一个叫做Punto Switcher 的应用程序可以做到这一点。
我的想法是改变键盘高亮级别以指示当前语言。
  • 明亮 = 德语(或俄语或其他语言)
  • 暗淡 = 英语
问题是在哪里找到API:
  1. 拦截Mac OS X中的键盘布局
  2. 更改键盘高亮亮度

enter image description here

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);

1
我发现了Amit Singh的博客,他提出了使用C语言来使用未记录的API的想法,你可以从中得到一些帮助。 玩转光线
或者你可以尝试这些代码:
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;
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接