Chuyển đổi sử dụng tất cả F1, F2 làm khóa tiêu chuẩn


25

Tôi thường xuyên cài đặt "Sử dụng tất cả F1, F2 làm các phím tiêu chuẩn" và muốn tự động hóa nó thông qua một tập lệnh (hoặc một phím tắt). Có thể không? Tôi đã cố gắng Google các đối số phù hợp cho defaults write ...nhưng không thành công.

cài đặt fn


Cập nhật: Tôi đã kết thúc việc tạo https://github.com/jkbrzt/macos-fn-toggle dựa trên các câu trả lời ở đây.

Cập nhật II: Hiện tại cũng có - https://github.com/Pyroh/Fluor - một ứng dụng thanh thực sự đẹp cho phép bạn tự động thay đổi hành vi của các phím fn của bàn phím tùy thuộc vào ứng dụng đang hoạt động.

Câu trả lời:


25
tell application "System Preferences"
    reveal anchor "keyboardTab" of pane "com.apple.preference.keyboard"
end tell
tell application "System Events" to tell process "System Preferences"
    click checkbox 1 of tab group 1 of window 1
end tell
quit application "System Preferences"

Bạn cũng có thể sử dụng defaults write -g com.apple.keyboard.fnState -bool true, nhưng tôi không biết cách nào để áp dụng các thay đổi mà không cần đăng xuất và đăng nhập lại.


4
Tôi đã đóng gói tập lệnh này dưới dạng một ứng dụng bằng Automator để có thể chạy nhanh từ Spotlight: github.com/jkbr/macos-fn-toggle
Jakub Roztocil

@jkbr Ứng dụng của bạn trên github chỉ là thứ tôi đang tìm kiếm. Cảm ơn!
mdwhatcott

1
Bạn cũng có thể lưu tập lệnh dưới dạng một ứng dụng từ AppleScript Editor. Chỉ cần dán tập lệnh vào AppleScript Editor, nhấn ⌘S và đặt định dạng cho ứng dụng.
Lri

Như một giải pháp thay thế khác, trong trình tự động hóa tạo một "dịch vụ" mới, hãy thêm lệnh Run Applescript và dán nó vào nơi nó nói (* Kịch bản của bạn ở đây *). Lưu và sau đó menu dịch vụ trong tất cả các ứng dụng sẽ bao gồm fn :)
Spyder

2
Trên Mavericks, bạn gặp lỗi như: "AppleScript Editor không được phép truy cập hỗ trợ." Vì vậy, bạn phải đi đến "Bảo mật và quyền riêng tư" trong Tab Quyền riêng tư, chọn Tính chính xác và cho phép ứng dụng của bạn thực hiện điều đó. Bạn sẽ phải cung cấp mật khẩu quản trị viên để mở khóa.

9

Tôi không biết về tập lệnh nhưng với một số kỹ thuật đảo ngược và Googling tiện dụng, tôi đã thực hiện điều này vì tôi không thích các công cụ GUI AppleScript hiện có ngoài đó:

https://github.com/nelsonjchen/fntoggle

Biên dịch nhị phân (Toss vào PATH của bạn hoặc nếu bạn không biết đó là gì /usr/local/bin/): https://github.com/nelsonjchen/fntoggle/release

Gọi nó từ bất cứ thứ gì (ControlPlane, Automator sh, v.v.) bằng cách chạy fntoggle onhoặc fntoggle off.

Kịch bản này không yêu cầu bật khả năng truy cập GUI. Nó cũng không yêu cầu đăng xuất và đăng nhập lại.


Điều này vẫn hoạt động ở Sierra? Không làm việc ở đây.
Warren P

@WarrenP Vấn đề này có thể được khai sáng. github.com/nelsonjchen/fntoggle/issues/4
crazysim

4

Bạn có thể đọc trạng thái hiện tại với những điều sau đây. (1 cho các phím F, 0 cho phương tiện / độ sáng, v.v.)

defaults read "Apple Global Domain" "com.apple.keyboard.fnState"

Bạn có thể viết nó, tuy nhiên nó sẽ không thay đổi cho đến khi bạn khởi động lại. (Tôi đã thử giết Dock và Finder thay vào đó, không có may mắn)

defaults write "Apple Global Domain" "com.apple.keyboard.fnState" "1" ## F1 F2 etc
defaults write "Apple Global Domain" "com.apple.keyboard.fnState" "0" ## Brightness/Media

Tôi nghi ngờ ai đó có nhiều kiến ​​thức hơn về những gì đọc tệp plist này có thể viết ra một kịch bản để giết và khởi động lại bất cứ thứ gì đọc bản plist này, điều này sẽ khiến nó thừa nhận sự thay đổi.


Cảm ơn, đó là chìa khóa chính xác. Thay đổi trực tiếp tuy nhiên dường như không thay đổi hành vi.
Jakub Roztocil

không giúp đỡ mặc dù đã khởi động lại
Daniel

1

Trên thực tế, bạn không phải chạy bất kỳ ứng dụng nào với ánh đèn sân khấu hay bất cứ thứ gì, cách tốt nhất theo ý kiến ​​của tôi là:

  1. Tạo dịch vụ mới trong Automator
  2. Kéo: "Chạy tập lệnh của Apple
  3. Trong phần "Nhận dịch vụ đã chọn": chọn không có đầu vào
  4. Dán mã này từ câu trả lời khác này :

    tell application "System Preferences"
    reveal anchor "keyboardTab" of pane "com.apple.preference.keyboard"
    end tell
    tell application "System Events" to tell process "System Preferences"
    click checkbox 1 of tab group 1 of window 1
    end tell
    quit application "System Preferences" 
  5. Lưu dưới dạng "tên của bạn"

  6. Mở tùy chọn hệ thống → Bàn phím → Phím tắt
  7. Trong menu bên trái chọn: "Dịch vụ"
  8. Ở bên phải, cuộn toàn bộ xuống Chung và gán cho dịch vụ của bạn một số phím nóng duy nhất, tôi chọn cmd + shift + L

  9. Đó là nó! Nó không phải là rất nhanh hoặc bất cứ điều gì, nhưng bạn không phải chạy bất kỳ ứng dụng nào hoặc tự mình đi đến Tùy chọn.

Phụ lục: Với EL Capitan, công cụ này chỉ hoạt động khi Automator nằm trong tiêu điểm, nếu không (ví dụ: nếu bạn gọi tập lệnh qua phím tắt), bạn sẽ nhận được thông báo "Hành động của Run Run AppleScript gặp lỗi".


0

Chào mừng bạn đến hỏi khác nhau! Bạn đã đăng bài này dưới dạng câu trả lời, chỉ dành cho những điều trực tiếp trả lời câu hỏi. Câu trả lời trên Hỏi khác nhau không chỉ là một liên kết. Bạn có thể bao gồm một liên kết, nhưng vui lòng tóm tắt hoặc trích dẫn nó trong câu trả lời. Ý tưởng là làm cho câu trả lời đứng một mình. Vui lòng xem Câu hỏi thường gặp để biết thêm thông tin. Cảm ơn.
Nathan Greenstein

0

Đưa ra tất cả các câu trả lời tôi đã áp dụng giải pháp sau đây cho Yosemite.

Sử dụng Automator, tôi đã tạo một ứng dụng với mã sau:

tell application "System Preferences"
reveal anchor "keyboardTab" of pane "com.apple.preference.keyboard"
end tell
tell application "System Events" to tell process "System Preferences"
click checkbox 1 of tab group 1 of window 1
end tell
quit application "System Preferences"

Lưu nó, thêm nó vào Ứng dụng. Để tránh "Trình soạn thảo AppleScript không được phép truy cập trợ giúp.", Hãy truy cập Tùy chọn hệ thống-> Bảo mật & quyền riêng tư-> Quyền riêng tư -> Mục truy cập và thêm ứng dụng của bạn.

Nếu giống như tôi, bạn thích một phím tắt, thì trong Automator tạo Apple Script mới với Launch App và chọn ứng dụng của bạn. Sau đó quay lại Tùy chọn hệ thống-> Bàn phím-> Phím tắt-> Mục dịch vụ và ở cuối danh sách, gán phím tắt cho tập lệnh của bạn.

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.