为在 OS X 中运行脚本分配快捷方式

Ste*_*ski 34 keyboard-shortcuts command-line applescript macos

OS X 是否提供了一种简单的方法来将组合键绑定到通常在命令行上运行的命令?

例如,是否有某种方法可以将? Cmd+指定L为全局快捷方式以快速锁定我的屏幕,可能使用/System/Library/Frameworks/ScreenSaver.framework/Resources/ScreenSaverEngine.app/Contents/MacOS/ScreenSaverEngine?

Lri*_*Lri 36

我目前使用FastScripts。它包含 中的所有脚本~/Library/Scripts/,因此您不必手动添加脚本。它还支持特定于应用程序的脚本,并且它有一些对 AppleScripts 有用的功能,比如它在 a keystrokeorkey code命令之前停止脚本,直到释放修饰键。

如果您购买了Alfred 2的 Powerpack ,您可以创建如下工作流程:

默认情况下,热键的延迟很短,但您可以通过更改触发行为来减少延迟:

KeyRemap4MacBook还支持运行 shell 脚本:

<?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>
Run Code Online (Sandbox Code Playgroud)

其他支持为脚本分配快捷方式的应用程序:

另一种选择是创建一个 Automator 服务:

  1. 打开 Automator 并选择服务模板。
  2. 检查输入类型和应用范围是否正确,如果服务没有收到任何输入,则将“选定文本”更改为“无输入”。
  3. 为脚本添加运行 Shell 脚本或运行 AppleScript 操作。
  4. 保存服务并从系统偏好设置中为其提供快捷方式。

自 10.7 以来一直存在一个错误,即在您将鼠标悬停在菜单栏中的服务菜单上之前,服务的快捷方式并不总是有效。当没有服务菜单的应用程序(如 Tower)位于最前面时,服务的快捷方式不起作用。在服务运行之前也有明显的延迟。


gho*_*ppe 21

是的,您可以使用 Applescript 或Automator执行此操作。

我做这样的事情的方法是使用 Automator 创建一个在所有应用程序中都可用的服务。可以使服务运行 bash/zsh/ruby/任何脚本。然后,您可以将组合键绑定到系统首选项的键盘面板中的服务。

此 MacBreak 播客即将结束时,详细显示了此过程。

编辑:我刚刚注意到你没有使用雪豹。我认为使用 10.5.8 创建系统范围的服务并不容易。我想您无法升级,因为它是 Powerbook。您可能需要查看FastScripts,它允许您为Applescripts分配键盘快捷键(最多可免费使用 10 个键盘快捷键)并使用以下 Applescript:

do shell script "/System/Library/Frameworks/ScreenSaver.framework/Resources/ScreenSaverEngine.app/Contents/MacOS/ScreenSaverEngine"
Run Code Online (Sandbox Code Playgroud)