OS Xは、キーの組み合わせを通常コマンドラインで実行されるコマンドにバインドする簡単な方法を提供しますか?
たとえば、画面をすばやくロックするためのグローバルショートカットとして⌘ Cmd+ を割り当てる方法はありますか?L/System/Library/Frameworks/ScreenSaver.framework/Resources/ScreenSaverEngine.app/Contents/MacOS/ScreenSaverEngine
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あなたはアップルスクリプトに割り当てたキーボードショートカットにできます(10のキーボードショートカットまでのために自由に使用する)と、次のAppleScriptを使用します。
do shell script "/System/Library/Frameworks/ScreenSaver.framework/Resources/ScreenSaverEngine.app/Contents/MacOS/ScreenSaverEngine"
現在FastScriptsを使用しています。にはすべてのスクリプトが含まれている~/Library/Scripts/
ため、手動でスクリプトを追加する必要はありません。また、アプリケーション固有のスクリプトもサポートします。また、修飾キーがリリースされるまでkeystroke
or 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など)が最前面にある場合です。また、サービスが実行される前に顕著な遅延があります。
これが、私が作成したKeePass.shスクリプトの例です。私はちょうどそれで情報を取得し、ターミナルで実行するように設定しました。その後、デスクトップでエイリアスを作成しました。ターミナル内でKeePass.shスクリプトを実行し、アプリケーションを終了すると、開いているターミナルウィンドウを強制終了します。あなたはその最後の行を微調整したいかもしれません:-)
cd ~/Documents/KeePass
/Library/Frameworks/Mono.framework/Versions/current/bin/mono KeePass.exe 1>/dev/null 2>/dev/null
cd ~
killall Terminal
ここで他の人の答えのように特別なものを使用する必要はありません。
open -a ScreenSaverEngine
少し短いです。