手元のMacから、AWS(Amazon Web Services)上にあるWindows Server 2019マシンに接続したときに、キーボード配列が変になることがあります。対応方法を記します。
目次
前提条件
私は普段はMacを使っているのですが、個人的にAWS上にWindows Server 2019のマシンを走らせており、プログラミングなどの目的でリモートデスクトップでログインすることがあります。しかし、(もしかしたら何か設定があるのかもしれませんが)AWS上でWindowsマシンのインスタンスを作成すると英語版のWindowsになるため、表示言語だけではなくキーボードの設定なども英語になってしまいます。
この場合、キーボード配列も一般的な日本語配列ではなく英語配列のものとして認識されてしまうため、日本向けMacのキーボードと異なった文字が入力されてしまいます(アスタリスク(*)を打とうとすると、ダブルクオーテーションマーク(")が入力されるなど)。このままだと不便で仕方がないので、何とかしてキーボードの配列を日本語キーボードと同じものにします。
- 手元のマシン:macOS 10.15 (Catalina) 日本語
- 接続先のマシン:AWS上にあるWindows Server 2019 英語版
- 接続に使うソフトウェア:Microsoft Remote Desktop 10.5.0
実際に行った方法
どれが一番クリティカルなのかははっきりとしないのですが、行った設定変更を記します。
日本語入力を有効にする
初期設定だと入力に使う言語が英語しか無いため、日本語を受け付けるようにするところから始めます。
まずは「地域と言語」の設定画面から日本語を追加して再起動。その後「オプション」からキーボードレイアウトを日本語キーボードにしてみてください。
レジストリを変更してレイアウトファイルを変更
こちらのサイトには、レジストリを変更してキーボードレイヤードドライバを変える方法が記されています。
https://qiita.com/hidecha/items/33624f6ae57d41f3cd86
ただ、私の場合はこれを修正して再起動しただけでは、US配列から日本語配列に変わることはありませんでした。
どうやら、コンソール接続の場合は上記のレジストリを変更することで問題が解消するようなのですが、リモートデスクトップの場合は異なるレジストリを変更する必要があるようです。
https://docs.microsoft.com/ja-jp/archive/blogs/askcorejp/rs4-rdp-keyboardlayout
具体的には、
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layouts\00000411
のLayout FileをKBDJPN.DLLからkbd106.dllに修正する必要があるようです。CurrentControlSetより後の部分が異なることにご注意ください。変更したら接続先のマシンを再起動しましょう。
別の手段:Remote Desktop側の設定を変更する
上記の「レジストリを変更してレイアウトファイルを変更」の部分ではレジストリを変更しましたが、何らかの理由でレジストリを変更できない場合もあるかもしれません。
その時は、Mac側のRemote DesktopのメニューからConnections > Keyboard Modeを選び、「Scancode」から「Unicode」に変更しても、日本語キーボードになりました。ただ、これが本来あるべき方法なのかはよく分かりません。。
終わりに
今回は、レジストリを変更することで対応できました。いろいろなサイトを見ていると、他にも「日本語入力をONにした状態でリモートデスクトップ接続を行う」「Microsoft Remote DesktopではなくParallels Clientを使う」などの情報もありましたが、これらは(少なくとも私の環境では)意味がありませんでした。
なお、レジストリを下手に変更すると、最悪の場合はマシンが起動しなくなります。レジストリを変更する場合は十分注意してください。