Cocoa勉強会 #19
2006.07.29(土)
木村渡
通常、最前面のアプリケーションのみがイベントを受け取ることはできますが、ホットキーは特定のキーが押されたことを最前面でないアプリケーションでも受け取ることができる機能です。
ホットキーはランチャーやアプリケーション・ウィンドウ切り替えなどのいつでも呼び出せると便利なタイプのユーティリティでよく利用されています。
現在(10.4)のMac OS Xでは、ホットキーの機能はCarbon Eventにより提供されていて、Cocoaで扱うことはできません。今回は、この機能のCocoaラッパーのライブラリ HotKeysLib3 を紹介します。
HotKeysLib3はフレームワークではなく、プロジェクトにソースコードやnibを直接組み込むタイプのライブラリです。
HotKeysLib3では、主に次の4つのクラスを利用します。
- ホットキーの設定
- PTKeyCombo
- PTHotKey
- PTHotKeyCenter
- ユーザインターフェイス(キー設定パネル)
以下の手順でホットキーを設定します。
- PTKeyComboを生成
- PTHotKeyを生成
- PTKeyComboと対応する動作(ターゲットとアクション)をPTHotKeyに指定
- PTHotKeyCenterにPTHotKeyを登録
PTKeyComboは、ホットキーとして指定するキーコンビネーションを表すクラスです。インスタンスの生成方法には、直接キーコードを指定する方法と、プロパティリストから生成する方法の2種類があります。
+keyComboWithKeyCode:modifiers:
-
キーと修飾キーを指定して生成します
-initWithPlistRepresentation:
-
プロパティリストから生成します
-plistRepresentation
-
プロパティリストに変換します
-description
-
表示用の文字表現("^A"など)を取得できます
ホットキーとその動作の関連づけをあらわすクラスです。
-initWithIdentifier:keyCombo:
-
identifierはアプリケーション内で一意になる文字列を指定します。
-setTarget:
-setAction:
-
動作はターゲット・アクションで指定します。
通常のアクションとは異なり、ターゲットのresponder chainは適用されないことに注意してください。
ホットキーの登録・登録解除を行うクラスです。
+sharedCenter
-
PTHotKeyCenterのインスタンスを取得します。
-registerHotKey:
-unregisterHotKey:
-
PTHotKeyを登録・登録解除します。
-hotKeyWithIdentifier:
-
登録されているPTHotKeyを、identifierを指定して取り出します。
キーコンビネーションを設定するダイアログ/シートを提供するクラスです。
NSWindowControllerのサブクラス。
+sharedPanel
-
PTKeyComboPanelのインスタンスを取得します。
-runModalForHotKey:
-
パネルを表示して、PTHotKeyのキーコンビネーションを設定します。
-runSheeetForModalWindow:target:
-
キーコンビネーションが設定されると、targetの-hotKeySheetDidEndWithReturnCode:メソッドが呼び出されます。設定結果は-keyComboソッドで取得します。-runModalForHotKey:よりも細かい動作の制御を行いたいときはこちらを利用します。
-keyCombo
-
最後に設定したキーコンビネーションを取得します。
- HMDT - Carbon Event
-
http://homepage.mac.com/mkino2/cocoaProg/Carbon/CarbonEvent/CarbonEvent.html
Carbon Eventを利用したホットキーの登録と-[NSApplication sendEvent:]でのイベントの捕捉
- Key Codes.app
-
http://www.petermaurer.de/nasi.php?section=keycodes
キーコードの値を調べることのできるアプリケーション