Ask CORE

Microsoft Japan Windows Technology Support

Windows 10 RS4 へのリモート デスクトップ接続時に、UWP アプリへの入力時のみキーボード配列が異なる事象について

みなさん、こんにちは。
Windows プラットフォーム サポートの今入です。

今回は、現在確認できている既知の問題について紹介いたします。

更新履歴
2018/6/8
本記事を公開いたしました。原因を調査中です。
2018/6/8
回避策を追記しました。
2018/6/21
事象の説明 及び 原因を追記しました。
2018/6/27
回避策を追記しました。

事象


日本語環境の Windows 10 RS4 (1803) へのリモート デスクトップ接続を行った際、UWP (ユニバーサル Windows プラットフォーム) アプリへの入力時に、キーボード配列が英字配列 (または 意図しない配列) になる事象が確認できております。また、IME がオフの状態の時のみ発生致します。
例えば、[Shift] + [2] キーを押した場合、Win32 アプリケーション (メモ帳など) では ” (ダブルクォーテーション) が入力されますが、UWP アプリでは @ (アットマーク) が入力されます。(下図参照)

この事象は、UWP アプリに対して影響がございます。
例えば スタート メニューの検索 (Cortana) や Microsoft Edge, その他 独自に開発された UWP アプリでも発生致します。

また、Hyper-V 仮想マシンを “拡張セッション” で利用している場合でも、同様の事象が発生します。
これは、拡張セッションの機能が 内部でリモート デスクトップの技術を用いているためです。

原因


コンソール接続の場合は、以下のレジストリにあるキーボード レイアウト “kbd106.dll” が利用されます。
 パス: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\i8042prt\Parameters
 名前: LayerDriver JPN

しかしながら、リモート デスクトップ接続の場合は、以下のレジストリにあるキーボード レイアウト “KBDJPN.DLL” が利用されてしまい、
kbd106.dll とは異なるキーボード配列となります。(“KBDJPN.DLL” は現状 英字配列を元としたレイアウトとなっています。)
 パス: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layouts\00000411
 名前: Layout File

解決方法


現在、リモート デスクトップ接続時に、異なるキーボード レイアウトが利用される点について、原因調査を行っております。
ご迷惑をおかけ致しますが、お待ちいただければ幸いです。

回避策 1.


本事象は、IME がオフの場合にのみ発生します。
そのため、UWP アプリにおいて、日本語配列を用いて半角記号を入力したい場合は、
IME をオンにしていただき記号を入力、その後 [F10] キーを押して半角記号に変換してください。

回避策 2.


先述の通り、本事象の原因は、HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layouts\00000411 から “KBDJPN.DLL” が読み込まれることが原因でございます。
そのため、このレジストリで指定されているキーボード レイアウトを別の値 (“kbd106.dll”) に変更することで、事象を回避することができます。
なお、このレジストリを用いて 本来の KBDJPN.DLL を利用している環境にも影響がありますので、ご注意ください。

1. リモート デスクトップ接続先コンピューター (Windows 10 RS4) に管理者権限のあるユーザーでログオンします。
2. Win + R キーを押し、[ファイル名を指定して実行] にて、”regedit” と入力し、[OK] をクリックします。
3. [レジストリ エディター] にて、以下のパスを展開します。
  HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layouts\00000411
4. 上記パス内にある “Layout File” の値を “KBDJPN.DLL” から “kbd106.dll” に変更します。
5. OS を再起動します。