CapsLock для переключения языков в Parallels Desktop

Я очень люблю Mac OS X. Но время от времени мне нужна MS Windows для задач, которые Mac OS X решить сама не может; например, полный MS Office, MS Project, MS Visio, MindJet/MindManager, брокерские торговые терминалы, большинство игр, и т.д.

А ещё мне очень нравится использовать CapsLock для переключения языков вместо дефолтного Cmd+Space или Alt+Shift. Вы не поверите насколько это удобно пока сами не попробуете.

Но при использовании MS Windows в Parallels Desktop в качестве гостевой ОС вместе с PCKeyboardHack для переключения языков ситуация упирается в выбор только одного из следующих вариантов:

  • Использовать CapsLock для переключения языков и в Windows, и в Mac OS X, но Cmd+Tab направляется в Windows и переключается между Windows-приложения, а не между приложениями Mac OS X.
  • Использовать Cmd+Tab для переключения между приложениями Mac OS X, но языки в Windows приходится переключать с помощью Alt+Shift или Ctrl+Shift,  не с помощью CapsLock, как в Mac OS X.

В принципе, это ограничение касается любых системных горячих клавиш Mac OS X, а не только Cmd+Tab. Так, сложно делать скриншоты с Cmd+Shift+4, не работает Cmd+Ctrl+N для EverNote, etc.

Идеальный сценарий — Cmd+Tab для приложений Mac OS X одновременно с CapsLock для переключения языков в Mac OS X и Windows — с этими инструментами невозможен. Но вот решение как этот идеальный сценарий реализовать.

Для начала, установите KeyRemap4MacBook. Если вы бывалый пользователь Mac OS X, то она у вас скорее уже есть. Если нет, то настоятельно рекомендую — очень уж хороша она для множества интересных клавиатурных трюков (типа таких).

Запустите, затем идите в закладку «Misc & Uninstall», и нажмите кнопку «Open private.xml». В окошке Finder’а выберите и откройке файл private.xml на редактирование. Добавьте вот эти строчки, чтобы текст выглядел примерно вот так (gist):

<?xml version="1.0"?>
<root>
  <item>
    <name>Change F19 to switch language in VMware, Parallels, VirtualBox</name>

    <item>
      <name style="important">First, remap CapsLock to F19 (code 80) in PCKeyboardHack.</name>
    </item>

    <item>
      <name>F19 (CapsLock) to Alt+Shift</name>
      <identifier>private.f19caps_to_altshift_in_vm</identifier>
      <only>VIRTUALMACHINE</only>
      <autogen>__KeyToKey__ KeyCode::F19, ModifierFlag::NONE, KeyCode::SHIFT_L, ModifierFlag::OPTION_L</autogen>
    </item>

    <item>
      <name>F19 (CapsLock) to Ctrl+Shift</name>
      <identifier>private.f19caps_to_ctrlshift_in_vm</identifier>
      <only>VIRTUALMACHINE</only>
      <autogen>__KeyToKey__ KeyCode::F19, ModifierFlag::NONE, KeyCode::SHIFT_L, ModifierFlag::CONTROL_L</autogen>
    </item>

  </item>

</root>

Теперь сохраните файл и идите в KeyRemap4MacBook на закладку «Change Key». Нажмите кнопку «Reload XML». В верхней части списка появятся два новых режима.

KeyRemap4MacBook new mappings

Включите один из режимов, соответствующий вашим настройкам Windows (Alt+Shift или Ctrl+Shift).

Затем откройте настройки Parallels Desktop (NB: не путайте с конфигурацией виртуальной машины), закладка «Горячие клавишы», секция «Системные клавиши», и установите для настройки «Отправлять системные кнопки» значение «По условию». Этот режим будет отправлять Cmd+Tab в основную Mac OS X, а не в гостевую MS Windows.

Parallels Desktop system shortcuts

И в конце концов, запустите виртуальную машину MS Windows и проверьте что переключение языков срабатывает по кнопке CapsLock в точности как в основной Mac OS X, а также что Cmd+Tab и другие системные сочетания переключает между приложениями Mac OS X, а Alt+Tab — между приложениями MS Windows.

MS Notepad with Russian and English

Всегда пожалуйста!