Przełącz na określone źródło wejściowe

23

W Mac OS X dostępne są skróty klawiaturowe do przełączania między aktywowanymi źródłami wejściowymi.

alternatywny tekst

Czy można przejść na określony język? Więc jeśli masz 3 metody wprowadzania, możesz mieć 3 skróty: Ctrl-1angielski, Ctrl-2hiszpański i Ctrl-3rosyjski.

Nikem
źródło
Układ klawiatury i język interfejsu są niezależne. A ponieważ język interfejsu ma zastosowanie tylko po ponownym uruchomieniu programu, wszystko, co zyskujesz dzięki skrótowi, byłoby negowane przez wymóg ponownego uruchamiania aplikacji.
Daniel Beck
Nie jestem zainteresowany zmianą języków interfejsu. Interesujące są tylko języki wejściowe.
Nikem,
Usprawniłem i wyjaśniłem twoje pytanie. Cofnij, jeśli uważasz, że zrobiłem coś złego (jestem nowy w robieniu tego).
Daniel Beck

Odpowiedzi:

7

Przedstawiam wam najbrzydsze możliwe „rozwiązanie”:

  • Włącz obsługę urządzeń pomocniczych w Preferencjach systemowych »Universal Access ,
  • i wyświetlenie menu Źródła wejściowe w pasku menu w Preferencjach systemowych »Język i tekst .
  • Upewnij się, że skrót Ctrl-F8jest zdefiniowany dla Przenieś fokus do menu statusu w Preferencjach systemowych »Klawiatura» Skróty klawiaturowe »Klawiatura i wprowadzanie tekstu .
  • Upewnij się, że menu Źródła wejściowe jest najbardziej wysuniętym w lewo elementem menu, które można przenosić, przeciągając i przytrzymując Cmd.

Użyj AppleScript Editori napisz trzy skrypty, każdy z następującym kodem:

tell application "System Events"
    key code 100 using control down # press Ctrl-F8
    delay 0.5 # wait a bit, UI might be slow
    key code 125 # press down to open the menu
    keystroke "german" # name of your desired language, in my case tested using German
    key code 36 # press enter
end tell

Zapisz jeden raz dla każdego języka, zmieniając jego nazwę. Jeśli chcesz naciskać różne klawisze lub przypisać coś innego Ctrl-F8, zastąp je kodami klawiszy tutaj . Możesz także przesunąć menu Źródła wejściowe z jego skrajnej lewej pozycji, wstawiając kilka naciśnięć prawej strzałki .

Wywoływaj skrypty w dowolny sposób, np. Użyj programu uruchamiającego aplikacje (Quicksilver, Launchbar itp.) Lub zawiń je w Usługach za pomocą Automatora i przypisz im skróty klawiaturowe w Preferencjach systemowych »Klawiatura» Skróty klawiaturowe »Usługi .

Daniel Beck
źródło
1
@Nikem Czy to działało?
Daniel Beck
1
Tak, zadziałało.
Nikem,
1
Anda, Daniel, chociaż wybrałem inne rozwiązanie, dziękuję jednak za
zapoznanie
@Nikem Nie ma za co. Proszę głosować w górę moją odpowiedź, klikając „trójkąt ze strzałką w górę” obok niej, jeśli uznasz tę odpowiedź za przydatną. Możesz także zaakceptować odpowiedź (wskazując, że jest to odpowiedź, którą lubisz najbardziej i uważasz, że problem został rozwiązany), klikając znacznik wyboru obok niej. Nawiasem mówiąc, ActionScript to Adobe, to jest AppleScript.
Daniel Beck
@Daniel W rzeczywistości nie wiem, którą odpowiedź polecić. Wybrałem moją, ale twoja jest bardziej użyteczna ...
Nikem
12

Wymyśliłem nieco ładniejsze rozwiązanie w AppleScript, biorąc pod uwagę nazwę układu klawiatury, na który chcesz się przełączyć. Utwórz taką funkcję:

on changeKeyboardLayout(layoutName)
 tell application "System Events" to tell process "SystemUIServer"
   tell (1st menu bar item of menu bar 1 whose description is "text input") to {click, click (menu 1's menu item layoutName)}
 end tell
end changeKeyboardLayout

a następnie zadzwoń

 changeKeyboardLayout("English")
 changeKeyboardLayout("German")

Pamiętaj, że nazwy układów klawiatury są zlokalizowane, tzn. W niemieckim systemie powyższy przykład musiałby wywoływać „Englisch” i „Deutsch”.

Asmus
źródło
Zdecydowanie milszy niż mój. Naprawdę powinienem właściwie nauczyć się mojego AppleScript.
Daniel Beck
działało to doskonale przez wiele lat, ale z Cataliną wydaje się, że „tekst wejściowy” nie jest już dostępny w pasku menu
Frank Mittelbach,
6

Jedną z opcji byłoby pobranie changeInput i przypisanie skrótów do poleceń powłoki, takich jak changeInput U.S..

Możesz także użyć KeyRemap4MacBook:

<?xml version="1.0"?>
<root>
  <vkchangeinputsourcedef>
    <name>KeyCode::VK_CHANGE_INPUTSOURCE_HIRAGANA</name>
    <inputsourceid_equal>com.apple.inputmethod.Kotoeri.Japanese</inputsourceid_equal>
  </vkchangeinputsourcedef>
  <item>
    <name>change_inputsources</name>
    <identifier>change_inputsources</identifier>
    <autogen>__KeyToKey__ KeyCode::E, VK_OPTION | ModifierFlag::NONE, KeyCode::VK_CHANGE_INPUTSOURCE_ENGLISH</autogen>
    <autogen>__KeyToKey__ KeyCode::H, VK_OPTION | ModifierFlag::NONE, KeyCode::VK_CHANGE_INPUTSOURCE_HIRAGANA</autogen>
  </item>
</root>

Zobacz dokumentację private.xml .

VK_CHANGE_INPUTSOURCE_ENGLISH jest zdefiniowany w vkchangeinputsourcedef.xml . Możesz zobaczyć identyfikatory źródeł wejściowych z EventViewer.app. Bez | ModifierFlag::NONEna przykład pierwsze ustawienie dotyczyłoby również opcji-Command-E. Zobacz źródło kluczowych wartości kodu i predefiniowanych ustawień .

Lri
źródło
4

Wiem, że to stare pytanie. Ale nawet pod koniec 2016 roku wciąż nie znalazłem prostego i miłego rozwiązania. Dlatego zrobiłem IMEShortcuts , działa na Sierra. Możesz przypisać niestandardowy skrót do dowolnej określonej metody wprowadzania. Proszę spróbować. A jeśli znajdziecie jakieś błędy, chętnie pomogę.

Ponadto Karabiner (znany jako KeyRemap4MacBook) jest świetnym narzędziem do dostosowywania klawiatury dla komputerów Mac. Ale to jest trochę skomplikowane i obecnie zepsute na Sierra. Jeśli używasz Yosemite lub El Capitan, byłby to kolejny dobry wybór.

rock9c
źródło
Dzięki za IMEShortcuts! To bardzo miłe. Z przyjemnością zapłaciłbym za to około 5 USD, jeśli dodałeś ikony do paska menu, aby pokazać aktywny język (więc nie potrzebowałbym ZARÓWNO OBRAZÓW skrótu, jak i ikony aplikacji w moim pasku menu zajmującej miejsce). Chciałbym również móc dostosować używaną ikonę - na przykład chcę użyć danych z kanadyjskiego francuskiego, ponieważ jest bliżej amerykańskiej QWERTY, ale chcę zobaczyć flagę francuską, ponieważ kanadyjska flaga nie symbolizuje „francuskiego” na mnie. Te rzeczy sprawiłyby, że byłby niesamowity!
iconoclast
Słowo ostrzeżenia: jeśli w przeszłości nie pobrałeś jeszcze IMEShortcuts (przed wygaśnięciem rejestracji domeny i zastąpieniem strony zawierającej złośliwe oprogramowanie ze złośliwym rozszerzeniem chrome), nie pobieraj niczego z rockcell.com, dopóki nie zostanie to rozwiązane.
ecmanaut
1

Mam inne rozwiązanie, które najbardziej mnie usatysfakcjonowało. KeyRemap4MacBook to aplikacja, która pozwala na mapowanie przycisków klawiatury. Między innymi pozwala na pewne, wcale nie wyczerpujące, wsparcie na zmianę języka. Mamy więc niestandardową konfigurację, która robi to, co chcę.

Minusy: - aplikacja innej firmy - na razie ograniczona obsługa języków

Plusy: - Koncepcyjnie trochę ładniejsze niż uruchamianie skryptu w interfejsie użytkownika

Nikem
źródło
Na stronie nie znalazłem nic związanego z elastycznym wykorzystaniem źródeł wejściowych, tylko niektóre zakodowane działania związane z rosyjskim / angielskim. Czy możesz rozwinąć?
Daniel Beck
To nie jest elastyczne. Zdarza się, że obsługuje przejście na angielski i rosyjski (a teraz estoński), czyli tych języków, których potrzebowałem. I pozwala mapować dowolne kombinacje klawiszy na te akcje. W moim przypadku przejście na język.
Nikem,
Trudno mi znaleźć sposób na skonfigurowanie tego z Karabinerem.
Ivan Balashov
1

W AppleScript wystarczy wziąć cmd + „spację” (lub coś innego, co zmienisz źródło klawiatury).

I wszystko, czego potrzebujesz:

    key code 49 using command down

49 - kod przycisku „spacja” w ASCII dla AppleScript.

PS: nie zapomnij uzyskać dostępu do narzędzia AppleScript w Preferencjach systemowych.

Iwan Trubnikow
źródło
1

Znaleziono kawa - dość prosta aplikacja, która dokładnie spełni Twoje potrzeby. Ustaw skróty, aby bezpośrednio przełączyć się na wymagane źródło wejściowe.

qwad1000
źródło
1
Witamy w Super User. Przeczytaj Jak polecić oprogramowanie, a następnie edytuj swoją odpowiedź, aby zawierała co najmniej minimalne wymagane informacje (elementy pogrubione ). Posty bez tych informacji mogą zostać usunięte. Dzięki za wkład.
Mówię: Przywróć Monikę
0

Ten link zawiera wideo, jak to zrobić. Ma już skrót „komenda + spacja”, ale skrót klawiszowy w centrum uwagi to także „polecenie + spacja”. Podkreśl nad klawiszami skrót klawiszowy, aby zmiana języka nie wystąpiła. Film w linku pokaże, jak zmienić klawisz skrótu, aby można było go przełączać.

Powodzenia,

David
źródło
1
On już wie, jak przełączać się między językami, chce przejść na konkretny , ponieważ prawdopodobnie ma więcej niż 2 aktywowane.
Daniel Beck
Tak, dokładnie tak, jak powiedział Daniel. Mam 3 języki wprowadzania i muszę wybrać jeden z nich.
Nikem,
Przepraszam ... Musiałem źle zrozumieć pytanie. Myślałem, że próbujesz znaleźć sposób na przełączanie języków za pomocą skrótu.
David