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?

ximyu
źródło
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.

Sebastian Zaha
źródło
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.

Dan
źródło
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
Peter Lamberg
źródło
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.

Victor Tatai
źródło
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.

Wung Hugh
źródło
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.

chookie
źródło
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.)

MarkWPiper
źródło
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/

nicwhitts
źródło
-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.

Michael Yu
źródło
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.

Zermelo
źródło