33

Предоставляет ли OS X простой способ привязки сочетаний клавиш к командам, которые обычно запускаются в командной строке?

Например, есть ли способ назначить to Cmd+L в качестве глобального ярлыка для быстрой блокировки моего экрана, возможно, с помощью /System/Library/Frameworks/ScreenSaver.framework/Resources/ScreenSaverEngine.app/Contents/MacOS/ScreenSaverEngine?

4 ответа4

36

В настоящее время я использую FastScripts. Он включает в себя все сценарии в ~/Library/Scripts/ , поэтому вам не нужно добавлять сценарии вручную. Он также поддерживает специфичные для приложения сценарии и имеет несколько функций, которые полезны для AppleScripts, например, он останавливает сценарий перед keystroke или командой key code до тех пор, пока не будут выпущены клавиши-модификаторы.

Если вы купили Powerpack для 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. Добавьте для сценария действие "Выполнить сценарий оболочки" или "Выполнить AppleScript".
  4. Сохраните сервис и дайте ему ярлык из Системных настроек.

С 10.7 существует ошибка, когда ярлыки для служб не всегда работают, пока вы не наведете курсор мыши на меню служб в строке меню. Ярлыки для служб не работают, когда приложение, у которого нет меню служб (например, Tower), находится на первом месте. Существует также заметная задержка перед запуском сервисов.

21

Да, вы можете сделать это с помощью Applescript или Automator.

То, как я это делал, - это использование Automator для создания Сервиса, доступного во всех приложениях. Можно создать сервис для запуска сценария bash/zsh/ruby/ любой другой. Затем вы можете связать комбинацию клавиш со службой на панели «Клавиатура» системных настроек.

В конце этого подкаста MacBreak эта процедура показана подробно.

Изменить: Я только что заметил, что вы не используете Snow Leopard. Я не думаю, что создать общесистемный сервис так просто с 10.5.8. Я думаю, вы не можете обновить, так как это Powerbook. Возможно, вы захотите взглянуть на FastScripts, который позволяет назначать сочетания клавиш для applecripts (бесплатно использовать до 10 сочетаний клавиш) и использовать следующий Applescript:

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

Если вы используете BetterTouchTool, вы можете назначить ярлык для команды оболочки, выбрав следующее действие: Управление другими приложениями> Выполнить команду терминала

0

Вот пример скрипта 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

Вам не нужно использовать что-то особенное, как в ответах всех остальных здесь.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .