Bagaimana saya dapat memetakan kembali tombol-tombol tekan dari headset Bluetooth pada OS X?

13

Saya memiliki headset stereo Bluetooth LG Tone (HBS 700) , dan saya menggunakannya dengan OS X Lion.

Headset memiliki tombol putar / jeda play, tetapi tidak seperti tombol putar keyboard saya, yang akan berganti play / pause untuk, katakanlah, pemutar media VLC jika sedang berjalan, tombol putar headset akan meluncurkan iTunes jika belum terbuka, atau toggle play / pause di iTunes jika sudah terbuka. Itu tidak akan beralih bermain / jeda di pemutar media lain.

Dapatkah seseorang menjelaskan peristiwa sistem apa yang kemungkinan dipicu ketika saya menekan tombol play? Jelas bahwa beberapa daemon sistem mendengarkan sesuatu, karena iTunes diluncurkan dan dapat menafsirkan kontrol play / pause / next / prev baik-baik saja ... Apakah ada cara saya dapat mencegat acara penekanan tombol dan memetakan fungsinya? Saya ingin memiliki perilaku yang sama dengan tombol play keyboard.

Terima kasih atas bantuan Anda!

rebus
sumber

Jawaban:

7

Anda mencari Remote Control Daemon yang terletak di:

/System/Library/CoreServices/rcd.app

Itu bisa dinonaktifkan dengan perintah

sudo chmod a-x /System/Library/CoreServices/rcd.app/Contents/MacOS/rcd
killall -9 rcd

(Jika Anda baru saja membunuhnya, launchdakan memulai kembali lagi). Untuk mengaktifkannya kembali,

sudo chmod a+x /System/Library/CoreServices/rcd.app/Contents/MacOS/rcd

Kemudian logout dan kembali untuk launchdmemulai.

Jika ambisi Anda cukup, Anda dapat mencoba mengeditnya dengan hex editor. Ini di luar bidang pengetahuan saya, tetapi saya punya dua saran.

  1. Membuka quicktime (hanya kosong, tidak ada di dalamnya) di latar belakang dapat mencegah daemon menggunakan iTunes. Itu tergantung pada apakah perangkat Anda menggunakan acara sistem yang sama.

  2. Atau, ada utilitas gratis yang terletak di tautan berikut yang menambal daemon untuk Anda. Setelah menjalankannya, daemon akan menggunakan program yang aktif, bukan iTunes. Namun, ini tidak akan memetakan ulang VLC sebagai program yang akan dibuka ketika Anda menekan play. Ini dirancang untuk tombol media keyboard, tapi saya percaya OS melihat tombol LG Tone Anda sebagai acara sistem yang sama. Tautan itu: http://lifehacker.com/5651055/free-your-macs-media-keys-from-itunes-no-manual-hacking-required

Akhirnya, saya dapat memberi tahu Anda bahwa Apple belum menyediakan cara sederhana untuk mengubah pengaturan kendali jarak jauh. Ini sangat disayangkan, karena ini adalah pertanyaan umum mengenai kunci media pada keyboard dan kontrol lain pada perangkat seperti milik Anda. Daripada memberikan solusi, tampaknya mereka telah membuat perubahan pada OS di masa lalu untuk memastikan iTunes adalah program yang digunakan oleh daemon ini. Sayangnya, tidak mungkin ada perbaikan yang lebih baik daripada ini segera.

Blackjack00
sumber
3
Dalam pengalaman saya, perangkat bluetooth yang mengirim sinyal play / pause tidak ditafsirkan dengan cara yang sama seperti tombol media keyboard ditafsirkan. Menggunakan tambalan yang disebutkan, keyboard saya berperilaku seperti yang diharapkan, namun headset bluetooth saya terus meluncurkan iTunes. Hanya berpikir saya tidak akan ini demi anak cucu.
Wilco
Adakah saran bagaimana membuat perubahan ini di OS X Sierra? Mereka memiliki sistem perlindungan os, dan sangat sulit untuk melakukan perubahan seperti itu.
AB
3

Pertama, Anda akan membutuhkan aplikasi keyboard-remapping pihak ketiga yang disebut Karabiner (sebelumnya KeyRemap4MacBook). Aplikasi ini sedikit pengguna tidak ramah tetapi secara teori Anda hanya perlu melakukan ini sekali. Juga saat ini tidak berfungsi pada MacOS Sierra ... jadi ingatlah itu.

Kita mulai...

Instal Karabiner

https://pqrs.org/osx/karabiner/index.html.en

Jalankan Karabiner

Anda harus memberikan izin aksesibilitas jika Anda menginginkan semua fitur.

Gunakan Aplikasi Helper "EventViewer" untuk mendapatkan kode kunci

Buka EventViewer untuk mendapatkan kode kunci / aplikasi / perangkat:

masukkan deskripsi gambar di sini

Buka tab Utama dan kemudian tekan tombol pada keyboard Anda, remote bluetooth, dll. Anda ingin memetakan kembali. Dalam hal ini Anda dapat melihat kode kunci untuk Media-Forward dan Media-Back pada remote bluetooth Satechi saya (yang ingin saya petakan kembali ke tombol panah kiri / kanan).

masukkan deskripsi gambar di sini

Teruskan dan "salin ke papan tulis" dan tempel di dokumen teks untuk nanti. Sekarang tergantung pada kasus penggunaan Anda, Anda dapat pergi ke App atau tab Devices.

Jika Anda ingin membatasi pemetaan ulang kunci Anda untuk aplikasi tertentu, maka Anda ingin membuat aturan pemetaan yang untuk ID aplikasi tertentu (misalnya google chrome). Jadi Anda akan pergi ke tab aplikasi dan mendapatkan ID aplikasi untuk aplikasi yang Anda minati (untuk digunakan nanti ketika kita membuat aturan).

masukkan deskripsi gambar di sini

Dalam kasus saya, saya HANYA ingin memetakan kembali tombol-tombol ini pada remote bluetooth Satechi saya dan tidak ingin mengacaukan cara kerja tombol keyboard saya ... jadi saya ingin membuat aturan spesifik perangkat. Jadi saya pergi ke tab Perangkat.

masukkan deskripsi gambar di sini

Catatan!!! Untuk aplikasi dan perangkat, Anda juga harus menyalin dan menempel ke file teks sehingga Anda memiliki string id perangkat / aplikasi lengkap untuk digunakan dalam aturan kami.

Membangun aturan

Sekarang setelah Anda memiliki kode kunci, aplikasi, dan / atau id perangkat yang disalin dan ditempelkan ke file teks untuk referensi nanti, Anda dapat menutup EventViewer dan kembali ke aplikasi utama.

Aturan default tidak terlalu menarik bagi kami, jadi kami perlu membuat aturan khusus selain mengedit private.xml

masukkan deskripsi gambar di sini

Ini hanya akan meluncurkan jendela pencari yang memperlihatkan private.xml. Silakan dan buka private.xml di editor teks favorit Anda.

Sekarang Anda siap membuat aturan ...

Dokumentasi tentang format file ini ada di sini: https://pqrs.org/osx/karabiner/xml.html.en

Untuk setiap yang <item>Anda butuhkan minimum <name> <identifier> dan <autogen>. Nama hanyalah nama untuk Anda. Identifier juga dibuat oleh Anda tetapi harus unik. autogen adalah tempat Anda menentukan aturan / pemetaan (mis. kunci yang menarik harus mengirim bilah foo kunci).

Yang menarik, Anda dapat menentukan aturan hanya berjalan untuk aplikasi aktif tertentu (saya pikir ini adalah di mana izin aksesibilitas MacOS ikut berperan ... sehingga Karabiner dapat menentukan jendela aktif). Ini dilakukan dengan <only>.

Yang juga menarik (bagi saya) adalah <device_only>yang memungkinkan saya untuk membuat aturan hanya untuk keyboard tertentu (yaitu remote bluetooth satechi saya). Lihat tautan di atas untuk detail lebih lanjut.

Bagaimanapun. Gunakan ID kode kunci, ID perangkat, dan id aplikasi yang Anda dapatkan dari EventViewer untuk membuat aturan khusus Anda.

Milik saya terlihat seperti ini:

<?xml version="1.0"?>
<root>
    <item>
        <name>Satechi Right</name>
        <identifier>private.satechi.right</identifier>
        <device_only>DeviceVendor::RawValue::0x05ac,DeviceProduct::RawValue::0x023c</device_only>
        <autogen>__KeyToKey__ ConsumerKeyCode::MUSIC_NEXT_17, KeyCode::CURSOR_RIGHT</autogen>
    </item>
    <item>
        <name>Satechi Left</name>
        <identifier>private.satechi.left</identifier>
        <device_only>DeviceVendor::RawValue::0x05ac,DeviceProduct::RawValue::0x023c</device_only>
        <autogen>__KeyToKey__ ConsumerKeyCode::MUSIC_PREV_18, KeyCode::CURSOR_LEFT</autogen>
    </item>
</root>

Ringkasan: 2 aturan. Satechi perangkat remote bluetooth saja. "selanjutnya" tombol media memetakan ke panah kanan, "prev" tombol media ke panah kiri. Berlaku untuk semua aplikasi.

Muat aturan

Simpan file XML Anda. Kembali ke aplikasi Karabiner. Buka tab "Ubah Kunci". Klik "Muat Ulang XML" di kiri atas. Aturan baru Anda sekarang harus muncul. Centang kotak untuk mengaktifkan aturan. Uji bahwa pemetaan kunci baru Anda berfungsi seperti yang diharapkan.

masukkan deskripsi gambar di sini

Aplikasi ini jelas tidak ramah pengguna tetapi memungkinkan saya untuk mengatur apa yang saya inginkan dengan cukup mudah setelah saya memahami opsi. Karabiner agak buggy ... Saya punya beberapa acara berhenti muncul di penampil acara meskipun aturan remapping masih berfungsi ... restart membantu.

mattpr
sumber
1
Tampaknya penerus Karabiner, Karabiner-Elements, yang merupakan peningkatan yang diperlukan untuk versi MacOS yang lebih baru, tidak melihat kontrol perangkat media Bluetooth. EventViewer baru tidak mendaftarkan penekanan tombol seperti itu sama sekali, tetapi iTunes tetap memulai. :(
wfaulk