Apakah mungkin untuk menonaktifkan pemindah aplikasi tab-perintah di Mac OS X Lion?

11

Jalan pintas ini membuatku gila. Saya ingin memetakan ulang tab perintah untuk penyisipan cuplikan saat pengkodean, tetapi pengalih menghalangi ...

Sean Mackesey
sumber
duplikat mungkin. superuser.com/questions/548146/…
Daniel Dropik

Jawaban:

6

Anda dapat memetakan tab perintah ke kombinasi tombol lain dengan KeyRemap4MacBook :

<autogen>__KeyToKey__ KeyCode::TAB, VK_COMMAND | ModifierFlag::NONE, KeyCode::F19</autogen>

Ini akan menonaktifkan tab-perintah dan tab-shift-perintah:

<autogen>__KeyToKey__ KeyCode::TAB, VK_COMMAND | ModifierFlag::NONE, KeyCode::VK_NONE</autogen>
<autogen>__KeyToKey__ KeyCode::TAB, VK_COMMAND | VK_SHIFT | ModifierFlag::NONE, KeyCode::VK_NONE</autogen>
Lri
sumber
Terima kasih, ini adalah petunjuk yang bagus. Ini juga baik untuk mengetahui bahwa memetakan kembali melalui DefaultKeyBinding.dict adalah jalan buntu. Saya akan mencoba KeyRemap4MacBook
Sean Mackesey
1
Ini berhasil, terima kasih. Jika tidak jelas bagi orang lain, Anda perlu menambahkan definisi ini private.xmldi dalam <item>tag sendiri di bawah <root>. Kemudian, muat ulang private.xmldan aktifkan opsi baru.
jrhorn424
Pastikan untuk menambahkan nama dan pengenal pada entri <item> <name>Disable Command Tab</name> <identifier>private.disable_command_tab</identifier>
Willem D'Haeseleer
1

Anda dapat melakukannya sebagai level perakitan. Untuk ML 10.8.3, pendaftaran Cmd+ ini Tabterjadi dalam subrutin di alamat 0x10000b258. Dalam pseudo-code, sepertinya:

rax = CPSRegisterForKeyOnConnection(*(int32_t *)rbx, 0x1002cd078, 0x1, 0x1);
if (rax != 0x0) {
    fprintf(**__stderrp, "Error registering cmd-tab key, %d\\n");
}
rax = CPSRegisterForKeyOnConnection(*(int32_t *)0x1002ccda8, 0x1002cd078, 0x2, 0x1);
if (rax != 0x0) {
    fprintf(**__stderrp, "Error registering cmd-shift-tab key, %d\\n");
}

Jadi, jika Anda mengganti kode byte berikut:

488D35691C2C008B3BBA01000000B901000000E85CD71B0085C0741A488B0DD5FC2400488B39488D355B341C0089C230C0E892C51B00488D0563192C008B38488D352A1C2C00BA02000000B901000000E81FD71B0085C0741A488B0D98FC2400488B39488D3541341C0089C230C0E855C51B00

dengan:

90909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090

Dan berhenti Dock.app Anda, itu akan berhasil. Anda juga harus membuka proteksi binary Dock sebelum melakukannya karena biner Dock dienkripsi.

pengguna2199684
sumber
5
bisakah Anda mem-backup jawaban Anda dengan semacam sumber? semua kode itu bisa membingungkan dan menjadi objek ketidakpercayaan oleh pembaca masa depan. semoga kamu mengerti.
Lorenzo Von Matterhorn
1
Juga tambahkan apa yang kode asli lakukan, dan penggantian (pembongkaran akan baik-baik saja sejauh yang saya ketahui)
vonbrand
3
Ini jawaban yang sangat keren. Sementara kekhawatiran dalam dua komentar lainnya mungkin valid, tawarannya menyedihkan bahwa semua komentar mempertanyakannya, tetapi tidak ada yang menunjukkan bahwa ini cukup keren. Bagaimana Anda tahu alamat subrutin mana, dan apa 090909? (no-op?)
Gal
0

Apakah jawaban yang dapat diterima mencakup pembuatan ulang itu?

Mac OS X Lion (10.7) mengalami kesulitan mendeteksi tata letak keyboard ketika saya pertama kali memasangnya. Tetapi setelah mengikuti instruksi (yaitu tekan tombol di sebelah kanan Shift Kiri, dll.) Ia dengan benar mengidentifikasi tata letak.

Dalam System Preferences, Lion memiliki panel keyboard yang luar biasa:

Cuplikan layar panel keyboard Lion

Selanjutnya, pergi ke Tombol Pengubah ...

masukkan deskripsi gambar di sini

Bingo, sekarang CapsLock berperilaku sebagai Kontrol.

Atau, Anda dapat mencoba dan mempengaruhi ikatan utama:

Edit file keybindings default, ~ / Library / KeyBindings / DefaultKeyBinding.dict. Buat direktori dan / atau file jika belum ada di sana, dan buat seperti ini:

{
  /* Remap Home / End to be correct */
  "\UF729" = "moveToBeginningOfLine:"; /* Home */
  "\UF72B" = "moveToEndOfLine:"; /* End */
  "$\UF729" = "moveToBeginningOfLineAndModifySelection:"; /* Shift + Home */
  "$\UF72B" = "moveToEndOfLineAndModifySelection:"; /* Shift + End */
}

Jika sudah ada entri di DefaultKeyBinding.dict, cukup tambahkan 4 pemetaan baru di atas ke bagian utama file Anda. Reboot mungkin diperlukan untuk menjalankannya.

Anda perlu menyesuaikan kode di atas untuk apa yang Anda coba lakukan

Everett
sumber
1
Sementara ini secara teoritis dapat menjawab pertanyaan, akan lebih baik untuk memasukkan bagian-bagian penting dari jawaban di sini, dan menyediakan tautan untuk referensi.
Luke Kanada
3
Setuju dengan komentar di atas - jawaban ini terlalu bundaran. Saya menghargai jawaban yang Anda coba, tapi tolong coba lebih langsung. Saya merasa entri ini cenderung membingungkan orang lain yang menemukan pertanyaan ini di masa depan. Juga, memetakan ulang seluruh kunci perintah ke sesuatu yang lain bukanlah solusi yang dapat diterima bagi saya, karena saya menggunakan kunci perintah untuk banyak hal lainnya. Saya tidak tahu apakah kode yang Anda tampilkan di bagian kedua dari solusi Anda akan memungkinkan saya untuk menonaktifkan CMD + TAB secara selektif, tetapi jika itu dapat tolong jelaskan secara eksplisit.
Sean Mackesey
Memetakan kembali kunci perintah ke Caps Lock mungkin adalah ide terbaik yang bisa saya tawarkan. Anda masih mendapatkan kunci perintah, dan saya akan terkejut mendengar Anda benar-benar menggunakan caps lock untuk sesuatu. Opsi kedua adalah menunjukkan jumlah pekerjaan yang harus Anda lakukan jika Anda memiliki alasan mengapa cara yang mudah tidak akan berhasil. Di luar dari dua ini saya tidak memiliki hal lain untuk Anda. Saya memberikan bagian-bagian penting seperti yang direkomendasikan Luke.
Everett
Saya sebenarnya sudah memetakan CapsLock ke Escape (penting jika Anda menggunakan Vim!). Terima kasih atas usaha Anda, sekali lagi saya akan merekomendasikan Anda mengedit posting Anda. Harap tautkan ke sesuatu tentang pembuatan ulang kunci pengubah, sehingga peramban di masa depan tidak perlu menjelajahi seluruh penjelasan ketika mereka tahu bahwa solusi itu tidak akan bekerja untuk mereka.
Sean Mackesey