Wow, dopo un sacco di ricerche e tentativi falliti, in realtà ho risolto questo!
Bene, per lo più risolto - è funzionale, ma non senza inconvenienti.
Grazie alla risposta di @ JourneymanGeek, e in particolare al post a cui si è collegato, sono stato in grado di seguire l'esempio e alla fine ho scoperto che tra le molte interfacce implementate dal client ActiveX per desktop remoto, una di esse supporta una proprietà RelativeMouseMode ! Sembra esattamente ciò di cui ho bisogno, costringerà il PSR a supportare i movimenti del mouse relativi!
Tuttavia, ho notato in questo post del forum MSDN che "RelativeMouseMode non è supportato negli scenari RDP RDSH / RDVH e non dovrebbe essere usato", ma ho pensato di cavarmela, non è un vero ambiente di produzione e stavo bene usando un funzione che non è supportata. Era anche scarsamente documentato, ma sembrava che avessi ciò di cui avevo bisogno: questa domanda su StackOverflow mi ha anche dato la speranza che fosse fattibile.
Quindi, ho iniziato a lavorare implementando una semplice app WinForms per ospitare il controllo ActiveX, con le proprietà dell'interfaccia "... non sicura" impostate.
A parte il fatto che, a quanto pare, "non supportato", questa volta Microsoft intendeva "non funziona".
Bene, se lo facesse, questa sarebbe una domanda SO, mi dispiace guidarti (ma penso che sia bello averlo documentato da qualche parte ...)
Tuttavia, non tutto è stato per nulla, durante tutto quello che ho scavato nel protocollo RDP, ho guardato il reindirizzamento USB RemoteFX - e sembrava un vicolo cieco, poiché i dispositivi di input di base (come mouse, tastiera, stampante) sono esplicitamente bloccati dal meccanismo di reindirizzamento USB:
Per impostazione predefinita, i dispositivi nelle suddette categorie sono accessibili nella sessione remota utilizzando metodi di reindirizzamento dei dispositivi di alto livello. Questi metodi di reindirizzamento consentono prestazioni ottimali e compatibilità con le versioni precedenti del dispositivo nella maggior parte degli scenari utente. Di conseguenza, questi dispositivi non sono offerti tramite reindirizzamento USB RemoteFX.
Bene, la risposta finale, a quanto pare, è che esiste un meccanismo di override per questo blocco.
Passaggio 1: abilitare il reindirizzamento USB di RemoteFX
Ecco una bella elaborazione qui: http://windowsitpro.com/virtualization/q-how-do-i-enable-remotefx-usb-redirection . In sostanza, sulla macchina client, si utilizza Criteri locali o Criteri di gruppo per impostare RemoteFX USB Device Redirection
a Enable
, e consente agli utenti (o solo gli amministratori) i diritti. Quindi gpupdate /force
riavviare.
Passaggio 2: abilitare l'override di reindirizzamento per il mouse.
Come spiegato in questo articolo di MS KB , è possibile impostare una chiave di registro per abilitare un dispositivo specifico (o classe di dispositivo) per il reindirizzamento USB.
Di nuovo sul client, sotto
HKEY_LOCAL_MACHINE \ SOFTWARE \ Policies \ Microsoft \ Windows NT \ Terminal Services \ Client \ UsbSelectDeviceByInterfaces
puoi aggiungere un valore di stringa con l'identificatore del dispositivo.
Ad esempio, sotto questa chiave ho aggiunto il seguente valore di stringa:
"GUID_DEVINTERFACE_MOUSE" = "{378DE44C-56EF-11d1-BC8C-00A0C91405DD}"
A seconda del mouse, potrebbe essere necessario un identificatore diverso, quindi YMMV. Ma inizia con quello.
Passaggio 3: impostare il client RDP per reindirizzare il mouse.
Come afferma l'articolo del passaggio 1:
Una volta abilitato, accedi alla scheda Risorse locali, fai clic su Altro in Dispositivi e risorse locali e vedrai una nuova impostazione Supporta dispositivi USB RemoteFX. È possibile utilizzare questa impostazione per mappare molti tipi di hardware USB che non è possibile con il reindirizzamento USB RDP vaniglia, come mostrato di seguito.
Sotto quello dovresti vedere una voce per il tuo mouse; potrebbe essere un po 'ambiguo come:
Seleziona il mouse (o altra voce appropriata).
Questo è tutto! Ora hai un mouse hardware collegato "direttamente" alla tua VM, che consente ai giochi 3D di estrarre i relativi movimenti del mouse direttamente dal driver del mouse (-ish ..)
Tuttavia, come detto, ci sono alcuni svantaggi.
Il mouse viene reindirizzato alla VM RemoteFX: in altre parole, il computer client non ha più un mouse , almeno mentre la sessione Desktop remoto è aperta.
Una possibile soluzione sarebbe quella di collegare un secondo mouse e reindirizzare solo uno di essi. (Devo ancora provare questo, ma dovrebbe funzionare bene).
Per qualche motivo, quando reindirizzato il mouse non mostra direttamente un cursore nella sessione remota. Mentre funziona ancora, rende un po 'confuso mirare a ciò che punta il mouse.
Una soluzione semplice è attivare le tracce del mouse, con la lunghezza completamente abbassata.
Questo mostrerà la posizione del mouse, ma è un po 'lento.
Nel complesso, mentre questa soluzione funziona bene, il mouse è ancora un po 'lento e lento.
Si può alzare la velocità del mouse, il gioco con la precisione del puntatore (a volte spegnendolo sarà effettivamente aiutare con questo), e anche giocherellare con le impostazioni del Registro di accelerazione del mouse sotto HKEY_CURRENT_USER\Control Panel\Mouse
( Mouse Speed
, MouseThreshold1
, e MouseThreshold2
rispettivamente).
Ciò contribuirà a mitigare il problema, ma non lo farà davvero scomparire.
Quindi, nel complesso, questo può rendere anche i giochi 3D molto giocabili - per i giochi casuali, purtroppo non è l'ideale per i giochi a contrazione. (Tuttavia, se ti serve, puoi semplicemente avviare il metal direttamente nel disco rigido virtuale e avere entrambe le opzioni ...)