簡體   English   中英

Mac OS X:攔截鍵盤布局更改

[英]Mac OS X: Intercept keyboard layout change

我有個問題。 我的Mac上有兩個鍵盤布局,因為在與不同的人通信時我必須鍵入兩種不同的語言。 我使用鍵盤快捷鍵Cmd+Space從一種布局(語言)切換到另一種布局。

我想知道在按下Cmd+Space時是否可以運行自定義腳本? 我知道有一個名為Punto Switcher的應用程序可以做到這一點。

我的想法是更改鍵盤突出顯示級別以指示當前語言。

  • Bright =德語(或俄語或其他)
  • 昏暗=英語

問題是在哪里可以找到API

  1. 攔截Mac OS X中的鍵盤布局
  2. 改變鍵盤高亮的亮度

在此輸入圖像描述

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

我找到了一個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;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM