Uau, depois de uma tonelada de pesquisas e tentativas fracassadas, eu realmente resolvi isso!
Bem, principalmente resolvido - é funcional, mas não sem desvantagens.
Graças à resposta de @ JourneymanGeek, e em particular à postagem à qual ele se vinculou, eu pude seguir o exemplo e, finalmente, descobri que entre as muitas interfaces implementadas pelo Remote Desktop Client ActiveX, uma delas suporta uma propriedade RelativeMouseMode ! Parece exatamente o que eu preciso, forçará o RDP a suportar movimentos relativos do mouse!
No entanto, observei nesta postagem dos fóruns do MSDN que "RelativeMouseMode não é suportado em cenários RDP RDSH / RDVH e não deve ser usado", mas achei que seria um problema, não é um ambiente de produção real e eu estava bem usando um recurso que não é suportado. Também estava mal documentado, mas parecia que eu tinha o que precisava - essa pergunta no StackOverflow também me deu esperança de que fosse possível.
Portanto, comecei a trabalhar na implementação de um aplicativo WinForms simples para hospedar o controle ActiveX, com o conjunto de propriedades da interface "... Inseguro".
Só que, como se vê, por "não suportado", desta vez a Microsoft quis dizer "não funciona".
Bem, se isso acontecesse, isso seria uma pergunta SO, desculpe por levá-lo adiante (mas acho que é bom tê-lo documentado em algum lugar ...)
No entanto, nem tudo foi por nada, durante toda a escavação no protocolo RDP, observei o redirecionamento USB do RemoteFX - e parecia um beco sem saída, pois os dispositivos básicos de entrada (como mouse, teclado, impressora) são explicitamente bloqueados do mecanismo de redirecionamento USB:
Por padrão, os dispositivos nas categorias mencionadas acima estão acessíveis na sessão remota usando métodos de redirecionamento de dispositivo de alto nível. Esses métodos de redirecionamento permitem desempenho ideal e compatibilidade com versões anteriores do dispositivo na maioria dos cenários de usuário. Conseqüentemente, esses dispositivos não são oferecidos pelo redirecionamento USB do RemoteFX.
Bem, a resposta final, como se vê, é que existe um mecanismo de substituição neste bloco.
Etapa 1: Habilitar o redirecionamento USB do RemoteFX
Há uma boa elaboração aqui: http://windowsitpro.com/virtualization/q-how-do-i-enenable-remotefx-usb-redirection . Basicamente, na máquina do cliente, você pode usar a Política de Local ou Política de grupo para definir RemoteFX USB Device Redirection
a Enable
, e permitir que os usuários (ou apenas administradores) os direitos. Então gpupdate /force
e reinicie.
Etapa 2: ative a substituição do redirecionamento para o mouse.
Como este artigo da MS KB explica , você pode definir uma chave do Registro para habilitar um dispositivo específico (ou classe de dispositivo) para o redirecionamento USB.
Novamente no cliente, sob
HKEY_LOCAL_MACHINE \ SOFTWARE \ Policies \ Microsoft \ Windows NT \ Serviços de Terminal \ Client \ UsbSelectDeviceByInterfaces
você pode adicionar um valor de sequência com o identificador do dispositivo.
Por exemplo, nessa chave, adicionei o seguinte valor de sequência:
"GUID_DEVINTERFACE_MOUSE" = "{378DE44C-56EF-11D1-BC8C-00A0C91405DD}"
Dependendo do mouse, você pode precisar de um identificador diferente, portanto YMMV. Mas comece com isso.
Etapa 3: defina o cliente RDP para redirecionar o mouse.
Como o artigo da etapa 1 afirmou:
Depois de ativado, acesse a guia Recursos locais, clique em Mais em Dispositivos e recursos locais e você verá uma nova configuração Outros dispositivos compatíveis com RemoteFX USB. Você pode usar essa configuração para mapear vários tipos de hardware USB que você não poderia com o redirecionamento USB RDP vanilla, como mostrado abaixo.
Abaixo disso, você deve ver uma entrada para o mouse; pode ser um pouco ambíguo, como:
Selecione o mouse (ou outra entrada apropriada).
É isso aí! Agora você tem um mouse de hardware conectado "diretamente" à sua VM, o que permite que os jogos em 3D retirem 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 possui mais um mouse , pelo menos enquanto a sessão da Área de Trabalho Remota estiver aberta.
Uma solução possível seria conectar um segundo mouse e redirecionar apenas um deles. (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. Enquanto ainda funciona, torna um pouco confuso apontar para o que o mouse está apontando.
Uma solução simples é ativar o Mouse Trails, com o comprimento abaixado até o fim.
Isso fará com que o local do mouse seja exibido, mas é um pouco lento.
No geral, embora essa solução funcione bem, o mouse ainda é um pouco lento e lento.
Você pode transformar-se a velocidade do mouse, jogo com precisão do ponteiro (às vezes transformando-OFF vai realmente ajuda com isso), e até mesmo mexer com as configurações do registro aceleração do mouse em HKEY_CURRENT_USER\Control Panel\Mouse
( Mouse Speed
, MouseThreshold1
e, MouseThreshold2
respectivamente).
Isso ajudará a mitigar o problema, mas não fará com que ele desapareça.
Portanto, no geral, isso pode tornar os jogos em 3D muito jogáveis - para jogos casuais, infelizmente não é bom para jogos de twitch. (Porém, se você precisar, basta inicializar o metal diretamente nesse VHD e ter as duas opções ....)