Karabinerで設定したキーバインディングをParallels上でOFFにする方法

さて、ようやく今年になって本格的にMacに移行したのだけれど、USキーボードが大好きな人間なので、スペースバーの長さ的に左Command、右コマンドによる切り替えは難しい。やっぱり慣れ親しんだShift+SpaceでIME切り替えを使いたい。自分の事情と要望をまとめるとこんな感じ。

  • 10年近くShift+SpaceでIME切り替えをしていたので、やっぱりこれに設定したい。
  • Mac環境になったとはいえ、オフィス系のアプリケーションはParallelsWindows上で動かしている。
  • MacでもWindows on ParallelsでもShift+SpaceでIME切り替えができるようにしたい。

Mac環境におけるIME ON/OFFをShift+Spaceにバインディングするのは、みんな大好きKarabiner (旧keyremap4macbook) で設定できる。

以下の設定項目をONにすればよい。

 For Japanese
  > Change Space Key
   > Shift+Space to KANA/EISUU (toggle)

しかし、この設定そのものはParallels上で動くWindowsの設定とは関係ない。そして、Parallels上のWindows側のIMEでShift+Spaceを設定してもShift+SpaceでIME切り替えができない。原因はMac側でShift+Spaceのキー操作シグナルがIME切り替えに変換されてしまい、Parallels上の仮想マシンに対してShift+Spaceのキー操作が送られていないことっぽいことに気づく。

これは困ったなぁと思っていたのだけれど、Karabinerはアプリケーション毎に、カスタムキーバインドを無効にすることが可能みたい。ということは、Parallelsに対してIME ON/OFFのキーバインディング設定を無効にすることができれば、Windows上のIME設定が使えるようになるのではないかと予想。

というわけでprivate.xmlを記述して、Parallelsにおいては上記設定が無効になるようにすればよい。結論からいえば、自分の場合には以下の設定でOKだった。PARALLELSについてはVIRTUALMACHINEというappnameですでに登録されているので、自分で登録する必要がないみたい。

 <?xml version="1.0"?>
 <root>
   <!--
   <appdef>
     <appname>PARALLELS</appname>
     <equal>com.parallels.desktop</equal>
     <equal>com.parallels.vm</equal>
     <equal>com.parallels.desktop.console</equal>
   </appdef>
   -->
   
   <item>
     <name>[customize] Change Space Key</name>
     <appendix>[customize] Shift+Space to KANA/EISUU (toggle)</appendix>
     <identifier>private.shift_space_toggle</identifier>
 	<!-- <not>PARALLELS</not> -->
     <not>VIRTUALMACHINE</not>
 
     <autogen>
       __KeyToKey__
       KeyCode::SPACE, ModifierFlag::SHIFT_L,
       KeyCode::VK_JIS_TOGGLE_EISUU_KANA
     </autogen>
     
   </item>
 </root>


これを読み込めば、Change Keyの部分に新たに [customize] Shift+Space to KANA/EISUU (toggle) という項目が現れるので、これのチェックをすればよい。上記で設定した元のShift+Spaceの設定のチェックを外すことを忘れずに。

これでMacでもParallels上のWindowsでもShift+SpaceでIME切り替えができるようになった!やった!!