web-dev-qa-db-ja.com

OS Xでスクリプトを実行するショートカットを割り当てる

OS Xは、キーの組み合わせを、通常コマンドラインで実行されるコマンドにバインドする簡単な方法を提供していますか?

たとえば、割り当てる方法はありますか ⌘ Cmd+L 画面をすばやくロックするグローバルショートカットとして、おそらく/System/Library/Frameworks/ScreenSaver.framework/Resources/ScreenSaverEngine.app/Contents/MacOS/ScreenSaverEngine

33

はい、Applescriptまたは Automator でこれを行うことができます。

私がこのようなことをした方法は、Automatorを使用して、すべてのアプリケーションで利用可能なサービスを作成することです。 bash/zsh/Ruby/whateverスクリプトを実行するサービスを作成できます。次に、システム環境設定の[キーボード]ペインで、キーの組み合わせをサービスにバインドできます。

このMacBreakポッドキャスト の終わり近くに、この手順が詳細に示されています。

編集:Snow Leopardを使用していないことに気づきました。システム全体のサービスを作成するのは10.5.8ほど簡単ではないと思います。 Powerbookなのでアップグレードできないと思います。 FastScripts を調べて、キーボードショートカットをAppleScriptに割り当て(最大10個のキーボードショートカットで自由に使用できます)、次のApplescriptを使用できます。

do Shell script "/System/Library/Frameworks/ScreenSaver.framework/Resources/ScreenSaverEngine.app/Contents/MacOS/ScreenSaverEngine"
21
ghoppe

現在 FastScripts を使用しています。すべてのスクリプトが~/Library/Scripts/に含まれているため、手動でスクリプトを追加する必要はありません。また、アプリケーション固有のスクリプトもサポートしており、keystrokeまたはkey codeコマンドの前にスクリプトを停止して修飾キーを離すなど、AppleScriptで役立ついくつかの機能を備えています。

Alfred 2 のPowerpackを購入した場合は、次のようなワークフローを作成できます。

ホットキーにはデフォルトで短い遅延がありますが、トリガーの動作を変更することでこれを減らすことができます。

KeyRemap4MacBook は、シェルスクリプトの実行もサポートしています。

<?xml version="1.0"?>
<root>
  <vkopenurldef>
    <name>KeyCode::VK_OPEN_URL_Shell_say_a</name>
    <url type="Shell">say a</url>
  </vkopenurldef>
  <item>
    <name>test</name>
    <identifier>test</identifier>
    <autogen>__KeyToKey__ KeyCode::A, KeyCode::VK_OPEN_URL_Shell_say_a</autogen>
  </item>
</root>

スクリプトへのショートカットの割り当てをサポートする他のアプリケーション:

もう1つのオプションは、Automatorサービスを作成することです。

  1. Automatorを開き、サービステンプレートを選択します。
  2. 入力タイプとアプリケーションスコープが正しいことを確認するか、サービスが入力を受信しない場合は、「選択されたテキスト」を「入力なし」に変更してください。
  3. スクリプトの実行シェルスクリプトまたは実行AppleScriptアクションを追加します。
  4. サービスを保存し、システム環境設定からショートカットを提供します。

10.7以降、メニューバーからサービスメニューにカーソルを合わせるまで、サービスのショートカットが機能しないというバグがありました。サービスメニューを持たないアプリケーション(Towerなど)が最前面にある場合、サービスのショートカットは機能しません。サービスが実行される前に顕著な遅延もあります。

36
Lri

BetterTouchToolを使用している場合は、次のアクションを選択して、シェルコマンドにショートカットを割り当てることができます:他のアプリケーションの制御>端末コマンドの実行

1
alexeit

以下は、私が作成したKeePass.shスクリプトの例です。 Get Infoを実行し、ターミナルで実行するように設定しました。その後、デスクトップにエイリアスを作成しました。ターミナル内でKeePass.shスクリプトを実行し、アプリケーションを終了した後、開いているすべてのターミナルウィンドウを強制終了します。最後の行を微調整したいかもしれません:-)

cd ~/Documents/KeePass
/Library/Frameworks/Mono.framework/Versions/current/bin/mono KeePass.exe 1>/dev/null 2>/dev/null
cd ~
killall Terminal

ここで他の人の答えのように特別なものを使用する必要はありません。

0
anon