Giter Site home page Giter Site logo

rdpgamepad's Introduction

RdpGamepad - a Remote Desktop Plugin for Xbox Gamepads

Build Status

A Remote Desktop plugin to enable remote use of Xbox gamepads across a Remote Desktop session.

Download and Install

To use the Remote Desktop Plugin,

  • On your local computer you can download the client installer from the latest release.
    To install, double-click RdpGamepadClientInstall-{version}.exe and follow the instructions presented.

  • On every remote computer that you connect to you can:

    1. Download and install the latest ViGEmBus drivers from the ViGEmBus release page.
      To install, double-click ViGEmBus_Setup_{version}.exe and follow the instructions presented.
    2. Download the receiver installer from the latest release.
      To install, double-click RdpGamepadReceiverInstall-{version}.exe and follow the instructions presented.

How to use

You don't. The plugin is automatically loaded by Remote Desktop and the receiver connects to the plugin automatically when you start a remote desktop session. A virtual Xbox 360 controller is attached to the remote computer when the connection is established.

Troubleshooting

"It doesn't work"

  • Symptom: It is often reported that the controller doesn't work after connecting to a remote computer.
  • Cause: The receiver on the remote computer adds a new virtual controller to remote computer. It is often the case that a game or game engine is using "the first" controller which would default to any controller that is physically attached to the remote computer.
  • Solution: Unplug any attached controller form the remote computer. This can be done by physically disconnecting the controller from the remote computer or by disabling the device using Device Manager on the remote computer.

About the Source

The RdpGamepadPlugin project contains the Remote Desktop plugin that reads the local gamepad with XInput and makes the data available over a Remote Desktop Virtual Channel.

The RdpGamepadViGEm project reads the gamepad data from the Remote Desktop Virtual Channel makes it available through a virtual Xbox 360 controller using the ViGEmBus kernel mode driver. It uses the ViGEmClient SDK to communicate with the driver.

Build from Source

To build and install the Remote Desktop Gamepad Plugin yourself, clone the sources (including submodules), open the solution file in Visual Studio 2019 (Community Edition is fine), and build the solution for your platform architecture (Win32 or x64). The output files will be under bin\Release.

To register the plugin with Remote Desktop, open and administrative command prompt and navigate to the bin\Release folder. Use regsvr32 to register the plugin dll for the appropriate architecture. For example:

regsvr32.exe /i RdpGamepadPlugin64.dll

Contributing

There are many ways to contribute.

  • Submit bugs and help us verify fixes as they are checked in.
  • Review code changes.
  • Contribute bug fixes and features.

Code Contributions

This project welcomes contributions and suggestions. Most contributions require you to agree to a Contributor License Agreement (CLA) declaring that you have the right to, and actually do, grant us the rights to use your contribution. For details, visit https://cla.opensource.microsoft.com.

When you submit a pull request, a CLA bot will automatically determine whether you need to provide a CLA and decorate the PR appropriately (e.g., status check, comment). Simply follow the instructions provided by the bot. You will only need to do this once across all repos using our CLA.

Code of Conduct

This project has adopted the Microsoft Open Source Code of Conduct. For more information see the Code of Conduct FAQ or contact [email protected] with any additional questions or comments.

License

Copyright (c) Microsoft Corporation. All rights reserved.

Licensed under the MIT license.

rdpgamepad's People

Contributors

iljavs avatar jpflouret avatar microsoft-github-operations[bot] avatar microsoftopensource avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

rdpgamepad's Issues

[FR] 2 gamepads

Hello! I'm trying to enable remote use of two Xbox gamepads at the same time, but only the first connected gamepad is forwarded over RDP.
Is there any way to forward both gamepads?

Thanks!

[FR] Working with Anydesk?

I have been using Anydesk software lately, working great with games and work. I tried using the RdpGamepad but it didn't work. which makes me think. Does RdpGamepad works with Anydesk or it only works with the Remote Desktop app for windows?

I have also tried using Parsec app which works great for games and controllers are supported with the app, but I don't enjoy working on it.

It would be great to use Anydesk with the RdpGamepad plug-in.

Possible bug ? desktop.rdp vs application.rdp

Hi,

I'm not sure if this is a bug or if it works as intended.
I have 2 rdp files:

  • The 1st, let's call it "desktop.rdp", is starting the remote connection to full desktop access and here the controller Xbox 360 is recognised without problem. I can start Dolphin/RPCS3 and use the control via the remote desktop session without problems.

  • The 2nd, let's call it "application.rdp", connects to the same remote desktop but the rdp file was edited to start only one app remotely (so it starts RDP and only display the window of that specific app). It is set to start the application RPCS3 but when I use this "application.rdp" the Xbox 360 controller aren't detected in RPCS3 (remember they are working when using "desktop.rdp" on the same remote computer and client). I haven't tried with Dolphin setup the same way as it didn't work with RPCS3 but that can be done easily :)

I can share the .rdp files if required. They are identical except one start a remote application via configuration "remoteapplicationprogram:s:C:\Path\To\RPCS3\rpcs3.exe"

Any clues at why 2 different outcome here, is it possible to get that to work ? More tests to do on my end ? Or do you need more details, if so what do you need ?

Thanks in advance for reading me :)

Skorium

[FR] Mac support?

I am using a mac and there is no support for it.

I would like if there was support for Mac.

Question about raw input

Should any application that uses raw input to deal with input be able to pickup on the pass through that RdpGamepad provides or are only xinput applications supported?

If raw input should be able to detect the passthrough what could be some reasons that the controller doesn't show up?

[FR] Uninstalling the package

I am unable to find a completely safe way to uninstall the changes done by this plugin. Seems like it interferes with the default functioning of Windows.

Usually running the installer files again cleans up the modifications.

Not recognized by XB1 manager or device manager

When following the setup steps I observe the white controller icon for the local and remote computers.

However, when looking for the controller on the remote computer I was unable to find it within the device manager and XB1 manager did no recognize any controllers.

I currently have windows 10 pro and am unable to use the RDP XB1 controller due to a BSOD, so I checked the "use plug-n-play devices" checkbox to see if that would help. There was no change.

Adding mouse support.

Is your feature request related to a problem? Please describe.
When working with games RDP fails due to only supporting absolute mouse movements with no way of resetting the cursor position (due to the local mouse being used instead of the remote one). What is need is relative/raw mouse data which is not restricted by the the window/screen bounds.

Describe the solution you'd like
It would be great if the mouse input could be similarly backdoored as the Xbox gamepad via the ViGEmBus.

Describe alternatives you've considered
There are a few workarounds such as

  • RemoteFX with the drawback that the mouse becomes unusable on the local machine (only active in the remote window). Thus two mice is needed.
  • Other remote desktop solution that has relative pointer support. Potentially expensive and might cause the cursor to lag in normal windows since essentially what happens is that the remote cursor is being activated.

Additional context
Ideally this is an issue that should be fixed in the RDP protocol since this would be a Windows only solutions (wouldn't work for mac or linux). Since we started working from home many months ago this has been an annoyance i.e. that the mouse can't be used when playing and debugging games and instead having to resort to key based input or switching to a controller.

[BUG] The computer with RDP gamepad installed won't сonnect via windows rdp default client.

Describe the bug
The computer with RDP gamepad installed won't сonnect via windows rdp default client.
To Reproduce
Steps to reproduce the behavior:

  1. Install the software (RdpGamepad)
  2. Leave computer running
  3. Try to connect with windows remote desktop after some time (8 hours will do for sure, but I guess it's much less)
  4. Remote machine doesn't respond to any connect attempts. Responds only after a reboot.
  5. We have 40+ machines in our office and only machines with RdpGamepad show such behavior.

Expected behavior
Remote machine connects normally on rdp request.

Screenshots
https://imgur.com/a/msJ03fO

Please complete the following information:

  • OS: Windows 10

This bug is extremelly annoying, many users suffer from it.

Smart screen reported the ReceiverInstall as not safe

When I try to install on windows 10 the Smart Screen blocks me signaling that the application is not safe.

Please complete the following information:

  • OS: Windows 10 PRO 19041

Expected behaviour
I should be able to install it smoothly

[BUG]

Describe the bug
After following installation instructions on device manager I see "virtual xbox 360 controller" the driver is not recognized. I have installed ViGEmBus and restarted several times, remote works great on local, not on remote.

To Reproduce
Steps to reproduce the behavior:

  1. Go to '.device manager, look where the device is not installed properly'
  2. See error

Expected behavior
The device should appear properly on device manager

Screenshots
image
image
image

image

Please complete the following information:

  • OS: Windows Server 2019

Additional context
Add any other context about the problem here.

[BUG] Can't log into or shut down remote computer after use

Something must be weird with my setup because if this happened to anyone else there'd be a bug report already I'm sure. But still:

Describe the bug
After successfully using the software, the remote computer is unusable. It's not possible to log in again through remote desktop, or on the computer itself, or to shut down the computer safely. Trying to do any of these things, it will spin without logging in or shutting down. This can only be fixed with a hard shutdown using the power button.

To Reproduce
Steps to reproduce the behavior:

  1. Install client on client
  2. Install vigem on server
  3. Install receiver on server
  4. Connect through remote desktop
  5. Play a game
  6. Disconnect remote desktop
  7. Attempt to log in again through remote desktop or physically log in on the remote computer. It will spin and not log in

Alternately:
6. While connected on the remote desktop, tell it to shut down
7. The session disconnects, but the remote computer spins on shutting down, never shutting down.

Expected behavior
Allows login and successfully shuts down safely

Please complete the following information:

  • OS: Windows 10 on local laptop, Windows 11 on remote desktop
  • Using an ancient Logitech wired gamepad F310 (Xbox style)

Additional context
This happens even if I close the RDP gamepad receiver from the system tray before disconnecting

Can not detect GPD Win Max built-in controller while in RDP mode [BUG]

Describe the bug
Hello all, I have installed the Client software on my GPD Win Max and the two pieces of softwares for my receiver which is my desktop. My controller do not work while in RDP. I believe the culprit is actually my receiver as you can see from my screenshot, there is no xbox 360 controller inside the device manger. I have tried reinstalling the software on both sides and ensuring that RdpGamepadViGEm64.exe is running in the background. I have also tried removing all wireless controllers from the receiver's device manger.

Screenshots
x5pVJ6qumF

OS:
Receiver - Windows 10 Pro Build 1909
Client - Windows 10 Home Build 2004

[FR] Some form of test/status/etc.

Is your feature request related to a problem? Please describe.
It has worked flawlessly before, I love it, however, it has stopped working recently and IDK why. Given how ItJustWorks(tm), I cannot meaningfully diagnose anything.

Describe the solution you'd like
Any sort of console command, debug logs, status window, etc. that would be able to show that I'm sending, and that remote is receiving.

Describe alternatives you've considered
I've tried several restarts of both, disconnects and reconnects before remote is connected, after remote is connected, etc. nothing has worked and I have no options left.

Additional context
Hopefully, you can help with said issue. If you cannot, I'm still thankful for the plugin, while it worked, it was incredible to use and removed the hassle of using very bad keybinds that we have in our UE project as a backup. Thanks.

[BUG]xinput1_4.dll missing

Describe the bug
The gamepad isn't working and I have a message box on the local computer when I start the rdp session about xinput1_4.dll that is missing.
My local computer runs Windows 7.

To Reproduce
Steps to reproduce the behavior:

  1. Start the RDP session
  2. See error

Expected behavior
We should have a version using xinput 1.3 for Windows 7.

Thanks.

Please complete the following information:

  • OS: Windows 7 for the local computer, Windows 10 for the remote one.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.