HotKeysLib3 - Cocoaでホットキー

Cocoa勉強会 #19
2006.07.29(土)
木村渡

はじめに

通常、最前面のアプリケーションのみがイベントを受け取ることはできますが、ホットキーは特定のキーが押されたことを最前面でないアプリケーションでも受け取ることができる機能です。 ホットキーはランチャーやアプリケーション・ウィンドウ切り替えなどのいつでも呼び出せると便利なタイプのユーティリティでよく利用されています。

現在(10.4)のMac OS Xでは、ホットキーの機能はCarbon Eventにより提供されていて、Cocoaで扱うことはできません。今回は、この機能のCocoaラッパーのライブラリ HotKeysLib3 を紹介します。

HotKeysLib3の概要

HotKeysLib3はフレームワークではなく、プロジェクトにソースコードやnibを直接組み込むタイプのライブラリです。

プログラミング

HotKeysLib3では、主に次の4つのクラスを利用します。

ホットキーの設定

以下の手順でホットキーを設定します。

  1. PTKeyComboを生成
  2. PTHotKeyを生成
  3. PTKeyComboと対応する動作(ターゲットとアクション)をPTHotKeyに指定
  4. PTHotKeyCenterにPTHotKeyを登録

PTKeyCombo

PTKeyComboは、ホットキーとして指定するキーコンビネーションを表すクラスです。インスタンスの生成方法には、直接キーコードを指定する方法と、プロパティリストから生成する方法の2種類があります。

+keyComboWithKeyCode:modifiers:
キーと修飾キーを指定して生成します
-initWithPlistRepresentation:
プロパティリストから生成します
-plistRepresentation
プロパティリストに変換します
-description
表示用の文字表現("^A"など)を取得できます

PTHotKey

ホットキーとその動作の関連づけをあらわすクラスです。

-initWithIdentifier:keyCombo:
identifierはアプリケーション内で一意になる文字列を指定します。
-setTarget:
-setAction:
動作はターゲット・アクションで指定します。 通常のアクションとは異なり、ターゲットのresponder chainは適用されないことに注意してください。

PTHotKeyCenter

ホットキーの登録・登録解除を行うクラスです。

+sharedCenter
PTHotKeyCenterのインスタンスを取得します。
-registerHotKey:
-unregisterHotKey:
PTHotKeyを登録・登録解除します。
-hotKeyWithIdentifier:
登録されているPTHotKeyを、identifierを指定して取り出します。

PTKeyComboPanel

キーコンビネーションを設定するダイアログ/シートを提供するクラスです。 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
キーコードの値を調べることのできるアプリケーション