LoginSignup
17
19

More than 5 years have passed since last update.

Microsoft RDPでWindows機につなげる時の日本語キーボード問題

Last updated at Posted at 2018-04-14

はじめに

MacからWindowsにリモート接続(GUI)するときに、MicrosoftのRDP(Remote Desktop)を使っているのですが、Mac側が日本語レイアウトなのに、Windows側でUSレイアウトとして認識されてしまいます。

このRDPが日本語レイアウトであることをWindows側に伝えてくれない問題については、
https://qiita.com/hidecha/items/33624f6ae57d41f3cd86
に非常に詳しく書いてあります。これ自体は、Microsoftが対応してくれないとどうしようもないようです。

また、私も以前バックスラッシュキーについて
https://qiita.com/KNaito/items/174404ea42470d00c063
で記事を書いたのですが、この時使っていたKarabinerというソフトは、現OSであるHigh Sierraには対応していないので、利用出来なくなってしまいました。

そこで妥協策として、Karabinerの後継ソフトであるKarabiner-Elementsを使って無理矢理キーコードを変換して使ってみたところ、まあまあ使える感じでしたので、紹介します。

Karabiner Elements

Karabiner Elementsは、Macでキーレイアウトをソフトウェア的に切り替えられるアプリケーションです。

にも紹介されています。最新版はhttps://pqrs.org/osx/karabiner/ からダウンロードしてインストールできます。

このKarabiner Elementsは、専用のjsonファイルを用意することで、特定のアプリが立ち上がっている時だけキーボードのレイアウトを変更することが可能です。(Complex Modifications機能)

そこで、この機能を使って、Mac (日本語レイアウト)から、WindowsにRDP接続したとき用の設定ファイルを作ってみました。

それが
https://github.com/knight9999/RDPCustomKeyboard
です。(直接ダウンロードしたい場合は、
https://raw.githubusercontent.com/knight9999/RDPCustomKeyboard/master/rdp-custom-keyboard.json
からダウンロード出来ます。)

使い方

上記から取得したjsonファイル rdp-custom-keyboard.jsonを、
~/.config/karabiner/assets/complex_modifications
の下においてください。

次に、Karabiner-Elementsを立ち上げて、+Add Ruleボタンをクリックすると

スクリーンショット 2018-04-14 20.16.04.png

このような画面が出るので、JIS to US with backslashボタンのところのEnableボタンを押して有効化してください。すると、Mictosoft Remote Desktopが立ち上がった時に、キーボードの変換がなされて、日本語レイアウトのキーで入力したものが、対応するUSレイアウトのキーになってくれます。

例えば、デフォルトではSHIFT+2で @ が入力されてしまうのが、ただしく " が入力されるようになります。

ファイルの解説

rdp-custom-keyboard.json の中を見ると、次のようなコードがたくさんあります。

        {
          "type": "basic",
          "from": {
            "key_code": "2",
            "modifiers": {
              "optional": [
              ],
              "mandatory": [
                "shift"
              ]
            }
          },
          "to": [
            {
              "key_code": "quote",
              "modifiers": [ "shift" ]
            }
          ],
          "conditions": [
            {
              "type": "frontmost_application_if",
              "bundle_identifiers": [
                "^com\\.microsoft\\.rdc\\.mac$"
              ]
            }
          ]
},

これは、shiftを押しながら2キーを押した時、それを " として認識させる設定になります。

conditions で条件として、アプリIDが com.microsoft.rdc.mac のときだけ有効になるようにしています。(キー一つ一つに設定しなくてはいけないので、面倒でしたが、、、。また、他のアプリに適用したい場合は、アプリID を、Karabiner EventViewerを使って調べて、conditions の設定を変更します)

苦労した点

キーのマッピングをしたい場合、Karabiner EventViewerを使って地道にしらべていけばよいのですが、やや分かりにくかったものをまとめます。

JISの¥キー => internatioal3
JISの]キー => macのキーでは backslash ですが、macに接続した外部キーボードでは non_us_pound でした。
Windows側の(USキーボード扱いの) ~キー => non_us_backslash

補足

気づいたキーは全部対応させたと思ったのですが、よく考えたら日本語変換キーのマッピングしてなかった、、。日本語使うことがなかったので、、、。時間があれば、こちらも対応させたいと思います。

そのほか、キーのマッピングが違ってるところなどありましたら、コメントをいただければと思います。

17
19
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
17
19