Używanie Caps Lock jako Esc w Mac OS X


449

Jak sprawić, by Caps Lockdziałał jak Escw Mac OS X?


31
To wydaje się być standardowym zadaniem dla programisty używającego vima; stąd mój głos, aby ponownie otworzyć
Jeromy Anglim

4
Alternatywą jest mapowanie Caps Lock do sterowania (Preferencje systemowe> Klawiatura> Klawisze modyfikujące) i wykonać sekwencję escape Ctrl + [dla esc. Przydatne dla Vima.
thelostspore

2
Natywne rozwiązanie działające w systemie macOS Sierra: stackoverflow.com/a/41004544/1940276
Kevin Roth

1
Natywne rozwiązanie działające w systemie macOS Sierra to druga najlepsza odpowiedź tutaj (od @rkusa)
Marián Černý

Odpowiedzi:


394

Edit: Jak to opisano w tej odpowiedzi , nowsze wersje MacOS teraz natywne wsparcie dla ponownego wiązania Caps Locksię Escape. Dlatego nie jest już konieczne instalowanie oprogramowania innych firm, aby to osiągnąć.


Oto moja próba wyczerpującej, wizualnej odpowiedzi (wraz z linkami), jak to osiągnąć za pomocą Seila (wcześniej znanego jako PCKeyboardHack).

  1. Najpierw przejdź do Preferencji systemowych , wybierz Klawiatura , a następnie kartę Klawiatura (pierwsza karta) i kliknij Klawisze modyfikujące :

Krok 1

W wyskakującym oknie dialogowym ustaw Caps Lock Key na No Action:

wybierz brak akcji

2) Teraz kliknij tutaj, aby pobrać Seil i zainstalować go:

3) Po instalacji będziesz mieć zainstalowaną nową aplikację (Mountain Lion i nowsze), a jeśli masz starszy system operacyjny, może być konieczne sprawdzenie nowego panelu Preferencji systemowych:

otwórz seil lub panel preferencji

4) Zaznacz pole „Zmień Caps Lock” i wpisz „53” jako kod dla klawisza Escape:

ustaw kod klawiatury

I jesteś skończony!Jeśli to nie zadziała natychmiast, może być konieczne ponowne uruchomienie komputera.

Pod wrażeniem? Chcesz więcej kontroli?

Możesz także sprawdzić KeyRemap4MacBook, który jest tak naprawdę flagowym narzędziem do mapowania klawiaturypqrs.org - jest również bezpłatny.

Jeśli podoba Ci się te narzędzia, możesz przekazać darowiznę . Nie mam z nimi żadnych powiązań, ale używam tych narzędzi od dłuższego czasu i muszę powiedzieć, że chłopaki wykonali świetną robotę, utrzymując je, dodając funkcje i naprawiając błędy.

Oto zrzut ekranu pokazujący kilka (setek) wstępnie wybranych opcji:

Zdjęcie 1.png

PQRS ma również świetne narzędzie NoEjectDelay , którego można używać w połączeniu z KeyRemap4MacBook do przeprogramowywania klucza Eject. Po drobnych poprawkach mam swój zestaw, aby przełączyć AirPort Wifi.

Te narzędzia oferują nieograniczoną elastyczność podczas mapowania klawiatury Mac. Baw się dobrze!


3
Chciałbym wyjaśnić, że używam PCKeyboardHack sam bez KeyRemap4Macbook od prawie 2 lat, aby zrobić dokładnie to.
rossipedia,

13
Pamiętaj, że jeśli używasz klawiatury zewnętrznej, powinieneś powtórzyć krok pierwszy (tj. Caps Lock = brak akcji) dla każdej klawiatury. Nie udało mi się wykonać tego kroku na klawiaturze zewnętrznej, w wyniku czego funkcja caps lock nie zareagowała na bardzo szybkie naciśnięcie klawisza z powodu przypadkowego zabezpieczenia klawisza caps lock. superuser.com/questions/317900/
Eliminate

11
Świetny samouczek. Mapowałem Caps Lock na Esc przez około rok. To był niesamowicie wydajny. Pewnego dnia jednak sparowałem ze starszym programistą. Powiedziałem mu, że używam Vima jako mojego głównego redaktora. Ja też, powiedział. Otworzył maszynę i zaczęliśmy działać. Kiedy nadeszła moja kolej na edycję kodu, pogrzebałem i potknąłem się, ponieważ jego Caps Lock nie został zmapowany. Próbowałem iść aż do Esc, ale co jakiś czas naciskałem Caps, a potem zmieniły się moje normalne polecenia. Nauczył mnie, że Ctrl-c również przeniesie cię z powrotem do trybu wizualnego. Zrób sobie przysługę i zacznij używać Ctrl-c.
campeterson

7
(Uczenie się więcej każdego dnia) CTRL-[jest właściwie odpowiednikiem ESC. stackoverflow.com/questions/5030164/…
campeterson 10.09.2013

5
Byłoby wspaniale, gdybyś mógł również edytować i wspomnieć na górze, że jest to natywna funkcja w systemie macOS 10.12.1 na odpowiedź @ rkusa, aby nowi użytkownicy nie musieli pobierać oprogramowania innych firm
edhurtig

309

Od MacOS 10.12.1 możliwe jest przemapować Caps Lockdo Escnatywnie (Preferencje systemowe -> Klawiatura -> Klawisze modyfikujące).

wprowadź opis zdjęcia tutaj


11
Niesamowite! Znalazłem to po usłyszeniu, że nowy MBP nie miałby klawisza Escape. Wygląda na to, że Apple spodziewał się nieco luzu.
Andy E,

1
Uruchamianie El Capitan 10.11.6 i to ustawienie jest już dostępne.
zool,

1
Bogu dzięki za to; po tym, jak Sierra złamała Seil / Karabiner, myślałem, że jestem skazany.
Filip

4
Dziwnie, mam 10.11.6 i nie mam tej opcji. Mogę tylko mapować esc na Caps, Ctrl, Opt lub Command. Dotyczy to moich klawiatur WASD v2.
Benny Powers,

1
Czy można to zrobić za pomocą wiersza polecenia? Być może w metodzie podobnej do tych? github.com/herrbischoff/awesome-osx-command-line#keyboard
Jordan Eldredge

40

Nie byłem zadowolony z żadnej z odpowiedzi tutaj i zacząłem szukać rozwiązania dla wiersza poleceń .

W macOS Sierra 10.12 Apple wprowadził nowy sposób mapowania kluczy przez użytkowników.

  • Nie ma potrzeby manipulowania przy graficznym interfejsie użytkownika
  • Nie są wymagane żadne specjalne uprawnienia
  • Całkowicie konfigurowalny
  • Nie trzeba instalować żadnych bzdur innych firm, takich jak PCKeyboardHack / Seil / Karabiner / KeyRemap4MacBook / DoubleCommand / NoEjectDelay

Jeśli brzmi to dla ciebie dobrze, spójrz na hidutil.

Na przykład, aby ponownie przypisać Caps-Lock do ucieczki, zapoznaj się z tabelą kluczy i dowiedz się, że Caps-Lock ma kod użytkowania 0x39, a klawisz Escape ma kod użytkowania 0x29. Umieść te kody lub kod o wartości szesnastkowej 0x700000000 w źródle i dest:

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

Możesz dodać inne mapowania w tym samym poleceniu. Osobiście lubię mapować Caps-Lock na backspace i mapować backspace, aby usunąć:

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

Aby zobaczyć bieżące mapowanie:

hidutil property --get "UserKeyMapping"

Twoje zmiany zostaną utracone przy ponownym uruchomieniu systemu. Jeśli chcesz, aby trwały, umieść je w skrypcie i ustaw hak logowania:

sudo defaults write com.apple.loginwindow LoginHook /path/to/login_script.sh

3
+! jest to nowoczesny i właściwy sposób na zmianę mapowania klawiszy w systemie macOS
Fanckush

2
Problem Karabinera z powtarzającymi się kluczami spowodował, że szukałem natywnego rozwiązania do zmiany mapowania kluczy. Ten post i kolejny w apple.stackexchange.com bardzo pomogły.
chb

Dzięki za to, +1! Dodałem kilka uwag stycznych do postu Apple, które, mam nadzieję, dodają pewną wartość naszym biednym ludziom, którzy nie chcą klawisza Esc, ale nie używają Caps Lock.
tripleee

Świetna metoda dla MacBooków, które mają problemy z wbudowaną klawiaturą. Mój powodował problemy z ustawieniami klawiatury, więc nie mogłem ponownie przypisać żadnych klawiszy.
Igor

Nie byłem w stanie sprawić, by działało to poprawnie za pomocą tej LoginHookmetody - chyba coś po uruchomieniu wybiera ustawienia lokalnej klawiatury dla skandynawskiej klawiatury? W każdym razie stackoverflow.com/a/22872222/874188 zauważa, że LoginHookjest przestarzałe i zaleca używanie launchdzamiast niego.
tripleee

34

To jest możliwe.

Rozwiązanie 1

Z artykułu na stronie TrueAffection.net.

  • Pobierz PCKeyboardHack i zainstaluj go.
  • Przejdź do PCKeyboardHack w Preferencjach systemowych.
  • Włącz „Zmień Caps Lock” i ustaw kod dostępu na 53.

Rozwiązanie 2

To rozwiązanie nie wymaga łatania sterownika klawiatury, ale daje rozwiązanie specyficzne dla Vima.

OS X obsługuje mapowanie klawisza Caps Lock na całą masę kluczy, ale musisz to zrobić ręcznie, edytując pliki .plist. Proces ten opisano w tym artykule . Jako dodatek do tej wskazówki sugeruję, aby najpierw ustawić Caps-Lock na Brak w Preferencjach systemowych, a następnie wystarczy zmienić tylko jedną wartość w pliku .plist. Ponadto możesz oczywiście użyć Edytora list właściwości zamiast przejść przez etapy konwersji XML.

Sztuczka polega na zamapowaniu klawisza Caps Lock na klawisz Pomoc (kod 6), którego nie ma na większości klawiatur. Ale jeśli tak, to zostanie potraktowane jako klawisz wstawiania, którego prawdopodobnie i tak prawdopodobnie nie używasz, ponieważ pytasz o ponowne mapowanie Caps Locka, aby zapobiec rozciąganiu rąk;)

Następnie możesz zmapować Pomoc i Insertklucz na Escvim.

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

Działa to dla gvim (Vim.app). Nie dostałem go do pracy z vimem w Terminalu i nie testowałem go z MacVimem.

Jest to więc raczej skomplikowane, na wpół upieczone rozwiązanie lub instalacja hakera innej firmy. Twój wybór ;)

Edit: Właśnie zauważyłem rozwiązanie 3, jeśli używasz MacVim można użyć Ctrl, Optioni Commandjak Esc. W Preferencjach systemowych mapowanie Caps Lock na jeden z tych kluczy jest banalne.


1
Re rozwiązanie 3: Jak używasz Ctrl, Option lub Command jako Esc w MacVimie? Nie mogę znaleźć tego ustawienia w preferencjach.
clizzin

Mapujesz to w preferencjach systemowych => klawiatura.
maletor

9
Gdzie jest wskazówka, do której nawiązujesz?
Matthew Schinckel,

2
Maletor - tam nie ma gdzie tam powiedzieć macvim do kontroli wykorzystania jako ucieczki
Scott Schulthess

1
@MatthewSchinckel tutaj jest jeden z takich linków: hints.macworld.com/article.php?story=20060825072451882
Ben Challenor 18.11.11


30

Jedyne, co wiem, jak to zrobić, to zmapować Caps Lock na Control, Option lub Command. Można to zrobić za pomocą panelu Klawiatura i mysz w Preferencjach systemowych. Kliknij „Klawisze modyfikujące” w lewym dolnym rogu, a będziesz mógł zmienić przypisanie Caps Lock, Control, Option i Command do dowolnego z nich.

@Craig: Sugeruje to, że Caps Lock może być używany jako normalny - to znaczy bez przełączania - klawisz. Na moim MacBooku, ponieważ zmieniłem mapowanie Caps Lock na Control, lampka Caps Lock nigdy się nie świeci. Po prostu działa jak klawisz Control.

wprowadź opis zdjęcia tutaj



1
Niestety nie z klawiaturami Logitech, więc nie ma klawisza Escape w CapsLock, bez vim == powracającej klawiatury
Enric Ribas

14

Seil nie jest jeszcze dostępny w systemie macOS Sierra (10.12 beta). Jako taki korzystam z Keyboard Maestro z tymi ustawieniami:wprowadź opis zdjęcia tutaj

Podziękowania dla tego komentarza github: https://github.com/tekezo/Seil/issues/68#issuecomment-230131664


2
Używam github.com/tekezo/Karabiner-Elements (który działa na Sierra). Jak dotąd działa świetnie, choć chciałbym, żeby to zrobiło „Control_L do Control_L (+ gdy wpiszesz tylko Control_L, wyślij Escape)”
atomkirk 21.09.16

1
@atomkirk Czy mógłbyś udostępnić konfigurację Karabiner JSON, której użyłeś?
LandonSchropp

1
{„profile”: [{„name”: „Profil domyślny”, „zaznaczone”: true, „simple_modifications”: {„caps_lock”: „escape”}}]}
atomkirk


Karabiner wykonał dla mnie lewę za pomocą JSON atomkirk. Pomimo powyższego zrzutu ekranu, interfejs Maestro klawiatury jest chaotyczny i nie mogłem go skonfigurować.
Paul,

10

Po wypróbowaniu kilku z tych rozwiązań mam kilka uwag:

DoubleCommand będzie nie pozwalają, aby zamienić esc i czapki-lock.

PCKeyboardHack będzie pozwalają map CapsLock uciec,ale nie ma możliwości odwzorowania ucieczki na capslock. Najnowsze wersje umożliwiają wykonanie pełnej wymiany poprzez edycję obu klawiszy.

To może, ale nie musi być wystarczające dla twoich potrzeb (wiem, że to jest moje).


1
PCKeyboardHack nie pozwala odwzorować ucieczki na Capslock, ale aplikacja towarzysząca KeyRemap4MacBook tak. Pozwala zmapować „Escape to CapsLock” i „Shift + Escape to CapsLock”.
Rory O'Kane

9

Jeśli nie chcesz instalować aplikacji innych firm i naprawdę zależy ci tylko na vimie w iTerm, działają:

Zmień mapowanie CapsLock na Pomoc zgodnie z opisem tutaj .

Wersja skrócona: użyj edytora plutil lub podobnego ~/Library/Preferences/ByHost/.GlobalPreferences*.plist, powinien wyglądać podobnie do tego:

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

Uruchom ponownie! Proste wylogowanie i logowanie nie działało dla mnie.

W iTerm dodaj nowe mapowanie kluczy w celu uzyskania pomocy: wyślij kod szesnastkowy 0x1b, który odpowiada Escape.

Wiem, że nie było to dokładnie to, o co proszono, ale zakładam, że intencją wielu osób szukających takiego rozwiązania jest w rzeczywistości ten bardziej wyspecjalizowany wariant.


4

Aby faktycznie zamienić klawisz Esc na klawisz Caps Lock (nie tylko mapować jeden na drugi) za pomocą PCKeyboardHack i KeyRemap4MacBook, musisz postępować zgodnie z instrukcjami w tym wątku , mapując klawisz Caps Lock na kod nieużywany przez klawiatura, ale rozliczana przez KeyRemap4MacBook (np. 110). Następnie w PCKeyboardHack wybierz odpowiednią opcję, która odwzorowuje ten kod klucza do ucieczki (w przypadku 110 jest to „Klucz aplikacji do ucieczki”). Oto jak powinny wyglądać twoje preferencje KeyRemap4MacBook (pod warunkiem, że zaznaczyłeś pole wyboru „pokaż tylko włączone”).

wprowadź opis zdjęcia tutaj

I początkowo próbowała wysłać tę informację jako edycja na doskonałą odpowiedź CWD za , ale została ona odrzucona. Zachęcam każdego, kto chce iść trasą, którą opisuję, aby najpierw przeczytał jego / jej odpowiedź.




1

Otwórz preferencje klawiatury i kliknij klawisze modyfikatora ... możesz zmienić klawisz Caps Lock na sterowanie, opcję, klawisz ucieczki lub polecenie.

wprowadź opis zdjęcia tutaj


9
Żaden z nich nie jest „Esc”, o który pytał plakat. Prawdopodobnie do użytku Vima.
Rafi Jacoby

1
@RafiJacoby Jaka jest różnica między Esci Escape? (poważne pytanie)
byxor

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.