กำหนดทางลัดให้กับการเรียกใช้สคริปต์ใน OS X


33

OS X มีวิธีที่ง่ายในการผูกคีย์ผสมกับคำสั่งซึ่งโดยทั่วไปแล้วจะรันบนบรรทัดคำสั่งหรือไม่?

ตัวอย่างเช่นมีวิธีกำหนด⌘ Cmd+ Lเป็นทางลัดส่วนกลางเพื่อล็อคหน้าจอของฉันอย่างรวดเร็วหรืออาจใช้/System/Library/Frameworks/ScreenSaver.framework/Resources/ScreenSaverEngine.app/Contents/MacOS/ScreenSaverEngineหรือไม่

คำตอบ:


21

ใช่คุณสามารถทำเช่นนี้กับ Applescript หรืออัตโนมัติ

วิธีที่ฉันทำสิ่งต่าง ๆ เช่นนี้คือการใช้ Automator เพื่อสร้างบริการที่มีอยู่ในแอปพลิเคชันทั้งหมด บริการสามารถทำการรัน bash / zsh / ruby ​​/ สคริปต์ใด ๆ ก็ได้ จากนั้นคุณสามารถผูกคีย์ผสมกับบริการในบานหน้าต่างคีย์บอร์ดของการตั้งค่าระบบ

ใกล้ถึงจุดสิ้นสุดของPodcastของ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/ดังนั้นคุณไม่จำเป็นต้องเพิ่มสคริปต์ด้วยตนเอง นอกจากนี้ยังรองรับสคริปต์เฉพาะแอปพลิเคชันและมีคุณสมบัติบางอย่างที่เป็นประโยชน์กับ AppleScript เช่นหยุดสคริปต์ก่อนหน้าคำสั่ง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. เพิ่มแอคชัน Run Shell Script หรือ Run AppleScript สำหรับสคริปต์
  4. บันทึกบริการและกำหนดทางลัดจากการตั้งค่าระบบ

มีข้อผิดพลาดตั้งแต่ 10.7 ซึ่งทางลัดสำหรับบริการจะไม่ทำงานจนกว่าคุณจะเลื่อนเมาส์ไปที่เมนูบริการจากแถบเมนู ทางลัดสำหรับบริการไม่ทำงานเมื่อแอปพลิเคชันที่ไม่มีเมนูบริการ (เช่น Tower) เป็นแนวหน้า นอกจากนี้ยังมีความล่าช้าที่เห็นได้ชัดก่อนที่จะเรียกใช้บริการ


open -a ScreenSaverEngineแม้จะสั้นกว่าเล็กน้อย
Jari Keinänen

คำแนะนำปรอท: macosxtips.co.uk/index_files/…
paragbaxi

FastScripts คือแชร์แวร์ $ 10 แต่ก็คุ้มค่า
เงินที่จ่าย nerd

คุณมี FastScript พื้นฐานที่ทำอะไรบางอย่างเช่นการผูก F1 เพื่อเปิดเทอร์มินัลหรืออะไรก็ตาม?
Nick T

1
โปรดเพิ่ม Hammerspoon ในรายการ :)
vault

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

คุณไม่จำเป็นต้องใช้อะไรเป็นพิเศษในคำตอบของคนอื่นที่นี่

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.