Menggunakan Caps Lock sebagai Esc di Mac OS X

449

Bagaimana cara saya Caps Lockbekerja seperti Escdi Mac OS X?

lekukan
sumber
31
Ini sepertinya tugas standar untuk seorang programmer yang menggunakan vim; karenanya suara saya untuk dibuka kembali
Jeromy Anglim
4
Alternatif adalah untuk memetakan Caps Lock Control (System Preferences> Keyboard> Modifier Keys) dan mengeksekusi urutan escape Ctrl + [untuk esc. Berguna untuk Vim.
thelostspore
2
Solusi asli yang berfungsi di macOS Sierra: stackoverflow.com/a/41004544/1940276
Kevin Roth
1
Solusi asli yang berfungsi di macOS Sierra adalah jawaban terbaik kedua di sini (dari @rkusa)
Marián Černý
Pertanyaan terkait pada Ask Different: Bagaimana saya bisa memetakan ulang Caps lock menjadi Escape dan Control?
joeytwiddle

Jawaban:

394

Edit: Seperti dijelaskan dalam jawaban ini , versi yang lebih baru dari MacOS sekarang memiliki dukungan asli untuk rebinding Caps Lockuntuk Escape. Jadi tidak perlu lagi menginstal perangkat lunak pihak ketiga untuk mencapai hal ini.


Inilah usaha saya pada jawaban walk-through visual yang komprehensif (dengan tautan) tentang bagaimana mencapai ini menggunakan Seil (sebelumnya dikenal sebagai PCKeyboardHack).

  1. Pertama, masuk ke System Preferences , pilih Keyboard , lalu Tab Keyboard (tab pertama), dan klik Modifier Keys :

Langkah 1

Dalam dialog munculan, tetapkan Caps Lock Key ke No Action:

pilih tidak ada tindakan

2) Sekarang, klik di sini untuk mengunduh Seil dan menginstalnya:

3) Setelah instalasi, Anda akan menginstal Aplikasi baru (Mountain Lion dan yang lebih baru) dan jika Anda menggunakan OS yang lebih lama, Anda mungkin harus memeriksa panel System Preferences baru:

buka seil atau panel preferensi

4) Centang kotak yang mengatakan "Ubah Caps Lock" dan masukkan "53" sebagai kode untuk tombol escape:

atur kode keyboard

Dan kamu selesai! Jika tidak segera bekerja, Anda mungkin perlu me-restart mesin Anda.

Terkesan? Ingin Lebih Banyak Kontrol?

Anda mungkin juga ingin memeriksa KeyRemap4MacBook yang sebenarnya merupakan alat pembuat ulang keyboard andalan pqrs.org- juga gratis.

Jika Anda menyukai alat ini, Anda dapat memberikan sumbangan . Saya tidak memiliki afiliasi dengan mereka, tetapi saya telah menggunakan alat ini untuk waktu yang lama dan harus mengatakan orang-orang di sana telah melakukan pekerjaan yang sangat baik untuk mempertahankan ini, menambahkan fitur dan memperbaiki bug.

Berikut screenshot untuk menunjukkan beberapa (ratusan) opsi yang dapat dipilih:

Gambar 1.png

PQRS juga memiliki utilitas hebat bernama NoEjectDelay yang dapat Anda gunakan bersama dengan KeyRemap4MacBook untuk memprogram ulang kunci Eject. Setelah sedikit mengutak-atik, saya telah mengatur saya untuk beralih AirPort Wifi.

Utilitas ini menawarkan fleksibilitas tak terbatas saat memetakan kembali keyboard Mac. Selamat bersenang-senang!

cwd
sumber
3
Saya ingin mengklarifikasi bahwa saya telah menggunakan PCKeyboardHack sendirian tanpa KeyRemap4Macbook selama hampir 2 tahun untuk melakukan hal ini.
rossipedia
13
Perhatikan bahwa jika Anda menggunakan keyboard eksternal, Anda harus mengulangi langkah pertama (yaitu, caps lock = no action) untuk setiap keyboard. Saya gagal melakukan langkah ini untuk keyboard eksternal saya, dan sebagai hasilnya caps lock tidak merespon penekanan tombol yang sangat cepat karena perlindungan caps lock yang tidak disengaja. superuser.com/questions/317900/eliminate-macbook-capslock-delay
Jeromy Anglim
11
Tutorial yang bagus. Saya memetakan Caps Lock ke Esc selama sekitar satu tahun. Itu sangat efisien. Namun suatu hari, saya berpasangan dengan pengembang senior. Saya mengatakan kepadanya bahwa saya menggunakan Vim sebagai editor utama saya. Aku juga, katanya. Dia membuka mesinnya dan kami mulai bekerja. Ketika tiba giliran saya untuk mengedit kode, saya gagal dan tersandung karena Caps Lock-nya tidak dipetakan. Aku terus berusaha terus sampai ke Esc, tapi aku memukul Caps sesekali dan kemudian perintah normalku akan berubah. Dia mengajari saya bahwa Ctrl-c juga akan menurunkan Anda kembali ke mode Visual. Bantulah diri Anda dan mulai menggunakan Ctrl-c.
campeterson
7
(Belajar lebih banyak setiap hari) CTRL-[sebenarnya setara dengan ESC. stackoverflow.com/questions/5030164/…
campeterson
5
Akan lebih bagus jika Anda juga dapat mengedit dan menyebutkan di atas bahwa ini sekarang adalah fitur asli di macOS 10.12.1 per @ rkusa jawaban sehingga pengguna baru tidak harus mengunduh perangkat lunak pihak ketiga
edhurtig
309

Sejak MacOS 10.12.1 adalah mungkin untuk remap Caps Lockke Escnative (System Preferences -> Keyboard -> Modifier Keys).

masukkan deskripsi gambar di sini

rkusa
sumber
11
Luar biasa! Saya menemukan ini setelah mendengar MBP baru tidak akan memiliki kunci keluar. Sepertinya Apple mengantisipasi beberapa reaksi.
Andy E
1
Menjalankan El Capitan 10.11.6 dan pengaturan ini sudah tersedia.
zool
1
Terima kasih Tuhan untuk ini; setelah Sierra mematahkan Seil / Karabiner, kupikir aku sudah dikutuk.
Philip
4
Anehnya, saya di 10.11.6 dan tidak memiliki opsi ini. Saya hanya diizinkan untuk memetakan ulang esc menjadi caps, ctrl, opt, atau command. Ini berlaku untuk keyboard WASD v2 saya.
Benny Powers
1
Apakah ada cara untuk melakukan ini melalui commandline? Mungkin dalam metode yang mirip dengan ini? github.com/herrbischoff/awesome-osx-command-line#keyboard
Jordan Eldredge
40

Saya tidak senang dengan salah satu jawaban di sini, dan pergi mencari solusi baris perintah .

Di macOS Sierra 10.12, Apple memperkenalkan cara baru bagi pengguna untuk memetakan kembali kunci.

  • Tidak perlu bermain-main dengan sistem GUI
  • Tidak ada hak khusus yang diperlukan
  • Sepenuhnya dapat dikustomisasi
  • Tidak perlu menginstal omong kosong pihak ketiga seperti PCKeyboardHack / Seil / Karabiner / KeyRemap4MacBook / DoubleCommand / NoEjectDelay

Jika itu terdengar bagus untuk Anda, lihatlah hidutil.

Misalnya, untuk memetakan ulang caps-lock untuk keluar, lihat tabel kunci dan temukan bahwa caps-lock memiliki kode penggunaan 0x39 dan escape memiliki kode penggunaan 0x29. Masukkan kode-kode ini atau akan dengan nilai hex 0x700000000 di sumber dan dest seperti ini:

hidutil property --set '{"UserKeyMapping":[{"HIDKeyboardModifierMappingSrc":0x700000039,"HIDKeyboardModifierMappingDst":0x700000029}]}'

Anda dapat menambahkan pemetaan lain dalam perintah yang sama. Secara pribadi, saya ingin memetakan kembali caps-lock ke backspace, dan remap backspace untuk menghapus:

hidutil property --set '{"UserKeyMapping":[{"HIDKeyboardModifierMappingSrc":0x700000039,"HIDKeyboardModifierMappingDst":0x70000002A}, {"HIDKeyboardModifierMappingSrc":0x70000002A,"HIDKeyboardModifierMappingDst":0x70000004C}]}'

Untuk melihat pemetaan saat ini:

hidutil property --get "UserKeyMapping"

Perubahan Anda akan hilang pada saat reboot sistem. Jika Anda ingin mereka tetap ada, masukkan ke dalam skrip dan siapkan pengait login:

sudo defaults write com.apple.loginwindow LoginHook /path/to/login_script.sh
wim
sumber
3
+! ini adalah cara modern dan benar untuk memetakan kembali kunci pada macOS
Fanckush
2
Masalah Karabiner dengan kunci berulang menyebabkan saya mencari solusi asli untuk memetakan ulang kunci. Posting ini dan yang lainnya di apple.stackexchange.com sangat membantu.
chb
Terima kasih untuk ini, +1! Saya menambahkan beberapa catatan tangensial ke pos Apple yang semoga menambah nilai bagi kita orang miskin yang tidak menginginkan kunci Esc tetapi tidak pada Caps Lock.
tripleee
Metode hebat untuk MacBook yang memiliki masalah dengan keyboard bawaan. Milik saya menyebabkan masalah dengan Pengaturan Keyboard sehingga saya tidak dapat memetakan ulang tombol apa pun di sana.
Igor
Saya tidak dapat membuat ini berfungsi dengan baik dengan LoginHookmetode - saya kira mungkin sesuatu setelah dieksekusi memilih pengaturan keyboard lokal saya untuk keyboard Skandinavia? Bagaimanapun, stackoverflow.com/a/22872222/874188 catatan yang LoginHooksudah usang, dan menganjurkan menggunakan launchdsebagai gantinya.
tripleee
34

Itu mungkin.

Solusi 1

Dari sebuah artikel di TrueAffection.net.

  • Unduh PCKeyboardHack dan instal.
  • Pergi ke PCKeyboardHack di System Preferences.
  • Aktifkan 'Ubah Caps Lock' dan atur kode kunci ke 53.

Solusi 2

Solusi ini tidak melibatkan menambal driver keyboard, tetapi memberi Anda solusi spesifik Vim.

OS X mendukung pemetaan tombol Caps Lock ke sejumlah besar tombol, tetapi Anda harus melakukannya 'dengan tangan', mengedit file .plist. Prosesnya dijelaskan dalam artikel ini . Sebagai tambahan pada petunjuk itu, saya sarankan Anda mengatur Caps-Lock menjadi None di System Preferences, maka Anda hanya perlu mengubah satu nilai dalam file .plist. Selain itu, Anda tentu saja dapat menggunakan Editor Daftar Properti alih-alih melalui langkah-langkah konversi XML.

Caranya adalah dengan memetakan tombol Caps Lock ke tombol Bantuan (kode 6), yang tidak ada di sebagian besar keyboard. Tetapi jika ya, itu akan diperlakukan sebagai kunci masukkan, yang mungkin tidak Anda gunakan, karena Anda bertanya tentang memetakan kembali Caps Lock Anda untuk mencegah peregangan tangan Anda;)

Anda kemudian dapat memetakan Bantuan dan Insertkunci Escdalam vim.

map  <Help> <Esc>
map! <Help> <Esc>
map  <Insert> <Esc>
map! <Insert> <Esc>

Ini akan bekerja untuk gvim (Vim.app). Saya tidak membuatnya bekerja dengan vim di Terminal dan saya belum mengujinya dengan MacVim.

Jadi, ini agak rumit, solusi setengah matang atau menginstal peretasan pihak ketiga. Pilihan Anda;)

Sunting: Hanya perhatikan solusi 3, jika Anda menggunakan MacVim, Anda dapat menggunakannya Ctrl, Optiondan Commandsebagai Esc. Dengan System Preferences, mudah untuk memetakan Caps Lock ke salah satu tombol itu.

belut
sumber
1
Solusi 3: Bagaimana Anda menggunakan Ctrl, Option, atau Command sebagai Esc di MacVim? Saya tidak dapat menemukan pengaturan ini di preferensi.
clizzin
Anda memetakannya di preferensi sistem => keyboard.
Maletor
9
Di mana petunjuk yang Anda singgung?
Matthew Schinckel
2
Maletor - tidak ada tempat di sana untuk memberi tahu macvim untuk menggunakan kendali sebagai pelarian
Scott Schulthess
1
@MatthewSchinckel di sini adalah satu tautan seperti itu: hints.macworld.com/article.php?story=20060825072451882
Ben Challenor
30

Satu-satunya yang saya tahu bagaimana melakukannya adalah memetakan Caps Lock ke Control, atau Option, atau Command. Ini dapat dilakukan melalui panel Keyboard & Mouse Preferensi Sistem. Klik pada "Tombol Pengubah" di kiri bawah dan Anda akan dapat memetakan ulang Caps Lock, Kontrol, Opsi, dan Perintah, ke salah satu dari mereka.

@Craig: Ini menunjukkan bahwa Caps Lock dapat digunakan sebagai tombol normal - yaitu, non-beralih -. Di MacBook saya, karena saya telah memetakan kembali Caps Lock untuk Kontrol, lampu Caps Lock tidak pernah menyala. Ini hanya bertindak seperti tombol Kontrol.

masukkan deskripsi gambar di sini

EfForEffort
sumber
2
gambar-gambar cantik di sini: stackoverflow.com/questions/162896/…
Kyle Cronin
1
Sayangnya tidak dengan keyboard Logitech, jadi tidak ada tombol escape di CapsLock, no vim == saya mengembalikan keyboard
Enric Ribas
14

Seil belum tersedia di macOS Sierra (10.12 beta). Karena itu, saya telah menggunakan Keyboard Maestro dengan pengaturan ini:masukkan deskripsi gambar di sini

Penghargaan untuk komentar github ini: https://github.com/tekezo/Seil/issues/68#issuecomment-230131664

Michael Glass
sumber
2
Saya menggunakan github.com/tekezo/Karabiner-Elements (yang berfungsi di Sierra). Bekerja sangat baik sejauh ini, meskipun saya berharap itu berhasil "Control_L ke Control_L (+ ketika Anda mengetik Control_L saja, kirim Escape)"
atomkirk
1
@atomkirk Maukah Anda berbagi konfigurasi Karabiner JSON yang Anda gunakan?
LandonSchropp
1
{"profil": [{"nama": "Profil default", "dipilih": benar, "simple_modifications": {"caps_lock": "escape"}}]}
atomkirk
Karabiner melakukan trik untuk saya dengan atomonk JSON. Meskipun screenshot di atas, Keyboard Maestro UI berantakan dan saya tidak bisa mengkonfigurasinya.
Paul
10

Setelah mencoba beberapa solusi ini, saya punya beberapa catatan:

DoubleCommand tidak akan memungkinkan Anda untuk menukar esc dan caps-lock.

PCKeyboardHack akan memungkinkan Anda untuk memetakan capslock untuk melarikan diri,tetapi tidak memiliki kemampuan untuk memetakan melarikan diri ke capslock. Versi terbaru akan memungkinkan Anda untuk melakukan pertukaran lengkap dengan mengedit kedua tombol.

Ini mungkin atau mungkin tidak cukup untuk kebutuhan Anda (saya tahu itu untuk saya).

Zxaos
sumber
1
PCKeyboardHack tidak membiarkan Anda memetakan melarikan diri ke capslock, tetapi aplikasi pendamping KeyRemap4MacBook tidak. Ini memungkinkan Anda memetakan "Escape to CapsLock" dan "Shift + Escape to CapsLock".
Rory O'Kane
9

Jika Anda tidak ingin menginstal aplikasi pihak ketiga dan Anda benar-benar hanya peduli vim di dalam iTerm, berikut ini berfungsi:

Remap CapsLock untuk Membantu seperti yang dijelaskan di sini .

Versi singkat: gunakan plutil atau mirip dengan edit ~/Library/Preferences/ByHost/.GlobalPreferences*.plist, seharusnya terlihat mirip dengan ini:

<key>HIDKeyboardModifierMappingDst</key>
<integer>6</integer>
<key>HIDKeyboardModifierMappingSrc</key>
<integer>0</integer>

Mengulang kembali! Log-out dan log-in yang sederhana tidak berhasil untuk saya.

Di iTerm, tambahkan pemetaan kunci baru untuk Bantuan: kirim kode hex 0x1b, yang sesuai dengan Escape.

Saya tahu ini bukan apa yang diminta, tetapi saya berasumsi maksud banyak orang mencari solusi seperti ini sebenarnya adalah varian yang lebih khusus ini.

pengguna2581875
sumber
4

Untuk benar-benar menukar tombol escape dengan tombol caps lock (tidak hanya memetakan satu ke yang lain) menggunakan PCKeyboardHack dan KeyRemap4MacBook, Anda harus mengikuti petunjuk di utas ini , memetakan kunci caps lock ke kode kunci yang tidak digunakan oleh keyboard tetapi dicatat oleh KeyRemap4MacBook (mis. 110). Kemudian, di PCKeyboardHack, pilih opsi yang sesuai yang memetakan kode kunci untuk melarikan diri (dalam kasus 110, itu "Application Key to Escape"). Begini tampilan preferensi KeyRemap4MacBook Anda (asalkan Anda telah memilih kotak centang "show enabled only").

masukkan deskripsi gambar di sini

Saya awalnya mencoba memposting informasi ini sebagai edit untuk jawaban yang sangat baik cwd , tetapi ditolak. Saya mendorong siapa pun yang ingin pergi rute yang saya jelaskan untuk pertama kali membaca jawabannya.

chb
sumber
2

Seil belum bekerja di macOS Sierra, jadi saya menggunakan Karabiner Elements , unduh dari https://pqrs.org/latest/karabiner-elements-latest.dmg .

Gunakan GUI atau masukkan yang berikut ini ke ~/.karabiner.d/configuration/karabiner.json:

{
  "profiles" : [
    {
      "name" : "Default profile",
      "selected" : true,
      "simple_modifications" : {
        "caps_lock" : "escape"
      }
    }
  ]
}
mb21
sumber
Perhatikan bahwa elemen Karabiner memecah panel sentuh dan fn
mperrin
1

Anda juga dapat menggunakan Perintah Ganda untuk memetakan kembali ini, dan kunci lainnya.

IIRC, itu akan memetakan Caps Lock ke Esc.

Matthew Schinckel
sumber
1
Sebenarnya, saya harus menulis tambalan untuk melakukan ini. Itu untuk versi yang lebih lama, tapi saya masih menggunakannya sekarang: sourceforge.net/tracker/?group_id=65339&atid=510607
Matthew Schinckel
1

Buka preferensi Keyboard dan klik tombol pengubah ... Anda dapat mengubah tombol caps lock untuk mengontrol, opsi, melarikan diri, atau perintah.

masukkan deskripsi gambar di sini

Nayan Jain
sumber
9
Tidak ada yang "Esc", yang ditanyakan poster itu. Kemungkinan untuk penggunaan Vim.
Rafi Jacoby
1
@RafiJacoby Apa perbedaan antara Escdan Escape? (pertanyaan serius)
byxor
0

Karabiner-Elements Penyesuai keyboard yang kuat dan stabil untuk macOS. (freeware)

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

Bekerja untukku agar Mojave mengubah caps-lock menjadi backspace

Quang Van
sumber