Carbon を使用してこれを行うことができます。ここで Carbon を使用することを恐れないでください。この情報を取得する Cocoa の方法はなく、Carbon メソッドは引き続きサポートされています。
このCopySymbolicHotKeys()
関数は、[キーボード] 設定ペインで定義されたシステム全体のシンボリック ホット キーに関する情報を含む辞書の配列を返します。各ディクショナリには、1 つのホット キーに関する情報が含まれています。
具体的には、各ディクショナリには次の 3 つのキーがあります。
kHISymbolicHotKeyCode
: として表される、ホット キーの仮想キー コードCFNumber
。
kHISymbolicHotKeyModifiers
: として表される、ホット キーのキーボード修飾子CFNumber
。
kHISymbolicHotKeyEnabled
: として表される、ホット キーの有効な状態CFBoolean
。
明らかに、これらは生のキー コードであるため、キー コードが実際に何を参照しているかを確認したい場合は、何らかの作業を行う必要があります。
配列にはカスタムのアプリケーション固有のホットキーが含まれていないことに注意してください。ただし、これは小さな問題です。
簡単な例を次に示します。
#import <Carbon/Carbon.h>
CFArrayRef registeredHotKeys;
if(CopySymbolicHotKeys(®isteredHotKeys) == noErr)
{
CFIndex count = CFArrayGetCount(registeredHotKeys);
for(CFIndex i = 0; i < count; i++)
{
CFDictionaryRef hotKeyInfo = CFArrayGetValueAtIndex(registeredHotKeys, i);
CFNumberRef hotKeyCode = CFDictionaryGetValue(hotKeyInfo, kHISymbolicHotKeyCode);
CFNumberRef hotKeyModifiers = CFDictionaryGetValue(hotKeyInfo, kHISymbolicHotKeyModifiers);
CFBooleanRef hotKeyEnabled = CFDictionaryGetValue(hotKeyInfo, kHISymbolicHotKeyEnabled);
NSLog(@"key code: %@ modifiers: %@ enabled: %@", hotKeyCode, hotKeyModifiers, hotKeyEnabled);
}
//you MUST release the dictionary when finished with it
CFRelease(registeredHotKeys);
}
プロジェクト設定のLink Binary with Librariesビルド フェーズにCarbon フレームワークを追加する必要があることに注意してください。
詳細については、Carbon Event Manager ドキュメント(11Mb PDF) を参照してください。