Uau, depois de uma tonelada de pesquisas e tentativas frustradas, eu realmente resolvi isso!
Bem, principalmente resolveu - é funcional, mas não sem inconvenientes.
Graças à resposta do @ JourneymanGeek, e em particular ao post com o qual ele se conectou, consegui seguir a liderança e, eventualmente, descobri que entre as muitas interfaces implementadas pelo ActiveX do Cliente de Área de Trabalho Remota, uma delas suporta uma Propriedade RelativeMouseMode ! Isso soa exatamente como eu preciso, forçará o RDP a suportar movimentos relativos do mouse!
No entanto, observei em este Os fóruns do MSDN postam que "RelativeMouseMode não é suportado em cenários RDS RDSH / RDVH e não deve ser usado", mas eu pensei em trabalhar com ele, não é um ambiente de produção real, e eu estava bem usando um recurso que é não suportado. Também foi mal documentado, mas parecia que eu tinha o que eu precisava - esta pergunta no StackOverflow também me deu esperança de que era factível.
Então, comecei a trabalhar na implementação de um aplicativo WinForms simples para hospedar o controle ActiveX, com o conjunto de propriedades da interface "... Não seguro".
Exceto que, como se vê, por "sem suporte", desta vez a Microsoft quis dizer "não funciona". Bem, se isso acontecesse, isso seria uma pergunta SO, desculpe levá-lo (mas eu acho que é bom tê-lo documentado em algum lugar ...)
No entanto, nem tudo foi em vão, durante toda essa busca pelo protocolo RDP, eu olhei para o Redirecionamento RemoteFX USB - e isso parecia um beco sem saída, desde dispositivos de entrada básicos (como mouse, teclado, impressora) são explicitamente bloqueados pelo mecanismo de redirecionamento USB:
By default, devices in the aforementioned categories are accessible in the remote session by using high-level device redirection methods. These methods of redirection enable optimal performance and backward compatibility of the device in the majority of user scenarios. Consequently, these devices are not offered via RemoteFX USB redirection.
Bem, a resposta final, ao que parece, é que existe um mecanismo de substituição neste bloco.
Etapa 1: Ativar redirecionamento de RemoteFX USB
Há uma boa elaboração aqui: link .
Basicamente, na máquina cliente, você usa a Política local ou a Política de grupo para definir RemoteFX USB Device Redirection
para Enable
e permitir aos usuários (ou apenas administradores) os direitos. Então gpupdate /force
e reinicie.
Etapa 2: habilitar a substituição de redirecionamento para o mouse.
Como este artigo da MS KB explica , você pode definir uma chave do Registro para ativar um dispositivo específico (ou classe de dispositivo) para USB Redirecionamento
Novamente no cliente, em
HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services\Client\UsbSelectDeviceByInterfaces
você pode adicionar um valor de string ao identificador do dispositivo.
Por exemplo, sob essa chave, adicionei o seguinte valor de string:
"GUID_DEVINTERFACE_MOUSE"="{378DE44C-56EF-11D1-BC8C-00A0C91405DD}"
Dependendo do seu mouse, você pode precisar de um identificador diferente, então YMMV. Mas comece com isso.
Etapa 3: defina o cliente RDP para redirecionar o mouse.
Como o artigo do passo 1 afirmou:
Once it's enabled, access the Local Resources tab, click More under Local devices and resources, and you'll see a new Other supports RemoteFX USB devices setting. You can use this setting to map through many types of USB hardware that you couldn't with vanilla RDP USB redirection, as shown below.
Em que você deve ver uma entrada para seu rato; pode ser um pouco ambíguo, como:
Selecioneseumouse(ououtraentradaapropriada).
Éisso!Agoravocêtemummousedehardwareconectado"diretamente" à sua VM, o que permite aos jogos 3D extraírem os movimentos relativos do mouse diretamente do driver do mouse (-ish ..)
No entanto, como afirmado, existem algumas desvantagens.
-
O mouse é redirecionado para a VM RemoteFX'd - em outras palavras, a máquina cliente não tem mais um mouse , pelo menos enquanto a sessão da Área de Trabalho Remota estiver aberta. Uma possível solução seria anexar um segundo mouse e redirecionar apenas um deles. (Eu ainda tenho que tentar isso, mas deve funcionar muito bem).
-
Por algum motivo, quando redirecionado, o mouse não mostra diretamente um cursor na sessão remota. Embora ainda funcione, fica um pouco confuso apontar para o que seu mouse está apontando. Uma solução simples é ativar as trilhas de mouse, com o comprimento todo reduzido.
Isso fará com que a localização do mouse apareça, mas é um pouco lenta. -
No geral, embora essa solução funcione bem, o mouse ainda é um pouco lento e lento.
Você pode aumentar a velocidade do mouse, reproduzir com precisão de ponteiro (às vezes desativá-lo, na verdade, ajudará nisso) e até mesmo alterar as configurações de registro de aceleração do mouse emHKEY_CURRENT_USER\Control Panel\Mouse
(Mouse Speed
,MouseThreshold1
eMouseThreshold2
respectivamente)
Isso ajudará a mitigar o problema, mas não o fará realmente desaparecer.
Assim, no geral, isso pode tornar jogos 3D até mesmo muito jogáveis - para jogos casuais, infelizmente não é ótimo para jogos de contração. (Embora se você precisar, basta inicializar o metal diretamente nesse VHD e ter as duas opções ....)