はじめに
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ボタンをクリックすると
このような画面が出るので、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
補足
気づいたキーは全部対応させたと思ったのですが、よく考えたら日本語変換キーのマッピングしてなかった、、。日本語使うことがなかったので、、、。時間があれば、こちらも対応させたいと思います。
そのほか、キーのマッピングが違ってるところなどありましたら、コメントをいただければと思います。