2009-11-01 9 views
13

システムステータスバーにあるNSStatusBarココアアプリケーションを作成しました。Cocoa NSStatusBar Global HotKey

私はホットキーを割り当てて、アプリケーションをトグルしてメニューを表示できるようにしたいと考えています。

これは可能ですか?私の検索と実験では、アプリケーションがバックグラウンドにあるときに押すことができるグローバルホットキーを割り当てる方法がいくつか見つかりましたが、メニューを問題にする方法はありませんショー。

これは可能ですか?誰かがグローバルホットキーを割り当てる方法が最も良いと思う人は、投稿してください。

ありがとうございました。私が見つけたホットキーのチュートリアルの


一つは、興味のある人のためhttp://dbachrach.com/blog/2005/11/program-global-hotkeys-in-cocoa-easily/にありました。

+0

クリックした、または「切り取った」場合を除き、メニューを表示する理由はありません。 –

答えて

11

an actual hotkey APIはまだSnow Leopardに存在し、64ビットで利用できます。これは、CGEventTapsを中心とした単なるブロックベースのラッパーであるNSEventメソッドとは異なり、この目的のために特別に設計されています。

の違いは、(直接またはCGEventTaps)NSEvent方法ということで、ユーザはあなたホットキーを押したときにホットキーのAPIだけで、あなたの関数を呼び出すのに対し、あなたは、に入ってくるすべてのイベントを見えるようにします。

+0

ありがとう、ありがとう、それは可能な場合は、コードを介してアプリケーションのメニューをポップアップすることを知っていますか? – Craig

+0

クレイグ:はい。彼の答えに対するDave DeLongのコメントを参照してください。 –

+0

JFYI:Appleはこのメソッドを時代遅れとマークしていますので、もう使用しないでください –

17

10.6+をターゲットにしている場合は、グローバルホットキーを実行できるNSEvent用の新しいAPIがあります。私自身のホーンビットをトゥーティングhttp://cocoakids.net/global-hotkeys-in-cocoa-on-snow-leopard

EDIT(後の長い時間)

:詳細については、この素晴らしいブログ記事をチェックアウト、私はように動作するようにPTHotKeyや他のライブラリのようなものを得ることができませんでした私は期待していたので、やっと私自身のHotKeyラッパーをあきらめて書きました。それは10.6のブロックのような楽しいものをサポートする非常にシンプルなAPI(キーコード、修飾子、ターゲット、アクション)を持っています。 http://github.com/davedelong/DDHotKey

+0

ブログのポストをありがとう、それは素晴らしい作品が、私は10.5同様に動作するように他の例を使用すると思う、あなたは可能な場合は、コードを介してアプリのメニューをポップアップすることができます知っていますか? – Craig

+0

@Craigあなたは '[myStatusItem popUpStatusItemMenu:[myStatusItem menu]]'を実行することができますが、それはあなたのステータス項目を強調表示しません。私が示唆している唯一のもう一つのことは、ステータス項目をクリックして偽装することかもしれない。 –

+0

大変ありがとうございます – Craig