質問: ### 前提・実現したいこと Windowsにリモートデスクトップにログインしたとき、接続元で使用しているキーボードのレイアウトに設定されるという仕様がRDPにはあります。XP時代によくあったリモートデスクトップするとUSキーボードになってしまって困るというアレです。最近のOSやリモートデスクトップクライアントはちゃんとJISキーボードはJISキーボードで渡してくれるらしく、問題になることも少なくなったと思います。 前提となる知識はここまでとして、私はDvorak配列を使っているため、Windows 10でも日本語入力のキーボードレイアウトをDvorak配列にしています。方法は下記の質問の自己解決です。 Windows 10 - Win10 1607でDvorakにするレジストリがストアアプリに効かない(44008)|teratail 普段使用しているときは問題ありませんが、Macからリモートデスクトップで接続すると、QWERTY配列になってしまいます。ということで、早速、RDPによるキーボードレイアウトを変更する下記レジストリを設定し、再起動しました。 キー : HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout 名前 : IgnoreRemoteKeyboardLayout 種類 : REG_DWORD データ : 1 参考: ターミナル サービスでサーバー上の既定の IME を使用する方法 | Hebikuzure's Tech Memo しかし、再起動後に接続しなおしてみるとQEWRTY配列のままです!直接ログオンしたときはDvorak配列ですので、設定が吹っ飛んだというわけではありません。ということで今回聞きたいことは下記になります。 **Windows 10で`IgnoreRemoteKeyboardLayout`レジストリは有効なのでしょうか?** もし、このレジストリを使えないなら、代替手段はあるのでしょうか?特に問題なく動いているという方がいれば、環境を教えていただくだけでも助かります。(私の環境が特殊すぎる可能性があるため) ### 発生している問題・エラーメッセージ Windows 10で`IgnoreRemoteKeyboardLayout`を設定しても、リモートデスクトップで接続すると、`LayoutDriver JPN`で指定したキーボードレイアウトにならない! ### 該当のソースコード * 過去の質問の自己解決で編み出したDvorak配列設定 * `IgnoreRemoteKeyboardLayout`の設定 の二つを実施。(詳細は前提に書いてあるリンク先参照) ### 試したこと `IgnoreRemoteKeyboardLayout`について検索しましたが、Windows 10に関する情報は見つけられませんでした。 あらかじめ直接ログオンしておけば、リモートデスクトップによるキーボードレイアウト置き換えは行われません(これはレジストリの有無に関係無く、昔からの仕様のはずです)。ということは自動ログオンさせておけば良いのでは?とも思いましたが、すぐそばに置いてある自分だけのパソコンとは言え、再起動しただけでログオンできてしまうのはちょっと無謀かと思っています。 ### 補足情報(言語/FW/ツール等のバージョンなど) * 【接続先】 OS: Windows 10 1607 Pro IME: Atok 2016 および Microsoft IME (Dvorak配列化済み) * 【接続元】 OS: macOS Sierra 10.12.2 リモートデスクトップクライアント: Microsoft Remote Desktop 8.0.36 そういや、プログラミングに関係あるかですが、Dovrak配列でないと私のコーディング力が10分の1以下にまで落ちますので、私にとっては**死活問題**です。Visual Studio(Codeじゃないやつ)で遊びたいんだけどなー。
回答: Creators Update (1703)にアップデートした後、回答を頂いたお二人の回答も参考にしながら色々試して見て、とりあえず解決しました。 `IgnoreRemoteKeyboardLayout`自体は効いていないというわけではなく、見ているところが異なっている?ようです。どっちかというと、Windows 10上の言語設定でIMEを使うとかそういう所が設定されないだけのようです。なので、これ自体が悪いわけではありません。 事実ストアアプリについては、`IgnoreRemoteKeyboardLayout`を設定しただけでうまくいくようになりました。普通のデスクトップアプリはそのままですが。 で、実際の問題は、通常のデスクトップとリモートデスクトップではキーマップの保存場所が異なると言うことです。 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\KeyboardType Mapping\JPN ここに、それぞれのキーボードレイアウトがあり、リモートデスクトッププロトコルに含まれる指示に従って、変更するという仕組みになっているようです。私の場合は全てUSキーボードなので、 キー : HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\KeyboardType Mapping\JPN 名前 : 00000000 種類 : REG_SZ データ : kdb101.dll を見に行っています。`kdb101.dll`を`kbddv.dll`に変更することでうまくいくようになりました。 半ば諦めかけだったんですが、strike1217さんとtak.kickさんに回答を頂いて、Windows 10もアップデートしたし、ということで、時間ができたら再チャレンジしようと思っていました。気付いてみたら凄く時間がかかってましたが、なんとかできました。この場でお礼申し上げます。