リモートワークでもどうしてもコピペがやめられない人のためのMacの設定

リモートワークによってMacBookから会社のWoindowsへリモートデスクトップ接続しなければならない事情もありノーカスタマイズでは生きていけなくなってしまいました。MacBookを使っていてもWindowsと同じように `Ctrl+c` `Ctrl+v` を迷いなく使うための設定方法をまとめます。

# はじめに

基本的には @qyen さんの書かれている [『WindowsユーザーがMacOSでRemoteDesktop越しにWindowsを扱うときのキーマップ』](https://qiita.com/qyen/items/344520a080d1c302efda) の内容そのままで実現できたのですが、私の環境に合っていない部分があったので備忘のために改めて書き残します。

## 業務環境

参考までに私が仕事しているPC環境についてまとめます。Macをメインで使いつつも、Winodwsを使わざるを得ないシーンがあることが問題を生み出しています。

- メイン：MacBook Pro
  - 自宅のリモートワークで使用
  - 外付けで日本語109キーボード(私はRealforce派)使用
  - VPN経由でオフィスのWindowsへリモートデスクトップ接続するケースあり
- サブ：WindowsのデスクトップPC
  - オフィスのデスクに残されたままのPC
  - スプレッドシート化されていないExcelなどの過去のドキュメントの参照と編集
  - 諸事情によりWindowsのローカルに構築しているちょっとした作業環境
- 接続アプリ： [Microsoft Remote Desktop Beta](https://install.appcenter.ms/orgs/rdmacios-k2vy/apps/microsoft-remote-desktop-for-mac/distribution_groups/all-users-of-microsoft-remote-desktop-for-mac)
  - 諸事情によりAppStoreに公開されているMicrosoft Remote DesktopではなくBeta版を使用

## 問題点

私のように物心ついたときには左手小指を軸に `Ctrl+c` `Ctrl+v` でコピペをしていた人間はMacの環境でも左手小指を軸にコピペがしたいのですが、Mac（の初期設定）とWindowsでコピペに互換性がないことが問題を複雑にしています。

- Macの場合はコピペに `command` を使う
- Macのキーボードは、Windowsでコピペするときの `Ctrl` の位置に `command` ではなく `Caps Lock` がある 
- Macからリモートデスクトップ接続してWindowsでコピペするときはMacの `control` がWindowsの `Ctrl` になる

## 事前準備

はじめに、おなじみの [Karabiner-Elements](https://karabiner-elements.pqrs.org/) をインストールしておきます。Karabiner-ElementsはMacのキーボードをカスタマイズするソフトウェアです。  
  
参考：[快適キーボード操作のためのキーカスタマイズ ～Mac編～](https://knowledge.sakura.ad.jp/23355/)

# Macのキーボード設定

まずはMacローカルで作業するときにWindowsと同じ感覚でコピペできるようにします。  
  
ちなみに、Macローカルだけなら `システム環境設定＞キーボード` の `装飾キー` からもキーボードの動作を変更できますが、これだけではリモートデスクトップ時の問題が解決できないので、混乱回避のためシステム環境設定はいじらず、なるべくKarabiner-Elementsにまとめて設定する戦略をとりました。

## MacBook本体のキーボード設定

MacBook本体でWindowsの感覚でコピペできるように左下のキーを変更します。

- 左下の `Caps Lock` を `command` に変更

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3324/9a88c3e8-6224-3e0f-3112-07bc22af39ce.png)

## 日本語109外付けキーボードの設定

外付けキーボード（繰り返しますが私はRealforce派）でもWindowsの感覚でコピペできるようにします。Macのコピペは `Ctrl` ではなく `command` を使うので、109キーボードをMacにつないだ状態でWindowsと同じようにコピペするには `Ctrl` キーを `command` に置き換える必要があります。あとはお好みですが私の場合は109キーボードの `Caps Lock` や `無変換` 、 `変換` などはMacに合わせて動作するようにしています（要は左下のキーでコピペできればあとはMacのままでいい）。

- 左下の `Ctrl` を `command` に変更
- `Caps Lock` はMacに合わせて `control` に変更
- `無変換` は `英数` に変更
- `変換` は `かな` に変更

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3324/ee5ab272-683d-8dc3-1632-89a7fc26952a.png)

# Remote Desktopの設定

これで完璧なコピペマスターと思ったところでしたが、残念ながらリモートデスクトップ接続した途端にまたMacとWindowsの互換問題の闇に襲われます。

## リモートデスクトップ接続時だけキーを入れ替える設定

前述のMacのキーボード設定によってMacBook本体と外付けキーボード(私の場合は(ry)の左下のキーはすべて `command` が割り当てられています。これをリモートデスクトップ接続時だけ `Ctrl` に置き換えれば問題は解決します。これはKarabiner-Elementsの「Complex modifications」で設定できます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3324/e3ee6f3d-5b48-c3e9-cf5c-faed192d840c.png)

左下の「Add rule」ボタンを押して、「Import more rules from the Internet(open a web browser)」を押すとブラウザが立ち上がります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3324/67c4b57f-1c81-8cf7-1fba-dc2e9de7ad14.png)

このサイトではComplex modificationsの代表的な設定パターンがあらかじめ公開されていて、自分が導入したいものを選んで自分の環境にImportすることができます。

[karabiner\-elements\-complex\_modifications](https://ke-complex-modifications.pqrs.org/)

実はこのサイトに「Remote Desktop」というメニューが公開されていて、「リモートデスクトップ接続時だけ `command` を `Ctrl` に置き換える」という、まさにやりたいことが実現できます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3324/21761e6b-701c-6ae3-b8b4-40ab6107c7d5.png)

ただ、私が使っているのは「Microsoft Remote Desktop **Beta**」なので残念ながらこの設定をImportしてもやりたいことが実現できません。そこで、この「Remote Desktop」を「Microsoft Remote Desktop Beta」向けにさらにカスタマイズします。Importの横のボタンでメニューを開き、「Edit JSON(Open external site)」を選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3324/3973958b-6e42-44a0-6f94-241ae5d19446.png)

Complex modificationsの設定はJSON形式で記述します。中身の仕様さえ理解できれば自分で好きなようにカスタマイズできます。今回は「Microsoft Remote Desktop」向けに設定している内容を「Microsoft Remote Desktop Beta」向けに書き直せば良いわけです。中身を見てみると「Bundle Identifiers」にそれらしき設定があります。`com\.microsoft\.rdc\.mac` となっている部分を `com\.microsoft\.rdc\.osx\.beta` に書き換えます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3324/8e1cc3d5-dc06-5428-542c-5edb504270a7.png)

同様の記述が4箇所ほどあるので全て同じように書き直して、「INSTALL!」ボタンを押してカスタマイズした内容を自分のKarabiner-Elementsに取り込んで最後に「Enable」にすると設定完了です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3324/72d8c4a5-9bf4-ee05-208e-67fccdaa9752.png)

「Complex modifications」の「Enabled rules」に反映されています。確認できたらリモートデスクトップ接続して `Ctrl+c` `Ctrl+v` をお楽しみください。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3324/a8c5ee91-ace7-4701-72ed-474bbcafb540.png)

なお、キャプチャの画面では既存の設定と混在しないように `Modification Title` と `1st Rule Description` も変更しています。参考までに書き換え版のJSONファイルをGistに置いておきます。

参考：[Swap command and control \(for MRD Beta\)](https://gist.github.com/radiocat/f0a6f0653427f755a933c2315226b43c)
 
ちなみに、「Microsoft Remote Desktop Beta」向けに書き換えた「Bundle Identifiers」はアプリを一意に特定する識別子です。アプリのパッケージの内容を表示して確認することができます。

参考： [Bundle Identifierを確認する \- はらふじ備忘録](http://harafuji0613.hatenablog.com/entry/2015/03/22/002953)


# おまけ：Windowsのレジストリ変更

Macからリモートデスクトップ接続するとなぜか英語キーボード判定されてしまう問題もあります。この問題はWindowsのレジストリを変更することで解消します。合わせて設定しておけばリモートワークでも穏やかなコピペライフが訪れることでしょう。

参考：[MacからWindowsへのリモートデスクトップでJISキーボードを認識させる \- Qiita](https://qiita.com/totto357/items/2fd9ec00608a43ad0b9b)