Я хочу использовать четыре языка в своей системе OS X (английский, испанский, китайский и японский), и я знаю, что могу изменить язык с помощью ⌘
+ Space
. Тем не менее, я испытываю патологическую ненависть к переключению с ним, потому что он требует от меня выбора из такого, очень большого количества вариантов! Я также знаю, что могу изменить его в строке меню справа от панели, но это гораздо более отвратительное решение, чем решение ⌘
+ Space
.
Поэтому я скорее хочу изменить его более простым ярлыком, например следующим:
⌘
переключается на английский⌘
переключается на испанский⌘
+ влево ⌥
+ C
переключает на китайский язык⌘
+ вправо ⌥
+ C
переключает на японский язык.Пробовал использовать Karabiner
(потомок от KeyRemap4MacBook
), но не работает с первой попытки на китайском, на котором при переключении на китайский остается английский (иконка источника ввода на панели меню меняется, но клавиатура не работает ). Но по некоторым причинам, если я переключаюсь с английского на китайский с английского на китайский (две попытки), то китайская клавиатура наконец-то работает.
Поэтому мне не нравится идея использования Karabiner
. Так как же лучше изменить источник ввода?
Я столкнулся с той же проблемой с китайским и японским языками. (Значок в строке меню изменился, но источник ввода фактически не изменился, пока я не переключился на другой источник ввода и обратно.) Это известная ошибка, согласно сообщению в списке рассылки Karabiner :
Это одна из самых раздражающих ошибок OS X.
Изменение источников ввода CJK непосредственно из программы не обрабатывается должным образом.
Итак, вам необходимы следующие процедуры.
Шаг 1:
включите «Выбрать следующий источник в меню ввода» (команда-параметр-пробел) в «Системных настройках»> «Клавиатура»> «Ярлыки».Шаг 2:
Измените источник ввода, отправив команду-опция-пробел.<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 подвержен той же ошибке.
Другой обходной путь — просто перейти на другой источник ввода и обратно:
<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>
⌘ является «мертвым» ключом, ключом-модификатором. Он ничего не делает сам по себе, хотя, поскольку он ведет подсчет количества нажатий, возможно, поэтому он работает со второй попытки.
Более того... зачем вам использовать ⌘ для переключения языка ввода, тем самым исключив его использование для любой другой функции.
Почему бы вместо этого не использовать F-клавиши?
Лучшее решение может быть одним из этих...
https://superuser.com/questions/224161/переключиться на конкретный источник ввода
⌘
(командную клавишу) с клавишей Apple...?)⌘
его проще всего печатать, а переключение между разными языками происходит очень часто.Проверь это
переключаться простым нажатием 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"
}
]
}
]
}
Бласзард
⌘
+W
для закрытия окна), что определенно не то, что мне нужно... Что касается первого решения, я попробую его позже.Бласзард
Бласзард
__KeyOverlaidModifier__
указанным выше, но я переключил источник ввода на японский и испанский языки, потому что источник ввода на японском языке может работать правильно, если вы установите его в настройках Karabiner в разделе источника ввода на японском языке. Спасибо за ответ.