objective-c - 苹果操作系统 X : Intercept keyboard layout change

标签 objective-c c macos cocoa keyboard-shortcuts

我有一个问题。我的 Mac 有两种键盘布局,因为我在与不同的人交流时必须使用两种不同的语言进行输入。我使用键盘快捷键 Cmd+Space 从一种布局(语言)切换到另一种布局(语言)。

我想知道是否可以在按下 Cmd+Space 时运行自定义脚本?我知道有一个名为 Punto Switcher 的应用程序可以做到这一点。

我的想法是更改键盘突出显示级别以指示当前语言。

  • 明亮 = 德语(或俄语或其他语言)
  • 昏暗=英语

问题是在哪里可以找到可以的API

  1. 拦截 Mac OS X 中的键盘布局
  2. 更改键盘突出显示的亮度

enter image description here

最佳答案

来自@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);

关于objective-c - 苹果操作系统 X : Intercept keyboard layout change,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15155429/

相关文章:

objective-c - iOS 圆弧 : OR operator on ManagedObject pointers

c++ - 是否有任何现有库在 C/CPP/Obj-C 中实现了 matlab 函数?

objective-c - 在 Mac OS X 下开发与 Linux 兼容的命令行实用程序

c - 学生信息系统编译错误

C 要求结构或 union 至少有一个成员

objective-c - NSMutableDictionary *dict = [NSMutableArray 数组]

c - 编译器如何知道不要将临界区内的代码移动到临界区外?

c - 在 OSX 上运行 Allegro 时出错

xcode - 如何通过 Swift 在 macOS 中对齐网格?

python - 构建一个 python 鸡蛋,第一个字母被错误地从根文件/文件夹名中删除