OS X'te bir komut dosyasını çalıştırmak için bir kısayol atama


33

OS X, tuş kombinasyonlarını genellikle komut satırında çalıştırılan komutlara bağlamak için kolay bir yol sunar mı?

Örneğin, ekranımı hızlı bir şekilde kilitlemek için ⌘ Cmd+ Lkullanarak genel bir kısayol olarak + atamanın bir yolu var /System/Library/Frameworks/ScreenSaver.framework/Resources/ScreenSaverEngine.app/Contents/MacOS/ScreenSaverEnginemı?

Yanıtlar:


21

Evet, bunu Applescript veya Automator ile yapabilirsiniz .

Bunun gibi şeyleri yapma yöntemim, tüm uygulamalarda kullanılabilen bir Hizmet oluşturmak için Automator kullanmaktır. Bir bash / zsh / ruby ​​/ ne olursa olsun komut dosyasını çalıştırmak için bir servis yapılabilir. Ardından, sistem tercihlerinin Klavye panelindeki bir tuş kombinasyonunu servise bağlayabilirsiniz.

Bu MacBreak podcast'inin sonuna doğru bu prosedür ayrıntılı olarak gösterilmiştir.

Düzenleme: Sadece Snow Leopard kullanmadığınızı fark ettim. Sistem genelinde bir servis yaratmanın 10.5.8 ile kolay olduğunu sanmıyorum. Sanırım bir Powerbook olduğundan yükseltme yapamazsın. Elma metinlerine klavye kısayolları atamanıza olanak tanıyan FastScripts'e bakmak isteyebilirsiniz (en fazla 10 klavye kısayolu için kullanmak ücretsiz) ve aşağıdaki Applescript'i kullanabilirsiniz:

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

36

Şu anda FastScripts kullanıyorum . Tüm komut dosyalarını içerir ~/Library/Scripts/, böylece komut dosyalarını manuel olarak eklemeniz gerekmez. Ayrıca, uygulamaya özel komut dosyalarını da destekler ve AppleScripts ile kullanışlı olan bazı özelliklere sahiptir; değiştirici tuşlar serbest bırakılıncaya kadar bir komut dosyasını keystrokeveya key codekomutunu durdurması gibi .

Powerpack for Alfred 2'yi satın aldıysanız, bunun gibi iş akışları oluşturabilirsiniz:

Kısayol tuşları varsayılan olarak kısa bir gecikmeye sahiptir, ancak tetikleyici davranışını değiştirerek onu azaltabilirsiniz:

KeyRemap4MacBook ayrıca çalışan kabuk komut dosyalarını da destekler:

<?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>

Komut dosyalarına kısayol atamayı destekleyen diğer uygulamalar:

Başka bir seçenek bir Automator servisi oluşturmaktır:

  1. Automator'ı açın ve Servis şablonunu seçin.
  2. Giriş türünün ve uygulama kapsamının doğru olduğunu kontrol edin veya servis herhangi bir giriş almazsa "seçili metni" "giriş yok" olarak değiştirin.
  3. Komut dosyası için bir Çalıştırma Kabuğu Komut Dosyası veya AppleScript Çalıştır işlemi ekleyin.
  4. Hizmeti kaydedin ve Sistem Tercihleri'nden kısayol verin.

10.7'den bu yana, servisler için kısayolların, menü çubuğundan servisler menüsü üzerine gelene kadar her zaman çalışmadığı bir hata olmuştur. Servisler için kısayollar, servis menüsü olmayan (Tower gibi) bir uygulama en öndeyken çalışmaz. Servislerin çalıştırılmasından önce gözle görülür bir gecikme de var.


open -a ScreenSaverEnginedaha da kısa.
Jari Keinänen

Quicksilver talimatları: macosxtips.co.uk/index_files/…
paragbaxi

FastScripts 10 $ shareware ama iyi değer.
ücretli bir inek

Bir terminal açmak için F1'i bağlamak gibi bir şey yapan temel bir FastScript'iniz var mı?
Nick T,

1
Lütfen listeye Hammerspoon ekleyin :)
tonoz

1

BetterTouchTool kullanıyorsanız, aşağıdaki bir işlemi seçerek shell komutuna bir kısayol atayabilirsiniz: Diğer Uygulamaları Kontrol Etme> Terminal Komutunu Yürütme


0

İşte yaptığım bir örnek KeePass.sh betiği. Bilgi aldım ve Terminal ile çalışacak şekilde ayarladım. Ondan sonra masaüstünde bir takma ad oluşturdum. Bir Terminal içinde KeePass.sh betiğini çalıştırır ve uygulamadan çıktıktan sonra açık olan herhangi bir Terminal penceresini öldürür. Bu son satırda ince ayar yapmak isteyebilirsiniz :-)

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

Buradaki herkesin cevaplarında olduğu gibi özel bir şey kullanmanıza gerek yoktur.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.