Ничего себе, после тонны исследований и неудачных попыток, я действительно решил это!
Ну, в основном это решено - это функционально, но не без недостатков.
Благодаря ответу @ JourneymanGeek и, в частности, публикации, на которую он ссылался, я смог последовать примеру и в конечном итоге обнаружил, что среди множества интерфейсов, реализованных в ActiveX Client Remote Desktop Client, один из них поддерживает свойство RelativeMouseMode ! Это звучит как то, что мне нужно, это заставит RDP поддерживать относительные движения мыши!
Однако в этом сообщении на форуме MSDN я отметил, что «RelativeMouseMode не поддерживается в сценариях RDP RDSH / RDVH и не должен использоваться», но я решил, что это не настоящая производственная среда, и я был в порядке, используя функция, которая не поддерживается. Это также было плохо документировано, но казалось, что у меня было то, что мне было нужно - этот вопрос на StackOverflow также дал мне надежду, что это выполнимо.
Итак, я приступил к реализации простого приложения WinForms для размещения элемента управления ActiveX с установленными свойствами интерфейса «... Unsafe».
За исключением того, что, как оказалось, под «неподдерживаемым» на этот раз Microsoft подразумевала «это не работает».
Ну, если бы это было так, это был бы ТАК вопрос, извините, что привел вас (но я думаю, что хорошо, чтобы это было где-то задокументировано ...)
Однако не все было напрасно, во время всего этого углубления в протокол RDP я смотрел на перенаправление USB RemoteFX - и это выглядело как тупик, поскольку основные устройства ввода (такие как мышь, клавиатура, принтер) явно заблокированы из механизма перенаправления USB:
По умолчанию устройства в вышеупомянутых категориях доступны в удаленном сеансе с помощью методов перенаправления устройств высокого уровня. Эти методы перенаправления обеспечивают оптимальную производительность и обратную совместимость устройства в большинстве пользовательских сценариев. Следовательно, эти устройства не предлагаются через перенаправление USB RemoteFX.
Итак, окончательный ответ, как выясняется, состоит в том, что есть механизм переопределения для этого блока.
Шаг 1. Включите перенаправление USB RemoteFX.
Здесь есть приятная разработка: http://windowsitpro.com/virtualization/q-how-do-i-enable-remotefx-usb-redirection . В основном, на клиентской машине, можно использовать либо локальную политику или групповую политику для набора RemoteFX USB Device Redirection
к Enable
, и позволяют пользователям (или просто админ) правы. Затем gpupdate /force
и перезагрузите компьютер.
Шаг 2. Включите переопределение перенаправления для мыши.
Как объясняется в этой статье MS KB , вы можете установить раздел реестра, чтобы включить определенное устройство (или класс устройств) для перенаправления USB.
Опять на клиенте, под
HKEY_LOCAL_MACHINE \ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ \ Политики \ Microsoft \ Windows NT \ Службы терминалов \ Клиент \ UsbSelectDeviceByInterfaces
Вы можете добавить строковое значение с идентификатором устройства.
Например, под этим ключом я добавил следующее строковое значение:
"GUID_DEVINTERFACE_MOUSE" = "{378DE44C-56EF-11D1-BC8C-00A0C91405DD}"
В зависимости от вашей мыши, вам может потребоваться другой идентификатор, поэтому YMMV. Но начни с этого.
Шаг 3: Установите RDP-клиент для перенаправления мыши.
В статье из шага 1 указано:
После включения откройте вкладку «Локальные ресурсы», нажмите «Дополнительно» в разделе «Локальные устройства и ресурсы», и вы увидите новую настройку «Другие устройства с поддержкой RemoteFX USB». Вы можете использовать этот параметр, чтобы отобразить многие типы USB-устройств, которые вы не смогли использовать с перенаправлением vanilla RDP USB, как показано ниже.
Под этим вы должны увидеть запись для вашей мыши; это может быть немного двусмысленно, например:
Выберите вашу мышь (или другую подходящую запись).
Это оно! Теперь у вас есть подключенная к вашей виртуальной машине аппаратная мышь, которая позволяет 3D-играм извлекать относительные движения мыши непосредственно из драйвера мыши (-ish ..)
Однако, как указано, есть некоторые недостатки.
Мышь перенаправляется на виртуальную машину RemoteFX - другими словами, на клиентском компьютере больше нет мыши , по крайней мере, когда сеанс удаленного рабочего стола открыт.
Возможное решение - подключить 2-ю мышь и перенаправить только одну из них. (Я еще не попробовал это, но это должно работать просто отлично).
По какой-то причине при перенаправлении мышь не отображает курсор напрямую в удаленном сеансе. Хотя он все еще работает, он немного сбивает с толку прицеливания, на который указывает ваша мышь.
Простое решение состоит в том, чтобы включить мышиные следы, при этом длина должна быть уменьшена до конца.
Это будет иметь местоположение мыши, но это немного вяло.
В целом, хотя это решение работает хорошо, мышь все еще немного медленная и вялая.
Вы можете повернуть вверх скорость мыши, играть с точностью указателя (иногда выключив будет на самом деле помочь с этим), и даже поиграться с настройками реестра ускорение мыши при HKEY_CURRENT_USER\Control Panel\Mouse
( Mouse Speed
, MouseThreshold1
и MouseThreshold2
соответственно).
Это поможет смягчить проблему, но не заставит ее исчезнуть.
Таким образом, в целом, это может сделать даже 3D-игры очень играбельными - для казуальных игр, к сожалению, не очень хорошими для игр с подергиванием. (Хотя, если вам это нужно, вы можете просто загрузить металл прямо в этот VHD и иметь оба варианта ....)