dackdive's blog

新米webエンジニアによる技術ブログ。JavaScript(React), Salesforce, Python など

Macで任意のアプリにHotkeyを設定し、表示/非表示を切り替える

普段エディタは iTerm 内で vim を使っているので
iTerm に Hotkey を設定し、ブラウザを見てる時にHotkeyでさっとエディタを表示したり非表示に戻したりというのをよくやる。

f:id:dackdive:20160303132508g:plain:w480

それを Atom でも実現したかった。

最初、BetterTouchTool を使った方法を紹介したこちらの記事を見つけたんだけど

Macアプリをショートカットキーに登録して、一発起動させるアプリ「BetterTouchTool」 | iDEACLOUD/dev

これはあくまで起動だけで、起動後、別のアプリを使ってる状態からすぐに表示させるといったことには対応していないみたいなのでもう少し調べてみた。

手順

これを参考にした。
osx - Global hotkey to show/hide a specific app in OS X? - Super User

以下、手順。

  • Automator.app を開く。書類の種類は「サービス」を選ぶ
  • 左側のアクションから「AppleScript を実行」を選ぶ(検索ボックスで applescript と入力すると早い)
  • 右側のコード入力欄に以下を貼り付け
on run {input, parameters}
    
    tell application "System Events" to tell application process "Atom"
        if frontmost then
            set visible to false
        else
            tell application "Atom" to activate
        end if
    end tell
    
    return input
end run

参考元との違いとして、

  • 元のコードだと対象のアプリケーションが起動しているかどうかチェックしてるようだが、必要ないかなと思って削除
  • 元のコードだと「画面に表示されてるけどフォーカスあたってない」時にキーを入力すると非表示になる

のでちょっと変更した。

最後に好きな名前で保存する。

f:id:dackdive:20160303130914p:plain

次に、システム環境設定 > キーボード > ショートカット を開き、
[サービス] から先ほど作成したサービス名を探す。

f:id:dackdive:20160219111500p:plain:w480

右端の「なし」と書かれているところをクリックして好きなショートカットキーを設定する。

問題点

アプリによって効かないキーの組み合わせがあることと、iTerm の Hotkey に比べて格段に遅い。。。
Atom だったら Hotkey あるんじゃないかという気もする。