Sebelum meningkatkan ke Yosemite, saya menggunakan Keyboard Maestro untuk menjalankan Applescript ini dengan pintasan:
tell application "System Preferences"
reveal pane "com.apple.preferences.Bluetooth"
end tell
tell application "System Events" to tell process "System Preferences"
click button 6 of window 1
end tell
quit application "System Preferences"
Berperilaku seperti yang diharapkan, beralih bluetooth setiap kali saya menekan pintasan saya.
Ini tidak lagi bekerja dengan Yosemite, saya yakin itu ada hubungannya dengan Apple mengubah panel System Preferences atau urutan ikon, tetapi saya tidak yakin apa yang harus diubah. Pintasan Keyboard Maestro aku s memohon file, karena saya mendengar suara yang saya tetapkan untuknya, jadi pasti ada sesuatu dengan skrip.
Inilah yang saya dapatkan di bawah "Balasan" ketika saya menjalankan ini di Editor Skrip Apple:
tell application "System Preferences"
reveal pane "com.apple.preferences.Bluetooth"
--> missing value
end tell
tell application "System Events"
click button 6 of window 1 of process "System Preferences"
--> button 6 of window "Bluetooth" of application process "System Preferences"
end tell
tell application "Script Editor"
quit
end tell
Pembaruan:
Jelas bukan panel yang menyebabkan masalah. Untuk debug, saya mengubah kode ke:
tell application "System Preferences"
set current pane to pane id "com.apple.preferences.bluetooth"
end tell
Dan itu dengan benar membuka panel Bluetooth. Sekarang yang tersisa adalah memikirkan tindakan apa yang ingin saya jalankan di panel ini:
Pembaruan pada solusi: Terima kasih lebih jauh! Keduanya markhunte dan lebih jauh Solusi berhasil bagi saya, tetapi saya memilih yang terakhir karena lebih mirip dengan kode saya. Saya kira Anda tidak dapat memilih dua jawaban "terbaik". Saya berharap ada solusi untuk membuatnya bekerja tanpa memunculkan panel preferensi (secara visual) seperti naskah saya dengan Mavericks, tetapi keduanya harus cukup baik.
sumber
Jawaban:
Diperbarui / Jawaban Lebih Baik:
1) Skrip baru ini tidak menyala.
2) Untuk alasan yang tidak diketahui manusia dan logika (atau hanya saya), applescript kadang-kadang / hampir selalu gagal Matikan Bluetooth , jika Jendela Preferensi Sistem ada di latar belakang. Alih-alih mematikan, yang sebenarnya terjadi adalah Bluetooth segera mengaktifkan kembali dirinya sendiri, sehingga panel ada di a segar negara: ON, tapi tidak ada koneksi
Untuk mengatasinya, salah satu cara untuk membawa SysPref ke depan, seperti pada jawaban aslinya. Atau, jalankan loop yang mengklik tombol lagi (atau untuk yang ke-3) sampai Bluetooth benar-benar mati. Itu sebabnya ada dua variabel dan satu loop dalam skrip. Ini harus membuat skrip lebih dapat diandalkan.
statName
variabel mencatat status asli.Loop
akan terus mengklik tombol hingga statusnya berubah.failSafe
memastikan skrip tidak akan berjalan selamanya jika terjadi kesalahan. Semua dengan biaya kode estetika.Jawaban asli:
Dari Inspektur Aksesibilitas :
button 3
dalam item no.6 pada daftar. Tombol 6 adalah no.11 dalam daftar. Saat Anda meneleponbutton 6
Jendela Preferensi pergi Genie. Kurasa Mavericks memasang semua tombol di depan.sumber
Saya telah belajar banyak di sini, saya harap kontribusi ini membantu seseorang juga! Saya menemukan menggunakan "luncurkan" alih-alih "mengaktifkan" akan membuka aplikasi secara jelas, tetapi tidak sebagai jendela latar depan. Trik lain, atau setidaknya "hal rapi yang saya pelajari baru-baru ini dimungkinkan", adalah menggunakan pengulangan kosong untuk menunggu jendela dimuat (dan tombolnya ada) alih-alih nilai "delay", yang juga saya gunakan untuk memverifikasi perubahan berfungsi sebelum menampilkan pemberitahuan. Sisa kode saya adalah tentang mempertahankan status Preferensi Sistem jika sudah terbuka, atau berhenti, jika tidak.
sumber
Mengaktifkan atau menonaktifkan sederhana yang tidak perlu memeriksa status terlebih dahulu.
sumber
Inilah jawaban saya:
sumber
Berikut ini adalah skrip beralih Bluetooth sederhana yang digunakan blueutil (tersedia melalui Homebrew), tidak ada skrip UI. Sesuaikan
blueutil
variabel sesuai kebutuhan untuk menunjuk keblueutil
biner jika Anda tidak menginstal melalui Homebrew. Ini didasarkan secara longgar pada skrip lama yang saya taruh di sekitarnya yang menyertakan pemberitahuan Growl dan mungkin awalnya dari http://macosxhints.com (MENINGGAL DUNIA).sumber