¿Cómo cambiar la fuente de entrada a un idioma diferente con acceso directo (solo una combinación de teclas)?

Quiero usar cuatro idiomas en mi sistema OS X (inglés, español, chino y japonés) y sé que puedo cambiar el idioma con + Space. Sin embargo, tengo un odio patológico por cambiar con él, ¡porque requiere que seleccione entre tantas, tantas opciones! También sé que puedo cambiarlo desde la barra de menú a la derecha de la barra, pero es mucho más repugnante que la solución + .Space

Así que prefiero cambiarlo con un atajo más fácil, como el siguiente:

  • izquierda cambia a inglés
  • derecha cambia a español
  • izquierda + izquierda + Ccambia a chino
  • derecha + derecha + Ccambia a japonés.

Traté de usar Karabiner(el descendiente de KeyRemap4MacBook), pero no funciona en el primer intento en chino, en el cual cuando cambio a chino, permanece en inglés (el ícono de fuente de entrada en la barra de menú cambia, pero el teclado no funciona ). Pero por alguna razón, si cambio de inglés a chino a inglés a chino (dos intentos), entonces el teclado chino finalmente funciona.

Así que no me gusta la idea de usar Karabiner. Entonces, ¿cuál es la mejor manera de cambiar la fuente de entrada?

Respuestas (3)

Me encontré con el mismo problema con el chino y el japonés. (El ícono en la barra de menú cambió, pero la fuente de entrada en realidad no cambió hasta que cambié a otra fuente de entrada y volví). Es un error conocido según una publicación en la lista de correo de Karabiner :

Es uno de los errores más molestos de OS X.

El cambio de las fuentes de entrada CJK directamente desde el programa no se maneja adecuadamente.

Por lo tanto, necesita los siguientes procedimientos.

Paso 1:
habilite "Seleccionar la siguiente fuente en el menú de entrada" (comando-opción-espacio) en Preferencias del sistema > Teclado > Accesos directos.

Paso 2:
cambie la fuente de entrada enviando comando-opción-espacio.

<autogen>
  __KeyToKey__
  KeyCode::K, ModifierFlag::OPTION_L,
  KeyCode::VK_CHANGE_INPUTMODE_US,
  KeyCode::VK_WAIT_100MS,
  KeyCode::SPACE, ModifierFlag::COMMAND_R | ModifierFlag::OPTION_L,
  <!-- adjust wait for your machine -->
  KeyCode::VK_WAIT_10MS,
  KeyCode::VK_WAIT_10MS,
  KeyCode::VK_WAIT_10MS,
  KeyCode::SPACE, ModifierFlag::COMMAND_R | ModifierFlag::OPTION_L,
  <!-- adjust wait for your machine -->
  KeyCode::VK_WAIT_10MS,
  KeyCode::VK_WAIT_10MS,
  KeyCode::VK_WAIT_10MS,
  KeyCode::SPACE, ModifierFlag::COMMAND_R | ModifierFlag::OPTION_L,

  Option::NOREPEAT,
</autogen>

changeinput se ve afectado por el mismo error.

Otra solución es simplemente cambiar a otra fuente de entrada y volver:

<root>
  <vkchangeinputsourcedef>
    <name>KeyCode::VK_CHANGE_INPUTSOURCE_HIRAGANA</name>
    <inputsourceid_equal>com.apple.inputmethod.Kotoeri.Japanese</inputsourceid_equal>
  </vkchangeinputsourcedef>
  <vkchangeinputsourcedef>
    <name>KeyCode::VK_CHANGE_INPUTSOURCE_SPANISH</name>
    <inputsourceid_equal>com.apple.keylayout.Spanish</inputsourceid_equal>
  </vkchangeinputsourcedef>
  <vkchangeinputsourcedef>
    <name>KeyCode::VK_CHANGE_INPUTSOURCE_US</name>
    <inputsourceid_equal>com.apple.keylayout.US</inputsourceid_equal>
  </vkchangeinputsourcedef>
  <vkchangeinputsourcedef>
    <name>KeyCode::VK_CHANGE_INPUTSOURCE_CHINESE</name>
    <inputsourceid_equal>com.apple.inputmethod.TCIM.Pinyin</inputsourceid_equal>
  </vkchangeinputsourcedef>
  <item>
    <name>inputsources</name>
    <identifier>inputsources</identifier>
    <autogen>__KeyOverlaidModifier__ KeyCode::COMMAND_L, ModifierFlag::COMMAND_L | ModifierFlag::NONE, KeyCode::VK_CHANGE_INPUTSOURCE_US, KeyCode::COMMAND_L</autogen>
    <autogen>__KeyOverlaidModifier__ KeyCode::COMMAND_R, ModifierFlag::COMMAND_R | ModifierFlag::NONE, KeyCode::VK_CHANGE_INPUTSOURCE_SPANISH, KeyCode::COMMAND_R</autogen>
    <autogen>__KeyToKey__ KeyCode::C, ModifierFlag::OPTION_L | ModifierFlag::COMMAND_L | ModifierFlag::NONE, KeyCode::VK_CHANGE_INPUTSOURCE_CHINESE, KeyCode::VK_CHANGE_INPUTSOURCE_US, KeyCode::VK_CHANGE_INPUTSOURCE_CHINESE</autogen>
    <autogen>__KeyToKey__ KeyCode::C, ModifierFlag::OPTION_R | ModifierFlag::COMMAND_R | ModifierFlag::NONE, KeyCode::VK_CHANGE_INPUTSOURCE_HIRAGANA, KeyCode::VK_CHANGE_INPUTSOURCE_US, KeyCode::VK_CHANGE_INPUTSOURCE_HIRAGANA</autogen>
  </item>
</root>
Su segunda solución deshabilita la tecla de comando para todos los otros accesos directos (como + Wpara cerrar la ventana), que definitivamente no es lo que quiero... En cuanto a la primera solución, la intentaré más tarde.
En cuanto a su primera solución, no estoy seguro de por qué quiere esperar 160 ms y cambiarla tres veces...
Hmmm... Todavía tengo problemas como __KeyOverlaidModifier__se indicó anteriormente, pero cambié la fuente de entrada japonesa y la española porque la fuente de entrada japonesa puede funcionar correctamente si la configura desde las preferencias de Karabiner en la sección de fuente de entrada japonesa. Gracias por la respuesta.

es una tecla "muerta", una tecla modificadora. No hace nada por sí solo, aunque lleva la cuenta de cuántas veces se presiona, posiblemente por eso funciona en el segundo intento.

Más concretamente ... ¿por qué querría usar para cambiar el idioma de entrada, eliminando así su uso para cualquier otra función?

¿Por qué no usar las teclas F, tal vez, en su lugar?

Una mejor solución podría ser una de estas...

https://superuser.com/questions/224161/switch-to-specific-input-source

No me limito a usar la tecla Apple. (¿quizás hayas confundido (tecla de comando) con la tecla de manzana...?)
Bueno, es porque es el más fácil de escribir, y el cambio entre diferentes idiomas ocurre con tanta frecuencia.
mi punto sigue en pie.

Mira esto

cambie con una simple pulsación left_shift -> us, right_shift->ua

"rules": [
                    {
                        "description": "Right Shift to UA",
                        "manipulators": [
                            {
                                "from": {
                                    "key_code": "right_shift",
                                    "modifiers": {
                                        "optional": [
                                            "any"
                                        ]
                                    }
                                },
                                "to": [
                                    {
                                        "key_code": "right_shift",
                                        "lazy": true
                                    }
                                ],
                                "to_if_alone": [
                                    {
                                        "select_input_source": {
                                            "language": "uk"
                                        }
                                    }
                                ],
                                "type": "basic"
                            }
                        ]
                    },
                    {
                        "description": "Right Shift to US",
                        "manipulators": [
                            {
                                "from": {
                                    "key_code": "left_shift",
                                    "modifiers": {
                                        "optional": [
                                            "any"
                                        ]
                                    }
                                },
                                "to": [
                                    {
                                        "key_code": "left_shift",
                                        "lazy": true
                                    }
                                ],
                                "to_if_alone": [
                                    {
                                        "select_input_source": {
                                            "language": "en"
                                        }
                                    }
                                ],
                                "type": "basic"
                            }
                        ]
                    }
                ]
            }