Jak wyłączyć wpisywanie znaków specjalnych podczas naciskania klawisza opcji w systemie Mac OS X? [Zamknięte]


129

Teraz, kiedy naciśnę opcję-b, otrzymam ∫. Nie muszę wpisywać znaków specjalnych i muszę mapować opcję-b na skróty do określonych aplikacji. Czy jest na to sposób?


26
Używam IntelliJ i chciałbym zasymulować skróty klawiaturowe emacsa i zmapowałem meta do klawisza opcji. Ale kiedy naciskam, powiedzmy, opcję-b, otrzymałem oczekiwane zachowanie, ponieważ jest interpretowane jako znak specjalny.
— ximyu

3
Jeśli użyję klawisza opcji jako modyfikatora, mogę zdefiniować jeszcze więcej skrótów w moim IDE, co w oczywisty sposób zwiększa moją produktywność.
— Dan,

25
To po prostu śmieszne, jak trudne są takie proste czynności na komputerach Mac. Umieściłem niewłaściwą aplikację w programie uruchamiającym - powodzenia w usuwaniu jej za pomocą instrukcji SQL; chcesz wyłączyć jakiś głupi skrót - rozpocznij pobieranie i testowanie milionów rozwiązań, które nie są spójne w różnych wersjach systemu operacyjnego. Boże, dlaczego kupiłem ten okropny komputer?
— Wasilij

3
To działa dla mnie: superuser.com/a/942256/535138
— 김민준

1
Jeśli masz problem z terminalem, postępuj zgodnie z instrukcją -> superuser.com/questions/496090/…
— A-letubby

Odpowiedzi:


33

Miałem dokładnie ten sam problem, w tym samym IDE.

Rozwiązaniem tego problemu jest pobranie Ukulele stąd:

http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&id=ukelele

W aplikacji możesz utworzyć nowy układ klawiszy za pomocą Plik -> Nowy z bieżącego źródła. Naciśnięcie Option pokaże ci w miejscu Option-b czerwony klawisz - co oznacza, że ​​jest to martwy klawisz . Dwukrotne kliknięcie pozwoli ci zmienić go z martwego klucza na klucz wyjściowy. Gdy pojawi się monit o wyjście, możesz wpisać to samo (naciskając Option-b).

W ten sposób wyświetli ten sam znak, ale nie będzie uważany za martwy klawisz, więc Intellij może powiązać go jako skrót.

Aby włączyć nowy układ, musisz zapisać go w ~ / Library / Keyboard Layouts (pomaga, jeśli nadasz mu nową nazwę za pomocą Klawiatura -> Ustaw nazwę klawiatury), a następnie włączyć go w Preferencjach systemowych -> Język i tekst.


15
To dużo pracy i naprawia tylko jedną kombinację klawiszy w jednej aplikacji. Ja i przynajmniej niektórzy inni chcielibyśmy całkowicie wyłączyć opcję wprowadzania znaków specjalnych na Macu.
— javadba

@javadba Po tym, jak dobrze to zrobiłem, nie było tak źle. Zobacz moją odpowiedź poniżej, aby uzyskać szczegółowe instrukcje, które powinny być szybkie do kliknięcia.
— Peter Lamberg

Dodałem odpowiedź ze szczegółowymi krokami do tego, co @SebastianZaha opisuje w tej odpowiedzi. Skończyło się na tym, że trochę się zastanawiałem, aby to zrobić, więc mam nadzieję, że zaoszczędzi to komuś (a później mnie) kłopotów.
— Peter Lamberg

74

Możesz utworzyć niestandardowe mapowanie klawiatury z literami opcji ustawionymi na PUSTE za pomocą narzędzia online z tej strony . Możesz utworzyć własne mapowanie za pomocą kilku kliknięć z prawie każdego układu klawiatury. Udowodniono, że działa na MacOSX 10.7+ z IntelliJ Idea, Php / WebStorm, NetBeans, Eclipse.

Wybierz w formularzu radio „Ustaw puste dla klawisza opcji” , prześlij formularz i pobierz poprawiony układ klawiatury z wyłączoną funkcją klawisza „opcja”. Udostępniam plik roboczy dla standardowego układu klawiatury w języku angielskim (USA):

Po włączeniu tego niestandardowego mapowania, jeśli wpiszesz literę z wciśniętym klawiszem „opcja”, nic nie zostanie wydrukowane na wyjściu tekstowym. Ale „naciśnięcie klawisza opcji” jest wyzwalane przez system operacyjny i wykrywane przez IDE. Dzięki temu uzyskujesz dokładnie to samo zachowanie, co w przypadku innych klawiszy poleceń!

  1. Pobierz plik mapowania kluczy My Layout.keylayout.
  2. Przenieś to do ~/Library/Keyboard\ Layouts/
  3. Otwórz System Preferences->Language & Text
  4. Idź do Input Sources-> (hit +)->Select Others
  5. Powinieneś znaleźć My Layoutna liście i wybrać ją.

Krok 4 może się nieznacznie zmienić w wersjach MacOS. Prosimy o cierpliwość, aby znaleźć listę układów klawiatury w ustawieniach.


1
@javadba, poprawiłem odpowiedź. Dziękujemy za twoją opinię!! Rzeczy mogą się zmienić w nowych wersjach systemu operacyjnego.
— Dan,

5
Link do skrzynki domyślnej jest teraz uszkodzony.
— Andrew White,

2
Nie udało się uruchomić tego. Mogę dodać mój nowy układ klawiszy do listy, ale nie mogę usunąć domyślnego układu „US”, więc w rzeczywistości nie będzie on używał mojego nowego układu klawiszy ....
— AgmLauncher

12
To już nie działa w 10.11. Generuję plik układu w gist.github.com/haosdent/573ea124e5ea666fc576, który działa w 10.11
— haosdent

1
Nie działa dla mnie. Zamiast wpisywać opcję + r, wpisuje ®teraz rIntelliJ :(
— Navin

35

Oto szczegółowe kroki prowadzące do odpowiedzi Sebastiana Zahy. (Skończyło się na tym, że trochę grzebałem, zanim to zadziałało).

(Alternatywnie tutaj jest gotowy plik mojego autorstwa )

  1. Pobierz Ukelele
  2. Możesz go uruchomić bezpośrednio z pliku .dmg
  3. Plik -> Nowy na podstawie bieżącego źródła wejściowego (wybrałem USA)
  4. Kliknij przycisk Modyfikatory
  5. Wybierz każdy modyfikator z listy, która ma lewy dół lub prawy dół w kolumnie Opcja . (Mogą być takie jak W dół lub w górę , ale AFAIK, możesz je zostawić.)
    • Naciśnij przycisk minus dla każdego takiego
  6. Przejdź do menu Klawiatura -> Ustaw nazwę klawiatury
  7. Zmień w jakiś sposób nazwę, aby ułatwić identyfikację
  8. Idź do Plik -> Zapisz jako
  9. Zapisz do ~ / Library / Keyboard \ Layouts / z przyrostkiem .keylayout
  10. Wyloguj się z konta Mac OS
  11. Zaloguj się ponownie
  12. Przejdź do Preferencje systemowe -> Klawiatura -> Źródła wprowadzania
  13. Naciśnij przycisk + -> Inne -> Twój nowy układ powinien być dostępny
  14. Dodaj nowy układ
  15. Ewentualnie zostaw też oryginalny układ klawiatury i skonfiguruj fajny sposób przełączania

1
To jedyne rozwiązanie, które zadziałało i pozwoliło mi na ponowne przypisanie kombinacji klawiszy do poleceń w stylu Emacsa.
— event_jr

@event_jr, w jaki sposób powiązałeś je z zachowaniem emacsa? Kiedy przytrzymasz opcję i klikniesz b, prosi o wyjście dla tej kombinacji. Jak powiemy, że wyjście to cofnięcie słowa?
— Sahas

1
Jak skomentowałem powyżej, nie pomogło mi to również naprawić skrótów w IDEA na Yosemite. Obawiam się, że zmienili coś w nowszych wersjach i teraz nie można tego naprawić. Używam IntelliJ IDEA 14.1.2 na OS X Yosemite 10.10.3
— Innokenty

1
@Innokenty Strange. Jestem na OSX 10.10.3 i IDEA 14.1.2 i moje powiązania podobne do emacsa działają. Przeniosłem konfigurację IDEA z komputera z systemem Windows i plik .keylayout został zbudowany przy użyciu starszej wersji OSX. Czy któryś z nich może być przyczyną? Oto mój plik układu.
— Peter Lamberg

1
W OS X 10.10.5 nie widziałem żadnego „Lewo w dół” ani „Prawo w dół” w kolumnie „Opcja”: tylko „Albo w dół”. Usunąłem to wszystko i teraz mam skróty klawiszowe w stylu Emacsa działające w IntelliJ. Chciałbym zrozumieć, co oznaczało usunięcie tych wierszy, ale ponieważ łatwo jest zmienić metody wprowadzania, jeśli napotkam kłopoty, zamierzam to zrobić. Dzięki.
— znaczniki pojedynków

12

Użyj Ctrl-Alt-<MNEMONIC>. IMHO jest o wiele łatwiejsze niż konieczność instalowania i konfigurowania osobnej aplikacji.


2
Dobrze wiedzieć. Jednak nie jest to całkowicie satysfakcjonujące, jeśli również kombinacje klawiszy Ctrl-Alt- mają funkcje.
— Peter Lamberg,

4
Dla IDE CTRL + ALT jest już prawdopodobnie używany, więc musisz ponownie skonfigurować IDE, co jest równie trudne, jak konieczność skonfigurowania innej aplikacji.
— ARKBAN

ta odpowiedź jest tym, co otrzymasz, jeśli zapytasz JetBrains
— Kirby

8

Mam rozwiązanie! Umieść plik w: ~/Library/KeyBindings/DefaultKeyBinding.dictas:

/* ~/Library/KeyBindings/DefaultKeyBinding.dict */
 {
    /* Additional Emacs bindings */
    "~f" = "moveWordForward:";
    "~b" = "moveWordBackward:";
    "~<" = "moveToBeginningOfDocument:";
    "~>" = "moveToEndOfDocument:";
    "~v" = "pageUp:";
    "~d" = "deleteWordForward:";
    "~^h" = "deleteWordBackward:";
    "~\010" = "deleteWordBackward:";  /* Option-backspace */
    "~\177" = "deleteWordBackward:";  /* Option-delete */

    /* Escape should really be complete: */
    "\033" = "complete:";  /* Escape */        
}

Ukryje oryginalne dane tekstowe. Ale nadal możesz to uzyskać, używając Ctrl-Q przed kombinacją. Na przykład Ctrl-Q Alt-f daje mi ƒ. W rzeczywistości piszę tę odpowiedź z włączoną opcją przypisania klawiszy. Możesz także dodać inne klucze, które lubisz! Oficjalne odniesienie: https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/EventOverview/TextDefaultsBindings/TextDefaultsBindings.html

Oto dobra lista rzeczy, z którymi możesz się powiązać: https://www.hcs.harvard.edu/~jrus/site/selectors.html

Aha, tak przy okazji, jeśli przypiszesz klawisz do nieokreślonej akcji, twoja aplikacja będzie miała wyciek pamięci, a systemowi za kilka sekund skończy się pamięć. Przetestowany na el capitan, w trudny sposób.


5

Miałem ten sam problem na nowym Macbooku z VSCode, który działał dobrze na moim starym Macbooku. Kiedy wpisałem alt-shift-f jako format, otrzymałem zamiast tego Unicode. Zdałem sobie sprawę, że różnica polegała na tym, że mój stary Macbook miał brytyjską klawiaturę zamiast domyślnego „ABC - Extended”. Dodanie brytyjskiej klawiatury rozwiązało problem.


Próbowałem tego, ale nadal mam irytującą postać z Option + N, na przykład w Intellij IDEA.
— Amir Eldor

2

W środowisku Apple JRE kombinacje klawiszy opcji będą działać jako skróty zamiast wstawiać znaki specjalne.

Link do pobrania: https://support.apple.com/kb/DL1572?locale=en_US

To stare, przestarzałe środowisko JRE (oparte na Javie 6), ale od października 2015 r. Nadal wydaje się działać najlepiej z moją instalacją JetBrains RubyMine. (Cokolwiek innego, klawisze wracają do wstawiania znaków specjalnych.)


0

Znalazłem przyzwoite obejście. Używam oprogramowania Karabiner, aby zmienić mój prawy klawisz Enter, aby kontrolować, gdy jest przytrzymany.

Więc to, co zrobiłem iv, to przemapowanie klawisza opcji na opcję + cmd + kontrola, ponieważ nie znam żadnych poleceń używających wszystkich trzech modyfikatorów. Teraz mogę odwzorować odpowiednie skróty bez żadnych znaków. Ale w razie potrzeby możesz również mapować na dodatkowe klucze

Dodaj to do swojego private.xml: (pomiędzy katalogiem głównym)

<item>
<name>Change option Key to cmd + control + option</name>
<identifier>private.optiontoelse</identifier>
<autogen>__KeyToKey__ 
    KeyCode::OPTION_L, 
    KeyCode::OPTION_L, ModifierFlag::CONTROL_L | ModifierFlag::COMMAND_L</autogen>
<autogen>__KeyToKey__ 
    KeyCode::OPTION_R, 
    KeyCode::OPTION_R, ModifierFlag::CONTROL_R | ModifierFlag::COMMAND_R</autogen>
</item>

Następnie załaduj ponownie xml i włącz opcję u góry zakładki „Zmień klucz”

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


-2

Użyj ABC jako metody wprowadzania zamiast ABC-Extended, wtedy opcja + [znak] będzie mogła użyć skrótu aplikacji zamiast pokazywać znak specjalny.


Ta odpowiedź pomogła mi, zamiast ABC-Locale lub ABC-Extended użyłem ABC
— Code Name Jack

-3

Po prostu użyj klawisza esc zamiast meta, na przykład meta-x mapuje do esc-x.

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.