2013年10月31日木曜日

USキーのMacでWindowsをJISキーのMacぽく使う方法

MacをUSキーボードで使いたい。
でも [かな]と[英数]の切替は日本語キーボードと同じようにしたい。
Macでもエディタだけ秀丸を使いたいからParallelsでWindowsを入れている。
MacとWindowsでキー操作が違うとツラいから、
Mac上のWindowsでも、[かな/英数]を左右のコマンドキーに割り当てたい。

これまでは「窓使いの憂鬱」で、Windows側のキーをリマップして、上記を実現していた。でも窓使いの憂鬱はサポート終了だし、変な使い方をしてるせいか、ときどき動作が不安定になっていた。そして今回、OSとParallelsを更新したらうまくいかなくなった。原因不明。日本語入力が不安定なのは結構なストレス。

「秀丸使いたかったらWindowsマシン使え」「かなキー使いたかったら日本語キーボードにしとけ」というのは、非常にもっともなご意見。でも、モノが増えるのはイヤだし、USキーボードはスッキリしてるから好きなのだ。どうにかなったので、メモ。似たような環境の方の参考になれば幸いです。

環境

  • PC:MacBook Air USキー
  • 本体OS:MacOS 10.9 Mavericks
  • 仮想マシン:Parallels 9
  • ゲストOS:Windows XP
  • IME:Google 日本語入力
キーがUSじゃないなら手順(1)だけで完了。
MacOS, Windowsは他のバージョンでもOKと思う。
(※追記(2014/3):Windows 8 でも同じようにできました。)
仮想マシンは、Parallels以外に、VMWareでもOKのはず。
IMEはGoogleでなくてもたぶん同様の設定ができる。

手順

(1) Karabinerをインストール

ここからKarabinerをインストールして、起動する。
メニューバーから[Preference]を選択し、設定画面を開く。

[Change Key]タブの [For Japanese]→[左右のコマンドキーを「英数/かな」としても使う] →[コマンドキーの動作を優先モード]にチェックを入れる。

これで以下のようになる。この時点で私はとても感動しました。ありがとうKarabiner。
  • 左コマンドキーを単独で押すと[英数]
  • 右コマンドキーを単独で押すと[かな]
  • 左右コマンドキーと他のキーを同時に押すと、コマンドキーとして機能
この状態で、Parallels上のWindowsにも、ちゃんと左コマンド単独押下時は[無変換]、右コマンド単独押下時は[かな]のキーコードが伝わっている(キーコードは「窓使いの憂鬱」などで確認できる)。なので、リクツの上ではWindowsでIME ON/OFFの切り替えができるはず。

ところが、どういうわけか、うまくいかない。Windows上で英語キーボードを使っていることになっているので、[無変換][かな]キーは存在しないことにされているのかもしれない。そこで、Parallelsを利用しているときだけ、Windowsであまり使わなさそうなキーの組み合わせに、IMEのON/OFFを割り当てることにする。

(2) private.xmlの設定

Karabinerは非常に柔軟な設定ができる。
マニュアルはこちら(英文)。

(1)と同様にメニューバーから[Preference]を選択して設定画面を開き、
[Misc&Uninstall]タブにあるボタンからprivate.xmlを開く。
(このボタンが無い場合は、KeyRemap4MacBookを最新版に更新)

private.xmlを開き、<root>と</root>の間に、以下を記入する。

<item>
    <name>追加</name>
    <item>
       <name>左右のコマンドキー(⌘)を「英数/かな」としても使う</name>
       <appendix>(左/右コマンドキーの空打ちで「英数/かな」)</appendix>
       <appendix>(コマンドキーを押している間に他のキーを打つと通常のコマンドキーとして動作)</appendix>
       <identifier>remap.jis_command2eisuukana_prefer_command_notvirtualmachine</identifier>
       <not>VIRTUALMACHINE</not>
       <autogen>__KeyOverlaidModifier__ KeyCode::COMMAND_L, 
           KeyCode::COMMAND_L, KeyCode::JIS_EISUU</autogen>
       <autogen>__KeyOverlaidModifier__ KeyCode::COMMAND_R, 
           KeyCode::COMMAND_R, KeyCode::JIS_KANA</autogen>
    </item>
    <item>
       <name>左右のコマンドキー(⌘)をVirtualMachineでも「英数/かな」として使う</name>
       <appendix>(VirtualMachine上で左/右コマンドキーを空打ちすると[Ctrl+Shift+F11/F12])</appendix>
       <appendix>(コマンドキーを押している間に他のキーを打つと通常のコマンドキーを送信)</appendix>
       <appendix>(Parallelsのデフォルト設定では同時押しのコマンドキーは[Ctrl]と解釈される)</appendix>
       <identifier>remap.jis_command2eisuukana_prefer_command_virtualmachine</identifier>
       <only>VIRTUALMACHINE</only>
       <autogen>__KeyOverlaidModifier__ KeyCode::COMMAND_L, 
           KeyCode::COMMAND_L, KeyCode::F11, ModifierFlag::CONTROL_L | ModifierFlag::SHIFT_L</autogen>
       <autogen>__KeyOverlaidModifier__ KeyCode::COMMAND_R, 
           KeyCode::COMMAND_R, KeyCode::F12, ModifierFlag::CONTROL_L | ModifierFlag::SHIFT_L</autogen>
    </item>
 </item>

private.xmlを保存して、[Reload XML]を押すと、[追加]という項目が増える。

[追加]の下の2項目にチェックを入れる。
手順(1)で紹介した[For Japanese]以下のチェックは外す。

すると、Mac上では先述の「左右のコマンドキーを「英数/かな」としても使う」の挙動を保ちつつ、Parallels等のバーチャルマシン上では、以下のように動作するようになる。
  • 左コマンドキーを単独で押すと[Ctrl]+[Shift]+[F11]
  • 右コマンドキーを単独で押すと[Ctrl]+[Shift]+[F12]
  • 左右コマンドキーと他のキーを同時に押すと、コマンドキーとして機能

(3) Google 日本語入力の設定

あとはWindowsのIMEの設定で、
[Ctrl]+[Shift]+[F11]/[F12]にIMEのON/OFFを割り当てればOK。

Google 日本語入力の場合、
タスクトレイのスパナの印をクリックして[プロパティ]を押す等で設定画面を開く。
[一般]タブ→[キー設定]の[編集]ボタンを押して、キー設定画面を開く。

左下[編集]→[エントリの追加]で新しいキー入力設定が追加できるので、
以下を追加する。

これで完了。
エディタ等を一度終了して開き直せば、
  • 左コマンドキーを単独で押すと英数入力(IME Off)
  • 右コマンドキーを単独で押すとかな入力(IME On)
になっているはず。