Beralih "Gunakan semua F1, F2 sebagai kunci standar" melalui skrip

25

Saya beralih pengaturan "Gunakan semua F1, F2 sebagai kunci standar" sangat sering dan ingin mengotomatiskannya melalui skrip (atau pintasan keyboard). Apa itu mungkin? Saya sudah mencoba ke Google argumen yang tepat untuk defaults write ...tetapi tidak berhasil.

pengaturan fn


Pembaruan: Saya akhirnya membuat https://github.com/jkbrzt/macos-fn-toggle berdasarkan jawaban di sini.

Pembaruan II: Sekarang juga ada - https://github.com/Pyroh/Fluor - aplikasi menubar yang sangat bagus yang memungkinkan Anda untuk secara otomatis mengubah perilaku tombol fn keyboard tergantung pada aplikasi yang aktif.

Jakub Roztocil
sumber

Jawaban:

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"

Anda juga dapat menggunakan defaults write -g com.apple.keyboard.fnState -bool true, tetapi saya tidak tahu cara menerapkan perubahan tanpa keluar dan kembali lagi.

Lri
sumber
4
Saya telah mengemas skrip ini sebagai aplikasi menggunakan Automator sehingga dapat dengan cepat dijalankan dari Spotlight: github.com/jkbr/macos-fn-toggle
Jakub Roztocil
@jkbr Aplikasi Anda di github adalah hal yang saya cari. Terima kasih!
mdwhatcott
1
Anda juga dapat menyimpan skrip sebagai aplikasi dari AppleScript Editor. Cukup tempelkan skrip ke AppleScript Editor, tekan ⌘S, dan atur format ke aplikasi.
Lri
Sebagai alternatif lain, dalam automator buat "layanan" baru, tambahkan perintah Jalankan Applescript dan rekatkan ini di tempatnya (* Script Anda ada di sini *). Simpan, dan kemudian menu layanan di semua aplikasi akan mencakup fn :)
Spyder
2
Pada Mavericks Anda mendapatkan kesalahan seperti: "Editor AppleScript tidak diizinkan akses bantuan." Jadi Anda harus pergi ke "Keamanan dan Privasi" di Tab Privasi, pilih Aksesibilitas dan memungkinkan aplikasi Anda untuk melakukan itu. Anda harus memberikan kata sandi admin untuk membuka kunci.
9

Saya tidak tahu tentang skrip tetapi dengan beberapa rekayasa balik dan Googling yang praktis, saya membuat ini karena saya tidak suka hal-hal yang ada dengan AppleScript GUI yang ada di luar sana:

https://github.com/nelsonjchen/fntoggle

Biner terkompilasi (Masukkan ke PATH Anda atau jika Anda tidak tahu apa itu /usr/local/bin/): https://github.com/nelsonjchen/fntoggle/releases

Sebut saja dari apa pun (ControlPlane, Automator sh,, dll) dengan menjalankan fntoggle onatau fntoggle off.

Skrip ini tidak memerlukan aksesibilitas GUI untuk dihidupkan. Itu juga tidak perlu logout dan kembali.

crazysim
sumber
Apakah ini masih berfungsi di Sierra? Tidak bekerja di sini
Warren P
@ WarrenP Masalah ini mungkin mencerahkan. github.com/nelsonjchen/fntoggle/issues/4
crazysim
4

Anda dapat membaca kondisi saat ini dengan yang berikut ini. (1 untuk tombol-F, 0 untuk media / kecerahan dll)

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

Anda dapat menulisnya, namun itu tidak akan berubah sampai Anda reboot. (Saya mencoba membunuh Dock dan Finder sebagai gantinya, tidak berhasil)

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

Saya mencurigai seseorang dengan pengetahuan lebih tentang apa yang membaca file plist ini dapat menulis sebuah skrip untuk membunuh dan me-restart apa pun yang membaca plist ini, yang seharusnya membuatnya mengakui perubahan.

pengguna2245192
sumber
Terima kasih, itulah kunci yang benar. Mengubahnya secara langsung namun tampaknya tidak mengubah perilaku.
Jakub Roztocil
tidak membantu meskipun
Daniel
1

Sebenarnya, Anda tidak perlu menjalankan aplikasi apa pun dengan sorotan atau apa pun, cara terbaik menurut saya adalah:

  1. Buat Layanan baru di Automator
  2. Seret: "Jalankan skrip Apple
  3. Dalam "Penerima layanan yang dipilih": pilih tidak ada input
  4. Rekatkan kode ini dari jawaban lain ini :

    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. Simpan sebagai "namamu"

  6. Buka System Preferences → Keyboard → Shortcuts
  7. Di menu sebelah kiri pilih: "Layanan"
  8. Di sebelah kanan, gulir ke bawah ke General, dan berikan hotkey unik pada layanan Anda, saya memilih cmd + shift + L

  9. Itu dia! Ini tidak terlalu cepat atau apa pun, tetapi Anda tidak harus menjalankan aplikasi apa pun atau pergi sendiri ke Preferensi.

Tambahan: Dengan EL Capitan ini berfungsi hanya ketika Automator dalam fokus, jika tidak (mis. Jika Anda memanggil skrip melalui pintasan keyboard) Anda mendapatkan "Tindakan" Jalankan AppleScript "menemukan pesan kesalahan".

Teaman
sumber
0

Beberapa AppleScript yang mungkin membantu: Applescript untuk menghidupkan kunci F1-F11 sebagai tombol fungsi - MacRumors Forums


sumber
Selamat Datang di Tanya Berbeda! Anda telah memposting ini sebagai jawaban, yang hanya untuk hal-hal yang secara langsung menjawab pertanyaan yang diajukan. Jawaban tentang Tanya yang berbeda harus lebih dari sekadar tautan. Tidak apa-apa untuk memasukkan tautan, tapi tolong rangkum atau kutip dalam jawabannya. Idenya adalah untuk membuat jawabannya berdiri sendiri. Silakan lihat FAQ untuk informasi lebih lanjut. Terima kasih.
Nathan Greenstein
0

Mengingat semua jawaban, saya menerapkan solusi berikut untuk Yosemite.

Menggunakan Automator, saya membuat aplikasi dengan kode berikut:

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"

Simpan, tambahkan ke Aplikasi. Untuk menghindari "Editor AppleScript tidak diizinkan mengakses bantuan.", Buka System Preferences-> Security & Privacy-> Privacy tap-> Entri Aksesibilitas dan tambahkan aplikasi Anda.

Jika seperti saya, Anda ingin pintasan, maka di Automator buat Apple Script baru dengan Launch App dan pilih aplikasi Anda. Kemudian kembali ke System Preferences-> Keyboard-> tab Shortcut-> Entri Layanan dan di akhir daftar, tetapkan pintasan ke skrip Anda.

Rwanou
sumber