Movimento errático do mouse em jogos 3D sobre RDP com RemoteFX

8

Parece que o driver do mouse padrão ao se conectar com o RDP não funciona bem com determinados aplicativos, como jogos 3D.

Minha configuração:

  • Windows 2012 R2 com Hyper-V e placa gráfica strong
  • VM com o Windows 8.1 Enterprise, RemoteFX e vGPU configurados
  • Conectando-se com o RDP ao link rápido.

O desempenho de vídeo em 3D é ótimo, graças ao RemoteFX / vGPU. Definitivamente, permite que os jogos sejam muito jogáveis sobre o RDP (se não fosse pelo mouse).

O problema é que o mouse reage muito mal quando está no jogo - mas completamente normal fora do ambiente 3D. (Por exemplo, nos menus do jogo, o mouse está bem).

Mais próximo eu poderia dizer, tanto de experimentação quanto de muita pesquisa online (muitas outras pessoas tiveram o mesmo problema, mas nenhuma solução foi encontrada) - parece que o driver do mouse transmite sua localização relativa, em vez de movimento. Essa "teoria" se correlaciona bem com algumas explicações de como o ponteiro do mouse entra e sai da janela RDP (por exemplo, desloca a janela para a esquerda, volta para a direita - e se comporta perfeitamente, ou seja, mouse e não baseado em movimento), e também com o comportamento no jogo - por exemplo se eu mover o mouse um monte para a esquerda, a visão pula loucamente para a esquerda; se eu, então, movê-lo um pouco para a direita, mas ainda não todo o caminho de volta ao centro (ou seja, o mouse ainda está à esquerda do centro, mas se movendo para a direita), ele continua a pular para a esquerda. (Ou seja, parece que ainda está informando que está localizado "à esquerda do centro" em vez de "se mover para a direita").

Espero encontrar qualquer tipo de solução para isso. Idéias alguém?

    
por AviD 08.12.2014 / 11:49

3 respostas

6

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.

  1. 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).

  2. 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.

  3. 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 em HKEY_CURRENT_USER\Control Panel\Mouse ( Mouse Speed , MouseThreshold1 e MouseThreshold2 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 ....)

    
por 16.12.2014 / 11:07
2

Aparentemente remotefx faz os modos de entrada 'absolutos' do estilo de tablet apenas, que é a origem do seu problema. Não consigo encontrar documentação sobre a alteração.

Pode ser necessário considerar um modo de acesso remoto alternativo - o vapor funciona bem para mim (usando uma GPU da nvidia no 'host' e uma pequena caixa de rastreio da baía na outra extremidade). A Nvidia tem uma opção para suas cartas, mas eu realmente não tentei isso.

Em suma, não há nenhuma maneira óbvia de corrigir isso com remotefx, a menos que o jogo possa ser configurado para usar o modo de entrada que o remotefx está usando.

    
por 08.12.2014 / 13:00
1

O Remote Desktop transmite movimentos absolutos do mouse, como uma maneira de reduzir o número de pacotes de movimento do mouse que precisam ser enviados do cliente para o servidor. Esse arranjo funciona bem para a maioria dos aplicativos do Windows (e-mail, navegação na web, etc). Muitos jogos 2D também são bons com isso. No entanto, os jogos FPS geralmente precisam de movimentos relativos do mouse para controlar o mouselook, que o Remote Desktop infelizmente não transmite. A perda de dados relativos ao movimento do mouse é o que faz com que o jogo gire a janela inesperadamente. A Microsoft precisaria modificar a Área de Trabalho Remota para fazer esse cenário de jogo funcionar. No entanto, usar o controlador XBOX para PC com redirecionamento de USB pode ser uma alternativa para você.

    
por 09.12.2014 / 04:36