Hatena::Groupiphone-dev

iOS プログラミングメモ

2013-06-28 (Fri)

Macアプリでグローバルなショートカットでアプリをアクティブにしたりする方法 19:38  Macアプリでグローバルなショートカットでアプリをアクティブにしたりする方法 - iOS プログラミングメモ を含むブックマーク

ちょっとめんどくさかったのでメモ。詳細はまた今度書く可能性が…ない…と思う…。

要約:DDHotKeyShortcut Recorder を使う

DDHotkey

DDHotKey は、アプリがアクティブじゃなくても指定したショートカットが入力された場合に指定したメソッドを実行する

  • 適当に NSApplicationDelegate とかで受け取ればいいんじゃないかな
  • [NSApp activateIgnoringOtherApps:YES] とかするとアプリがアクティブになる
  • [NSApp hide:nil] するとアプリが隠れる
  • つまり、表示・表示のトグルができる

Shortcut Recorder

Shortcut Recorder は、設定画面とかでよくあるキーボードショートカットの設定機能のためのフレームワークを提供してくれる

  • Framework をビルドしたらそれを自分のプロジェクトに入れればそのまま使える、便利
  • 独自の Framework はリソース内にコピーされるようにしないといけない、これがわかんなくてハマった
    • Target の設定にある「Build Phases」で「Add Build Phase」して Destination を Frameworks として ShortcutRecorder.framework をコピーするようにしておく
    • Growl の Framework を追加してる人の記事を参考にした → no title
  • 「Build Settigns」の「Runpath Search Paths」に「@loader_path/../Frameworks/」と入力しておく
  • UI は ShortcutRecorder のデモアプリから SRRecorderControl をコピペしてくるのが楽
    • デモアプリにはフィールドが二箇所あるけど、上のやつをコピーするといいかも
      • 上のやつは、バインディングで shortcut キーが割り当てられてる
      • つまり設定値を保存したりするコードを書かなくても、[[NSUserDefaults standardUserDefaults] dictionaryForKey:@"shortcut"] とすれば設定された値を呼び出せる
    • ちなみに設定画面は DBPrefsWindowController を使うと楽
トラックバック - http://iphone-dev.g.hatena.ne.jp/ktakayama/20130628