Wow, après une tonne de recherches et de tentatives infructueuses, j'ai vraiment résolu cela!
Eh bien, surtout résolu - il est fonctionnel, mais pas sans inconvénients.
Grâce à la réponse de @ JourneymanGeek, et en particulier au poste auquel il a lié, j'ai pu suivre l'exemple et j'ai finalement découvert que parmi les nombreuses interfaces implémentées par ActiveX Client Remote Desktop, l'une d'entre elles prend en charge une propriété RelativeMouseMode ! Cela ressemble exactement à ce dont j'ai besoin, cela forcera le RDP à prendre en charge les mouvements relatifs de la souris!
Cependant, j'ai noté sur ce message sur les forums MSDN que "RelativeMouseMode n'est pas pris en charge dans les scénarios RDP RDSH / RDVH et ne devrait pas être utilisé", mais j'ai pensé à le vérifier, ce n'est pas un véritable environnement de production, et j'allais bien utiliser un fonction non prise en charge. Il était également mal documenté, mais il semblait que j'avais ce dont j'avais besoin - cette question sur StackOverflow m'a également donné l'espoir que c'était faisable.
J'ai donc mis au point la mise en œuvre d'une application WinForms simple pour héberger le contrôle ActiveX, avec les propriétés d'interface "... Unsafe" définies.
Sauf qu'en fin de compte, par "non pris en charge", cette fois, Microsoft voulait dire "cela ne fonctionne pas".
Eh bien, si c'était le cas, ce serait une question SO, désolé de vous guider (mais je pense que c'est bien de le documenter quelque part ...)
Cependant, tout n'était pas inutile, pendant toute cette fouille dans le protocole RDP, j'ai regardé la redirection USB RemoteFX - et cela ressemblait à une impasse, car les périphériques d'entrée de base (comme la souris, le clavier, l'imprimante) sont explicitement bloqués à partir du mécanisme de redirection USB:
Par défaut, les périphériques des catégories susmentionnées sont accessibles dans la session distante à l'aide de méthodes de redirection de périphérique de haut niveau. Ces méthodes de redirection permettent des performances optimales et une compatibilité descendante de l'appareil dans la majorité des scénarios utilisateur. Par conséquent, ces appareils ne sont pas proposés via la redirection USB RemoteFX.
Eh bien, la réponse finale, en fin de compte, est qu'il existe un mécanisme de substitution à ce bloc.
Étape 1: Activer la redirection USB RemoteFX
Il y a une belle élaboration ici: http://windowsitpro.com/virtualization/q-how-do-i-enable-remotefx-usb-redirection . Au fond, sur la machine cliente, vous utilisez soit la politique locale ou stratégie de groupe pour ensemble RemoteFX USB Device Redirection
à Enable
, et permettre aux utilisateurs (ou admins seulement) les droits. Ensuite gpupdate /force
, redémarrez.
Étape 2: activez le remplacement de la redirection pour la souris.
Comme l'explique cet article MS KB , vous pouvez définir une clé de registre pour activer un périphérique spécifique (ou une classe de périphérique) pour la redirection USB.
Encore une fois sur le client, sous
HKEY_LOCAL_MACHINE \ SOFTWARE \ Policies \ Microsoft \ Windows NT \ Terminal Services \ Client \ UsbSelectDeviceByInterfaces
vous pouvez ajouter une valeur de chaîne avec l'identifiant du périphérique.
Par exemple, sous cette clé, j'ai ajouté la valeur de chaîne suivante:
"GUID_DEVINTERFACE_MOUSE" = "{378DE44C-56EF-11D1-BC8C-00A0C91405DD}"
Selon votre souris, vous pourriez avoir besoin d'un identifiant différent, donc YMMV. Mais commencez par ça.
Étape 3: définissez le client RDP pour rediriger la souris.
Comme l'indique l'article de l'étape 1:
Une fois activé, accédez à l'onglet Ressources locales, cliquez sur Plus sous Périphériques et ressources locaux, et vous verrez un nouveau paramètre Autres périphériques USB RemoteFX pris en charge. Vous pouvez utiliser ce paramètre pour mapper de nombreux types de matériel USB que vous ne pouviez pas utiliser avec la redirection USB vanilla RDP, comme indiqué ci-dessous.
En dessous, vous devriez voir une entrée pour votre souris; cela peut être un peu ambigu comme:
Sélectionnez votre souris (ou toute autre entrée appropriée).
C'est ça! Vous avez maintenant une souris matérielle attachée "directement" à votre VM, ce qui permet aux jeux 3D d'extraire les mouvements relatifs de la souris directement depuis le pilote de la souris (-ish ..)
Cependant, comme indiqué, il existe certains inconvénients.
La souris est redirigée vers la VM RemoteFX'd - en d'autres termes, la machine cliente n'a plus de souris , au moins pendant que la session Bureau à distance est ouverte.
Une solution possible serait d'attacher une 2e souris et de rediriger une seule d'entre elles. (Je n'ai pas encore essayé, mais cela devrait très bien fonctionner).
Pour une raison quelconque, lorsqu'elle est redirigée, la souris n'affiche pas directement de curseur dans la session distante. Bien que cela fonctionne toujours, cela rend un peu confus de viser ce que votre souris pointe.
Une solution simple consiste à activer Mouse Trails, avec la longueur complètement baissée.
Cela affichera l'emplacement de la souris, mais c'est un peu lent.
Dans l'ensemble, bien que cette solution fonctionne bien, la souris est toujours un peu lente et lente.
Vous pouvez augmenter la vitesse de la souris, le jeu avec la précision du pointeur (parfois tourner OFF sera en fait l' aide à ce sujet ), et même Tripotez les paramètres du registre d'accélération de la souris sous HKEY_CURRENT_USER\Control Panel\Mouse
( Mouse Speed
, MouseThreshold1
et MouseThreshold2
respectivement).
Cela aidera à atténuer le problème, mais ne le fera pas vraiment disparaître.
Donc, dans l'ensemble, cela peut rendre même les jeux 3D très jouables - pour les jeux occasionnels, malheureusement pas parfaits pour les jeux en twitch. (Bien que si vous en avez besoin, vous pouvez simplement démarrer le métal directement dans ce VHD, et avoir les deux options ....)