¡Guau, después de un montón de investigaciones e intentos fallidos, en realidad resolví esto!
Bueno, en su mayoría lo resolvió: es funcional, pero no sin inconvenientes.
Gracias a la respuesta de @ JourneymanGeek, y en particular a la publicación a la que se vinculó, pude seguir el ejemplo, y finalmente descubrí que entre las muchas interfaces implementadas por ActiveX Client de escritorio remoto, ¡una de ellas admite una propiedad RelativeMouseMode ! ¡Eso suena exactamente como lo que necesito, obligará al RDP a admitir movimientos relativos del mouse!
Sin embargo, noté en esta publicación de los foros de MSDN que "RelativeMouseMode no es compatible con los escenarios RDP RDSH / RDVH y no debería usarse", pero pensé en hacerlo, no es un entorno de producción real, y estaba bien usando un característica que no es compatible. También estaba mal documentado, pero parecía que tenía lo que necesitaba: esta pregunta en StackOverflow también me dio la esperanza de que fuera factible.
Entonces, me puse a trabajar implementando una aplicación simple de WinForms para alojar el control ActiveX, con las propiedades de interfaz "... inseguras" establecidas.
Excepto que, como resultado, por "no compatible", esta vez Microsoft quiso decir "no funciona".
Bueno, si lo hiciera, esta sería una pregunta SO, lamento guiarte (pero creo que es bueno tenerlo documentado en alguna parte ...)
Sin embargo, no todo fue en vano, durante toda esa excavación en el protocolo RDP, miré la redirección USB RemoteFX, y eso parecía un callejón sin salida, ya que los dispositivos de entrada básicos (como mouse, teclado, impresora) están explícitamente bloqueados desde el mecanismo de redireccionamiento USB:
Por defecto, los dispositivos en las categorías mencionadas son accesibles en la sesión remota mediante el uso de métodos de redireccionamiento de dispositivos de alto nivel. Estos métodos de redireccionamiento permiten un rendimiento óptimo y compatibilidad con versiones anteriores del dispositivo en la mayoría de los escenarios de usuario. En consecuencia, estos dispositivos no se ofrecen a través de la redirección USB RemoteFX.
Bueno, la respuesta final, como resultado, es que hay un mecanismo de anulación para este bloque.
Paso 1: Habilite la redirección USB RemoteFX
Aquí hay una buena elaboración: http://windowsitpro.com/virtualization/q-how-do-i-enable-remotefx-usb-redirection . Básicamente, en la máquina cliente, se utiliza ya sea política local o Directiva de grupo para establecer RemoteFX USB Device Redirection
a Enable
, y permitir que los usuarios (o sólo los administradores) los derechos. Luego gpupdate /force
y reiniciar.
Paso 2: habilite la anulación de redirección para el mouse.
Como explica este artículo de MS KB , puede establecer una clave de registro para habilitar un dispositivo específico (o clase de dispositivo) para la redirección de USB.
De nuevo en el cliente, bajo
HKEY_LOCAL_MACHINE \ SOFTWARE \ Políticas \ Microsoft \ Windows NT \ Terminal Services \ Client \ UsbSelectDeviceByInterfaces
puede agregar un valor de cadena con el identificador del dispositivo.
Por ejemplo, bajo esta clave agregué el siguiente valor de cadena:
"GUID_DEVINTERFACE_MOUSE" = "{378DE44C-56EF-11D1-BC8C-00A0C91405DD}"
Dependiendo de su mouse, es posible que necesite un identificador diferente, por lo que YMMV. Pero comienza con eso.
Paso 3: Configure el cliente RDP para redirigir el mouse.
Como decía el artículo del paso 1:
Una vez que esté habilitado, acceda a la pestaña Recursos locales, haga clic en Más en Dispositivos y recursos locales, y verá una nueva configuración de Otros dispositivos remotos USB RemoteFX. Puede usar esta configuración para mapear a través de muchos tipos de hardware USB que no podría con la redirección USB RDP de vainilla, como se muestra a continuación.
Debajo de eso, debería ver una entrada para su mouse; puede ser un poco ambiguo como:
Seleccione su mouse (u otra entrada apropiada).
¡Eso es! Ahora tiene un mouse de hardware conectado "directamente" a su VM, lo que permite que los juegos 3D extraigan los movimientos relativos del mouse directamente desde el controlador del mouse (-ish ..)
Sin embargo, como se dijo, hay algunos inconvenientes.
El mouse se redirige a la VM RemoteFX'd; en otras palabras, la máquina cliente ya no tiene un mouse , al menos mientras la sesión de Escritorio remoto está abierta.
Una posible solución sería conectar un segundo mouse y redirigir solo uno de ellos. (Todavía tengo que probar esto, pero debería funcionar bien).
Por alguna razón, cuando se redirige, el mouse no muestra directamente un cursor en la sesión remota. Si bien todavía funciona, resulta un poco confuso apuntar a lo que apunta el mouse.
Una solución simple es activar Mouse Trails, con la longitud bajada por completo.
Esto hará que aparezca la ubicación del mouse, pero es un poco lenta.
En general, aunque esta solución funciona bien, el mouse sigue siendo un poco lento y lento.
Puede aumentar la velocidad del ratón, el juego con la precisión del puntero (a veces APAGÁNDOLO en realidad ayuda con esto), e incluso juguetear con la configuración del registro de aceleración ratón bajo HKEY_CURRENT_USER\Control Panel\Mouse
( Mouse Speed
, MouseThreshold1
, y MouseThreshold2
respectivamente).
Esto ayudará a mitigar el problema, pero en realidad no hará que desaparezca.
En general, esto puede hacer que incluso los juegos en 3D sean muy jugables, para juegos casuales, desafortunadamente no son geniales para juegos de contracción. (Aunque si lo necesita, puede iniciar el metal directamente en ese VHD y tener ambas opciones ...)