OS Xは、キーの組み合わせを、通常コマンドラインで実行されるコマンドにバインドする簡単な方法を提供していますか?
たとえば、割り当てる方法はありますか ⌘ Cmd+L 画面をすばやくロックするグローバルショートカットとして、おそらく/System/Library/Frameworks/ScreenSaver.framework/Resources/ScreenSaverEngine.app/Contents/MacOS/ScreenSaverEngine
?
はい、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"
現在 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サービスを作成することです。
10.7以降、メニューバーからサービスメニューにカーソルを合わせるまで、サービスのショートカットが機能しないというバグがありました。サービスメニューを持たないアプリケーション(Towerなど)が最前面にある場合、サービスのショートカットは機能しません。サービスが実行される前に顕著な遅延もあります。
BetterTouchToolを使用している場合は、次のアクションを選択して、シェルコマンドにショートカットを割り当てることができます:他のアプリケーションの制御>端末コマンドの実行
以下は、私が作成した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
ここで他の人の答えのように特別なものを使用する必要はありません。