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


Answers:


21

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

我这样做的方法是使用Automator创建可在所有应用程序中使用的服务。可以使服务运行bash / zsh / ruby​​ /任何脚本。然后,您可以在系统偏好设置的“键盘”面板中将按键组合绑定到服务。

此MacBreak播客的结尾附近,详细显示了此过程。

编辑:我只是注意到您没有使用Snow Leopard。我认为使用10.5.8创建系统范围的服务并不容易。我想您无法升级,因为它是Powerbook。您可能需要研究FastScripts,该脚本允许您将快捷键分配给applescripts(最多可免费使用10个键盘快捷键)并使用以下Applescript:

do shell script "/System/Library/Frameworks/ScreenSaver.framework/Resources/ScreenSaverEngine.app/Contents/MacOS/ScreenSaverEngine"

36

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

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

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

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>

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

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

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

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


open -a ScreenSaverEngine甚至短一点。
JariKeinänen2011年


FastScripts是10美元的共享软件,但非常值得。
2015年

您是否具有基本的FastScript,该脚本执行诸如绑定F1来打开终端之类的操作?
尼克T

1
请将Hammerspoon添加到列表中:)
Vault

1

如果使用的是BetterTouchTool,则可以通过选择以下操作来为Shell命令分配快捷方式:控制其他应用程序>执行终端命令


0

这是我制作的KeePass.sh脚本示例。我只是获取了信息,并将其设置为与Terminal一起运行。之后,我在桌面上为其创建了别名。它在终端中运行KeePass.sh脚本,然后退出应用程序后,它将杀死所有打开的终端窗口。您可能需要调整最后一行:-)

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

您无需在这里使用其他所有人的答案中的任何特殊内容。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.