【问题标题】:Mac OS X: Intercept keyboard layout changeMac OS X:拦截键盘布局更改
【发布时间】:2013-03-01 10:25:51
【问题描述】:

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

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

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

  • Bright = 德语(或俄语或其他)
  • Dim = 英语

问题是在哪里可以找到 API

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

【问题讨论】:

    标签: objective-c c macos cocoa keyboard-shortcuts


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      我找到了 Amit Singh 的博客,他在未记录的 API 中提出了想法,他使用 C,为此,您肯定可以从中找到某种帮助。

      Experimenting With Light.

      或者你可以试试这些代码:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-12-23
        • 1970-01-01
        • 2015-07-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多