Mac OS X Tips
グローバルホットキーを無効にする

Exposéに割り当てられたショートカットキー(初期値はF9/F10/F11)はOS側で処理され、該当するキーボードイベントがアプリケーションに渡されることは無い。このようなショートカットキーを、Appleはグローバルホットキー(Global Hot Key)と呼んでいるようだ。

通常であればこの仕様は妥当なものといえるが、グローバルホットキーに対応するキーイベントそのものを受け取りたい場面も、希に存在する。例えば「システム環境設定」の「キーボードとマウス」ペイン、もちろんExpogestureもそのひとつだ。

グローバルホットキーをOSに処理させるか、無効にしてアプリケーションに渡すようにするかは、以下の非公開関数を使用して変更できる。

typedef int CGSConnection;
typedef enum {
CGSGlobalHotKeyEnable = 0,
CGSGlobalHotKeyDisable = 1,
} CGSGlobalHotKeyOperatingMode;
extern CGSConnection _CGSDefaultConnection(void);
extern CGError CGSGetGlobalHotKeyOperatingMode( CGSConnection connection, CGSGlobalHotKeyOperatingMode *mode);
extern CGError CGSSetGlobalHotKeyOperatingMode(CGSConnection connection, CGSGlobalHotKeyOperatingMode mode);

グローバルホットキーを無効にし、アプリケーションがキーイベントを受け取れるようにするには、次のようにする。

CGSConnection conn = _CGSDefaultConnection();
CGSSetGlobalHotKeyOperatingMode(conn, CGSGlobalHotKeyDisable);

再びグローバルホットキーを有効にするには、

CGSSetGlobalHotKeyOperatingMode(conn, CGSGlobalHotKeyEnable);

とする。グローバルホットキーの状態を変更した後は、確実に元に戻すこと。

当ページ内の情報の正確さは全然保証しない。各自の責任において利用すること。また、決してAppleに問い合わせたりしないように。