web-dev-qa-db-ja.com

RemoteFXを使用したRDP上の3Dゲームでの不規則なマウスの動き

RDPで接続するときのデフォルトのマウスドライバーは、3Dゲームなどの特定のアプリケーションではうまく機能しないようです。

私のセットアップ:

  • Hyper-Vおよび強力なグラフィックカードを搭載したWindows 2012 R2
  • Windows 8.1 Enterprise、RemoteFX、vGPUが構成されたVM
  • 高速リンクを介したRDPとの接続。

RemoteFX/vGPUのおかげで、3Dビデオのパフォーマンスは素晴らしいです。これにより、ゲームがRDPで非常にプレイ可能になります(マウス用ではなかった場合)。

問題は、マウスがゲーム中非常にクレイジーに反応することですが、3D環境の外では完全に正常です。 (たとえば、ゲームメニューではマウスで問題ありません)。

最も近いのは、実験とオンラインでの検索の両方からわかります(他の多くの人が同じ問題を抱えていましたが、解決策は見つかりませんでした)。マウスドライバーは、移動ではなく、相対位置を送信しているようです。
この「理論」は、マウスポインターがRDPウィンドウに出入りする方法のいくつかの説明とよく相関しています(たとえば、ウィンドウを左側のウィンドウから移動し、右側に戻します-完全に動作します)。位置ベースのマウスであり、モーションベースではありません)マウスを左にたくさん動かすと、ビューが左に大きくジャンプします。次に少し右に動かしても、中央に戻らない場合(つまり、マウスはまだ中央の左側にありますが、右に移動します)、左にジャンプし続けます。 (つまり、「右に移動する」のではなく、「中心の左」にあるとまだ報告されているようです)。

私はこれに対するあらゆる種類の解決策を見つけたいと思っています。アイデアは誰ですか?

11
AviD

うわー、たくさんの研究と失敗した後、私は実際にこれを解決しました!
まあ、ほとんど解決しました-それは機能的ですが、欠点がないわけではありません。

@JourneymanGeekの回答、特に彼がリンクした投稿のおかげで、私はリードをたどることができ、最終的に、リモートデスクトップクライアントActiveXによって実装された多くのインターフェイスの中で、そのうちの1つが RelativeMouseMode プロパティ!それは私が必要としているもののように聞こえます、それはRDPに相対的なマウスの動きをサポートすることを強います!

しかし、私は このMSDNフォーラムの投稿 に「RelativeMouseModeはRDP RDSH/RDVHシナリオではサポートされていないため、使用しないでください」と書き留めましたが、それに気づきました。実際の本番環境ではなく、サポートされていない機能を使用しても問題ありませんでした。ドキュメントも不十分でしたが、必要なものがあったようです- StackOverflow に関するこの質問でも、それが実行可能であることを望んでいました。

そこで、ActiveXコントロールをホストするためのシンプルなWinFormsアプリの実装に取り​​組み、「... Unsafe」インターフェイスプロパティを設定しました。


結局のところ、「サポートされていない」ということで、今回のマイクロソフトは「動作しない」という意味でした。
まあ、そうなら、これはSOの質問です。ご案内させていただきます(ただし、どこかで文書化しておくとよいと思います...)


ただし、すべてが役に立たなかったわけではなく、RDPプロトコルを掘り下げている間、私はRemoteFX USBリダイレクトを調べました-そして、基本的な入力デバイス(マウス、キーボード、プリンターなど)が明示的にブロックされているため、行き止まりのように見えましたUSBリダイレクトメカニズムから:

デフォルトでは、前述のカテゴリのデバイスは、高レベルのデバイスリダイレクトメソッドを使用してリモートセッションでアクセスできます。これらのリダイレクト方法により、大部分のユーザーシナリオでデバイスの最適なパフォーマンスと下位互換性が可能になります。したがって、これらのデバイスはRemoteFX USBリダイレクトを介して提供されません。

結局のところ、最後の答えは、結局のところ、このブロックにはオーバーライドメカニズムがあるということです。


手順1:R​​emoteFX USBリダイレクトを有効にする
ここに素敵な詳細があります: http://windowsitpro.com/virtualization/q-how-do-i-enable-remotefx-usb-redirection 。基本的に、クライアントマシンでは、ローカルポリシーまたはグループポリシーを使用してRemoteFX USB Device RedirectionEnableに設定し、ユーザー(または管理者のみ)に権限を許可します。次にgpupdate /forceを再起動します。

手順2:マウスのリダイレクトオーバーライドを有効にします。
この MS KB記事で説明されているように 、レジストリキーを設定して、USBリダイレクトで特定のデバイス(またはデバイスのクラス)を有効にすることができます。

再びクライアント上で

HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services\Client\UsbSelectDeviceByInterfaces

デバイス識別子を含む文字列値を追加できます。
たとえば、このキーの下に次の文字列値を追加しました:

"GUID_DEVINTERFACE_MOUSE" = "{378DE44C-56EF-11D1-BC8C-00A0C91405DD}"

マウスによっては、別の識別子が必要になる場合があるため、YMMVを使用します。しかし、それから始めましょう。

手順3:マウスをリダイレクトするようにRDPクライアントを設定します。
ステップ1の記事が述べているように:

有効になったら、[ローカルリソース]タブにアクセスし、[ローカルデバイスとリソース]の下にある[その他]をクリックすると、新しい[その他のサポートRemoteFX USBデバイス]設定が表示されます。以下に示すように、この設定を使用して、Vanilla RDP USBリダイレクトでは実現できなかった多くのタイプのUSBハードウェアをマッピングできます。

その下に、マウスのエントリが表示されます。次のように少しあいまいな場合があります。

Other devices redirection

マウス(またはその他の適切なエントリ)を選択します。

それでおしまい!これで、ハードウェアマウスがVMに「直接」接続されました。これにより、3Dゲームは、相対的なマウスの動きをマウスドライバーから直接引き出すことができます(-ish ..)。


ただし、前述のように、いくつかの欠点があります。

  1. マウスはRemoteFXにリダイレクトされますVM-つまり、クライアントマシンにはマウスがなくなりました 、少なくともリモートデスクトップセッションが開いている間。
    可能な解決策は、2番目のマウスを接続し、そのうちの1つだけをリダイレクトすることです。 (私はこれをまだ試していませんが、問題なく動作するはずです)。

  2. 何らかの理由で、リダイレクトされた場合、マウスはリモートセッションでカーソルを直接表示しません。それでも動作しますが、マウスが指しているものを狙うのは少し混乱します。
    簡単な解決策は、マウストレイルをオンにし、長さを完全に下げます。 Mouse trails
    これにより、マウスの位置が表示されますが、少し遅いです。

  3. 全体として、このソリューションはうまく機能しますが、マウスはまだ少し遅く、遅いです。
    マウスの速度を上げたり、ポインターの精度で遊んだり(場合によっては、オフにすると実際に役立ちます)、HKEY_CURRENT_USER\Control Panel\MouseMouse SpeedMouseThreshold1MouseThreshold2)。
    これは問題を軽減するのに役立ちますが、実際には解決しません。

したがって、全体として、これにより3Dゲームでさえも非常にプレイ可能になります。カジュアルゲームでは、残念ながらTwitchゲームでは不向きです。 (ただし、必要に応じて、金属をそのVHDに直接ブートし、両方のオプションを使用できます...)

8
AviD

どうやらremotefx タブレットスタイルの '絶対'入力モードを行う のみ、これが問題の原因です。変更に関するドキュメントが見つかりません。

別のリモートアクセスモードを検討する必要があるかもしれません-Steamは私にとってはうまく機能します(「ホスト」にnvidia GPUを使用し、もう一方の端にディンキーベイトレイルボックスを使用します)。 Nvidiaにはカードのオプションがありますが、実際には試していません。

つまり、remotefxが使用している入力モードを使用するようにゲームを設定できない限り、remotefxでこれを修正する明白な方法はありません。

3
Journeyman Geek

リモートデスクトップは、クライアントからサーバーに送信する必要があるマウスの動きのパケット数を減らす方法として、絶対的なマウスの動きを送信します。この配置は、ほとんどのWindowsアプリケーション(電子メール、Webブラウジングなど)に適しています。多くの2Dゲームもこれで問題ありません。ただし、FPSゲームでは通常、マウスルックを制御するために相対的なマウスの動きが必要ですが、リモートデスクトップではこれを送信しません。マウスの相対的な動きのデータが失われると、ゲームでビューポートが予期せず回転します。マイクロソフトは、このゲームシナリオを機能させるために、リモートデスクトップを変更する必要があります。ただし、PC用のXBOXコントローラーをUSBリダイレクトで使用することは、代替手段になる場合があります。

2
XBOX Controller