Призначте ярлик для запуску сценарію в OS X


33

Чи забезпечує OS X простий спосіб прив’язати комбінації клавіш до команд, які, як правило, виконуються в командному рядку?

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

Відповіді:


21

Так, ви можете зробити це за допомогою Applescript або Automator .

Я робив такі речі, як використовувати Автоматизатор для створення Служби, доступної у всіх програмах. Служба може бути створена для запуску bash / zsh / ruby ​​/ будь-якого сценарію. Потім ви можете прив’язати комбінацію клавіш до послуги на панелі клавіатурних системних налаштувань.

Під кінець цього подкасту MacBreak ця процедура показана докладно.

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

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

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>

Інші програми, які підтримують призначення ярликів сценаріям:

Ще один варіант - створити службу Автоматизатора:

  1. Відкрийте Automator і виберіть шаблон служби.
  2. Переконайтесь, що тип вводу та область застосування правильні, або змініть "вибраний текст" на "немає вводу", якщо служба не отримує жодного вводу.
  3. Додайте сценарій запуску оболонки або виконайте дії сценарію AppleScript для сценарію.
  4. Збережіть послугу та надайте їй ярлик від Налаштування системи.

З 10.7 виникла помилка, коли ярлики для служб не завжди працюють, поки не наведіть курсор миші на сервіси на панелі меню. Ярлики для служб не працюють, коли програма, яка не має меню послуг (наприклад, Tower), є самою передньою. Існує також помітна затримка перед запуском служб.


open -a ScreenSaverEngineце навіть тед коротше.
Jari Keinänen

Інструкції Quicksilver: macosxtips.co.uk/index_files/…
paragbaxi

FastScripts коштує 10 доларів США, але варто того.
платний ботанік

Чи є у вас базовий FastScript, який робить щось на зразок зв'язування F1 для відкриття терміналу чи будь-чого іншого?
Нік Т

1
Будь ласка, додайте Hammerspoon до списку :)
Сейф

1

Якщо ви використовуєте BetterTouchTool, ви можете призначити ярлик команді оболонки, вибравши наступну дію: Керування іншими програмами> Виконати команду термінала


0

Ось приклад сценарію 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

Тут не потрібно використовувати щось особливе, як у відповідях усіх інших.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.