OS X 是否提供了一种简单的方法来将组合键绑定到通常在命令行上运行的命令?
例如,是否有某种方法可以将⌘ Cmd+指定L为全局快捷键以快速锁定我的屏幕,可能使用/System/Library/Frameworks/ScreenSaver.framework/Resources/ScreenSaverEngine.app/Contents/MacOS/ScreenSaverEngine
?
答案1
是的,你可以用 Applescript 或自动机。
我做类似事情的方法是使用 Automator 创建一个在所有应用程序中都可用的服务。可以使服务运行 bash/zsh/ruby/whatever 脚本。然后,您可以在系统偏好设置的键盘窗格中将组合键绑定到该服务。
接近年底这个 MacBreak 播客该过程详细显示。
编辑:我刚注意到你没有使用 Snow Leopard。我认为使用 10.5.8 创建系统范围的服务并不容易。我猜你不能升级,因为它是一台 Powerbook。你可能需要研究一下快速脚本它允许您为 applescript 分配键盘快捷键(最多可免费使用 10 个键盘快捷键)并使用以下 Applescript:
do shell script "/System/Library/Frameworks/ScreenSaver.framework/Resources/ScreenSaverEngine.app/Contents/MacOS/ScreenSaverEngine"
答案2
我目前使用快速脚本。它包含 中的所有脚本~/Library/Scripts/
,因此您无需手动添加脚本。它还支持特定于应用程序的脚本,并且具有一些对 AppleScript 有用的功能,例如它会在keystroke
或key code
命令之前停止脚本,直到释放修饰键。
如果你已经购买了 Powerpack阿尔弗雷德 2,您可以创建如下工作流程:
热键默认有短暂的延迟,但您可以通过更改触发行为来减少它:
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>
其他支持为脚本分配快捷方式的应用程序:
另一个选择是创建一个 Automator 服务:
- 打开 Automator 并选择服务模板。
- 检查输入类型和应用范围是否正确,或者如果服务没有收到任何输入,则将“选定的文本”更改为“无输入”。
- 为脚本添加运行 Shell 脚本或运行 AppleScript 操作。
- 保存该服务并从系统偏好设置中为其提供快捷方式。
自 10.7 以来,一直存在一个错误,即服务的快捷方式并不总是有效,除非您将鼠标悬停在菜单栏中的服务菜单上。当没有服务菜单的应用程序(如 Tower)位于最前面时,服务的快捷方式不起作用。在运行服务之前也会出现明显的延迟。
答案3
如果您使用 BetterTouchTool,您可以通过选择以下操作为 shell 命令分配快捷方式:控制其他应用程序 > 执行终端命令
答案4
这是我编写的一个示例 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
您不需要使用像这里其他人的答案中那样的任何特殊内容。