Chỉ định một phím tắt để chạy tập lệnh trong OS X


33

OS X có cung cấp một cách dễ dàng để liên kết các tổ hợp phím với các lệnh thường chạy trên dòng lệnh không?

Ví dụ: có một số cách để gán ⌘ Cmd+ Llàm lối tắt chung để nhanh chóng khóa màn hình của tôi, có thể sử dụng /System/Library/Frameworks/ScreenSaver.framework/Resources/ScreenSaverEngine.app/Contents/MacOS/ScreenSaverEngine?

Câu trả lời:


21

Có, bạn có thể làm điều này với Applescript hoặc Automator .

Cách tôi đã làm những việc như thế này là sử dụng Automator để tạo một Dịch vụ có sẵn trong tất cả các ứng dụng. Một dịch vụ có thể được thực hiện để chạy bash / zsh / ruby ​​/ bất kỳ tập lệnh nào. Sau đó, bạn có thể liên kết tổ hợp phím với dịch vụ trong ngăn Bàn phím của tùy chọn hệ thống.

Gần cuối podcast MacBreak này, quy trình này được hiển thị chi tiết.

Chỉnh sửa: Tôi chỉ nhận thấy bạn không sử dụng Snow Leopard. Tôi không nghĩ việc tạo một dịch vụ toàn hệ thống dễ dàng như vậy với 10.5.8. Tôi đoán bạn không thể nâng cấp vì đó là Powerbook. Bạn có thể muốn xem xét FastScripts , cho phép bạn gán các phím tắt cho bàn phím (miễn phí sử dụng cho tối đa 10 phím tắt) và sử dụng Applescript sau:

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

36

Tôi hiện đang sử dụng FastScripts . Nó bao gồm tất cả các tập lệnh ~/Library/Scripts/, vì vậy bạn không cần phải thêm tập lệnh theo cách thủ công. Nó cũng hỗ trợ các tập lệnh dành riêng cho ứng dụng và nó có một vài tính năng hữu ích với AppleScripts, giống như nó dừng tập lệnh trước khi một lệnh keystrokehoặc key codecho đến khi các phím bổ trợ được phát hành.

Nếu bạn đã mua Powerpack cho Alfred 2 , bạn có thể tạo quy trình công việc như thế này:

Các phím nóng có độ trễ ngắn theo mặc định, nhưng bạn có thể giảm nó bằng cách thay đổi hành vi kích hoạt:

KeyRemap4MacBook cũng hỗ trợ chạy các kịch bản 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>

Các ứng dụng khác hỗ trợ gán phím tắt cho tập lệnh:

Một tùy chọn khác là tạo một dịch vụ Automator:

  1. Mở Automator và chọn mẫu Dịch vụ.
  2. Kiểm tra xem loại đầu vào và phạm vi ứng dụng có chính xác hay thay đổi "văn bản đã chọn" thành "không có đầu vào" nếu dịch vụ không nhận được bất kỳ đầu vào nào.
  3. Thêm một Run Shell Script hoặc Chạy hành động AppleScript cho tập lệnh.
  4. Lưu dịch vụ và cung cấp cho nó một lối tắt từ Tùy chọn hệ thống.

Đã có một lỗi kể từ ngày 10.7, trong đó các phím tắt cho các dịch vụ không luôn hoạt động cho đến khi bạn di chuột qua menu dịch vụ từ thanh menu. Các phím tắt cho các dịch vụ không hoạt động khi một ứng dụng không có menu dịch vụ (như Tower) ở phía trước. Ngoài ra còn có một độ trễ đáng chú ý trước khi các dịch vụ được chạy.


open -a ScreenSaverEnginethậm chí là một chút ngắn hơn.
Jari Keinänen

Hướng dẫn về Quicksilver: macosxtips.co.uk/index_files/ từ
paragbaxi 6/2/2015

FastScripts là phần mềm chia sẻ $ 10 nhưng cũng xứng đáng.
một mọt sách được trả tiền

Bạn có một FastScript cơ bản làm một cái gì đó như liên kết F1 để mở một thiết bị đầu cuối hoặc bất cứ điều gì không?
Nick T

1
Vui lòng thêm Hammerspoon vào danh sách :)
vault

1

Nếu bạn đang sử dụng BetterTouchTool, bạn có thể gán phím tắt cho lệnh shell bằng cách chọn một hành động sau: Kiểm soát các ứng dụng khác> Thực thi lệnh Terminal


0

Dưới đây là một ví dụ kịch bản KeePass.sh tôi đã thực hiện. Tôi vừa thực hiện Nhận thông tin về nó và thiết lập để chạy với Terminal. Sau đó, tôi đã tạo một bí danh cho nó trên Desktop của mình. Nó chạy tập lệnh KeePass.sh bên trong Terminal và sau khi bạn thoát khỏi ứng dụng, nó sẽ giết mọi cửa sổ Terminal đang mở. Bạn có thể muốn điều chỉnh dòng cuối cùng :-)

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

Bạn không cần phải sử dụng bất cứ điều gì đặc biệt như trong câu trả lời của người khác ở đây.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.