Microsoft Remote DesktopでCommandキーとControlキーを入れ換える

Microsoft Remote Desktop Connection Client for Macから乗り換えたMicrosoft Remote Desktopで、Windows側のウィンドウを閉じようとしてCommand+wをつい癖で押してしまって、接続しているリモートデスクトップが閉じられてしまってストレスを感じることが多くなってきた
さすがに今更Microsoft Remote Desktop Connection Client for Macに戻るわけにもいかないので対策してみた

Microsoft Remote Desktop

CommandキーとControlキーを入れ換えたい

Windowsでもよくある単純にこのキーとこのキーを入れ換えたいレベルでは済まない話だというのはわかる
なぜなら単純にキーを入れ換えてしまうとキーボードショートカットが全て変わってしまうから
Microsoft Remote Desktopがアクティブな時にだけCommandキーとControlキーを入れ換えたい

Karabinerを使えばよさそう

Karabiner
最新版のKarabiner-Elementsでは使っている環境に対応していないようなので、旧バージョンのKarabiner 10.22.0をダウンロードしてインストールした

インストールしてみたらデフォルトでキー入れ換えの定義が入っていた

やっぱりこういう要望はあるんでしょう
デフォルトでキー入れ換えの定義が入っていました
例えば

  • Command_L to Contorol_L(only in virtual machine,RDC)
    (仮想マシンかRDCの時だけ左側のCommandキーをControlキーにする)
  • Contorol_L to Command_L(only in virtual machine,RDC)
    (仮想マシンかRDCの時だけ左側のControlキーをCommandキーにする)

Microsoft Remote Desktopで入れ換えの定義が効かない

残念なことにMicrosoft Remote Desktop Connection Client for Macでは動作するがMicrosoft Remote Desktopでは動作してくれない
たぶんMicrosoft Remote Desktopはリリース当時には存在しなかったのかな?

定義されていなければ定義を書けばいいじゃない

ここから設定メモ
Karabinerには独自の入れ換え定義をXMLで書ける機能が備わっているようなのでそれを使います(private.xml)

Karabiner:[Misc & Uninstall]タブ

KarabinerのPreferencesを選択して、[Misc & Uninstall]タブを選択すると「Custom Setting」に[Open private.xml]ボタンがあるのでクリックします
private.xmlというファイルが入ったフォルダが開かれるので、そのprivate.xmlをエディタで書き換えます

書き換える内容

<?xml version="1.0"?>
<root>
  <appdef>
    <appname>MSRDC</appname>
    <equal>com.microsoft.rdc.macos</equal>
  </appdef>
  <item>
    <name>For Microsoft Remote Desktop</name>

    <item>
      <name>Swap COMMAND_L and CONTROL_L</name>
      <identifier>private.com.microsoft.rdc.macos</identifier>
      <only>MSRDC</only>
      <autogen>
        __KeyToKey__
        KeyCode::CONTROL_L,
        KeyCode::COMMAND_L
      </autogen>
      <autogen>
        __KeyToKey__
        KeyCode::COMMAND_L,
        KeyCode::CONTROL_L
      </autogen>
    </item>
  </item>
</root>
  • appdefタグでMicrosoft Remote DesktopをMSRDCとして定義する
  • onlyタグでMSRDC(=Microsoft Remote Desktop)だけに限定して
  • CONTROL_LをCOMMAND_Lに、COMMAND_LをCONTROL_Lにキーコードを変換する

private.xmlを書き換えて上書き保存したあとに、[Change Key]タブに切り替えて[Reload XML]をクリックするとprivate.xmlで定義したものが表示されているので有効化する

Karabiner:[Change Key]タブ

これで定義した入れ換えルールが有効化されました