Giter VIP home page Giter VIP logo

steam-deck-windows-usermode-driver's Introduction

Steamdeck Windows Controller Driver

Steamdeck WIndows Controller Driver (SWICD)

This work-in-progress driver maps the Steam deck's built-in controller to a virtual ViGEm XBox 360 Controller. The layout is customizeable using the gui.

How to get support

READ THE WIKI. If there is still something unclear, open an Issue and follow the template as close as possible.

If you'd like to get in touch with all developers or other users directly you are welcome to join the discord server: https://discord.gg/tnexk5bN52

steam-deck-windows-usermode-driver's People

Contributors

checkumeito avatar leonzdev avatar mkenfenheuer avatar reticentrobot 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  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

steam-deck-windows-usermode-driver's Issues

[BUG]

Describe the bug
When launching SWICD (latest version) it throws an .net exception and indicates that the process was terminated due to an unhanded exception.

To Reproduce
Steps to reproduce the behavior:

  1. run the SWICD driver executable
  2. it crashes
  3. error in event viewer
  4. logs are not created as it crashes before logs can be generated

Expected behavior
the program to work

[BUG] Yuzu emulator B acts as escape button

Yuzu emulator B acts as escape button.

To Reproduce
Steps to reproduce the behavior:

  1. Go to yuzu
  2. Click configure
  3. Hit b
  4. The windows disappears
    Expected behavior
    To not disappear

[FEATURE]

First of all, grat work regarding the beta v0.2.8
i see the json new configuration, better remapping keyboard keys

i alse see the rumble integration, but i hope you can introduce a setting to enable ord disable the rumble function
maybe if it is possible, also the rumble intensity
RUMBLE: YES/NO
RUMBLE INTENSITY: <---------*------->

i'm using v0.2.8 in desktop mode and i see it work perfect, but i launch the 0.2.7 before games because the vibration is no good in this stage.

[FEATURE] GPD style Keyboard-Mouse/Joystick toggle

Describe the solution you'd like
A GPD style Keyboard-Mouse/Joystick toggle. I would like to be able to switch between Keyboard-Mouse and Joystick with one defined button (the back buttons for example). Both should be available all the time, not depending on what process is running or not.

[FEATURE]

Could you add a function to toggle lizard mode on and off via a physical button? For example the 3-point button, to activate and deactivate the mouse function as in other portable consoles.

[FEATURE] Delete Profile

Is your feature request related to a problem? Please describe.
Cannot delete a profile once created

Describe the solution you'd like
Ability to delete a game profile

Describe alternatives you've considered

Additional context
Added SWICD.exe as a profile, would like to be able to delete that as it causes a bit of an issue :)

[FEATURE] Lizard Mode Configuration

Is your feature request related to a problem? Please describe.
When lizard mode is activated, the b and a buttons are no longer useful in game, as they reproduce the escape/enter buttons. If you turn off lizard mode to fix this problem, then you also lose the track pad mouse functionality.

Describe the solution you'd like
Please allow lizard mode to be configured such that I can keep the mouse functionality while adjusting and changing the other button functions. Ie: a lizard mode where i can use just the track pad and right trigger for mouse functions, but all other buttons act like a joystick and dont emulate the keyboard. Ie: allow us to configure lizard mode to adjust to our needs.

Alternatively, allow us to turn off lizard mode and then set up touchpads as mouse function. Currently can only emulate 360 controller and doesn't emulate mouse unless lizard mode turned on.

Additional context
Thank you for a wonderful program!

[FEATURE] Disable Lizard Mode through whitelist

My use case for this tool is running Forza Horizon 5 from the Windows store on my deck.
To make this as streamlined as possible I have set the tool to start with windows and whitelisted the ForzaHorizon5.exe
The detection and driver activation works as expected.
For Forza to actually pick up the driver though, lizard mode needs to be disabled through the UI.

This setting seems to apply globally right now, meaning Lizard mode is always off wenn running this tool.

I would love for the setting to also follow the whitelist, enabling me to use the Trackpad/Triggers for Mouse emulation when not running the game, while still being able to leave the tool running in the background.

[FEATURE] Add profile by typing executable name instead of using file picker

Is your feature request related to a problem? Please describe.
PC Game Pass games has special protections in Windows 11. Even after acquiring ownership of WindowsApps folder, the file picker is still complaining about no file access permission when selecting game executable file.

Describe the solution you'd like
From the config file, it only stores executable file name. From the code, SWICD is looking through running processes (sorted A-Z?) and try to match executable file name. So, if we can create a profile by typing the file name instead of using the file picker, we should be able to create profiles for Game Pass games.

I have tried manually edit the config file and add ForzaHorizon5.exe. It seems SWICD is working as intended (disabling lizard mode).

Describe alternatives you've considered
Maybe choose file name by listing current running processes? So we can launch the game, and Alt-Tab to SWICD, list all running processes, and choose a process to create profile. In this way, we don't even need to research what the game executable file name is.

Additional context
N/A

[QUESTION]

My apologies if there is a better place to ask this kind of thing (please let me know if so) - but which is the recommended release to be using at this point? Regular [v0.2.4] or dotnet-rewrite [v.0.2.0]?

Thanks!

[BUG] Double Input when driver mode on - A button and B button (return and back) overlapping game buttons

Using the latest driver - I absolutely LOVE this thing and thank you so much for developing but when I play games on my steam deck using windows, the controller maps perfectly except when I press B and A button in game as I sometimes bring up a text chat (in COD) or exit out or it pauses b/c the A and B button is still being mapped on the keyboard - dual inputs. Same with fortnite - I press A and the game almost stutters bc it's getting two inputs (one from the in game controller action and one from the keyboard). On TMNT shredder, the B button is causing the pause menu to come up!

How do I get the driver to work in full controller mode in game (and have A and B button NOT still be assigned keyboard back and return) but still have the ability to use the mouse pad (right track pad) and Trigger button when the game exits so I can control my steam deck? If I enable lizard mode, I can't control my deck anymore bc mouse and buttons are no longer being mapped to right track pad and trigger so I have no control anymore and need to hard shutdown and restart.

I would ideally just like to turn off the drivers automatic keyboard mapping of A and B acting as back and return as I never use them on the deck anyway. I just need the mouse pad on the right track pad and right trigger left trigger click.

[FEATURE] Minimize to tray on startup

Is your feature request related to a problem? Please describe.
I would like to be able to have the driver application minimize to the tray icon rather than leave the window open on boot.

Describe the solution you'd like
Toggle in application (maybe next to the Start with Windows option to Minimize to Tray on Startup. With this option selected the application will only appear as an icon in the task tray. Clicking the task tray icon will bring up the Window as it does now when it is closed.

Describe alternatives you've considered
N/A

Additional context
Not a high priority, just a nice to have thing for aesthetic reasons (making Steam Deck more of a console like experience in Windows).

[BUG] Default mapping wrong for D-PAD LEFT

Describe the bug
After installation, the default profile maps D-PAD LEFT as D-PAD UP.

To Reproduce
Steps to reproduce the behavior:

  1. Fresh install SWICD
  2. Go to GUI configuration tool
  3. Go to "Default Profile" -> "Button mappings"
  4. Scroll to D-PAD LEFT mapping, see the wrong mapping

Expected behavior
D-PAD LEFT should be mapped to D-PAD LEFT

Screenshots
N/A

Debug information
Driver version: v0.2.5-beta2-f9e0e59-release

Additional context
N/A

Question regarding dotnet-rewrite Release

Does dotnet-rewrite have a downloadable release under Releases, or are they all from the main branch? I am just using a downloaded zip from the dotnet-rewrite branch for now but would like to write up a tutorial so was wondering if there was a better place to link to for downloading. Thanks again!

Issues in Fortnite with default configuration

Hello, thank you very much for publishing this project!

I noticed that you already fixed a mistake in the default configuration. With that I have no more problems in another game, but Fortnite is acting very weird either registering double button presses or trying to perform more than one action when for example trying to press the B button. The menu navigation is also broken to the point where I have to use the touchscreen to leave the game or enter the settings menu. I installed Fortnite through the Epic Games Launcher. I have no problems navigating the menu on Nintendo Switch or PS5, just to rule out major human error. :-)

Also what is lizard mode?

[FEATURE] Scroll wheel mapping

Touch screen swipes already accomplish this in theory, but Windows tends to misinterpret the start of a swipe as a tap. As a result, for instance, it's difficult to scroll through the Start menu without starting stray apps. A simulated scroll wheel would be very helpful here.

[FEATURE] Reset profile back to defaults.

Is your feature request related to a problem? Please describe.
When I first installed SWICD I played around with the default profile. I've now messed it up beyond recognition and there's no way to restore the original default profile.

My fault, but was trying to learn by doing, so to speak.

Describe the solution you'd like
A reset button to restore the defaults.

Describe alternatives you've considered
I've tried uninstalling SWICD and making sure the SWICD directory is deleted. I'm not sure where the profile is being stored, but my (messed up) config is still the default even after a fresh install.

Edit: Just realized the profiles are stored in Documents, in a folder named SWICD. Deleting the file app_config.conf and relaunching SWICD will restore the default profile.

[Suggestion] Remove restriction of axis emulation to button press in default configuration?

I was about to file an issue with the thumbsticks not working when pressed in certain directions, but then realized it's because I tend to push the sticks from the side when moving it up or left. After removing the button activation settings everything is working perfectly. Not sure if I'm just a weirdo for doing that or if others might think something is wrong like I did at first.

[FEATURE] Use HIDHide to prevent Steam from grabbing input of the internal controller

Is your feature request related to a problem? Please describe.
Use HIDHide to prevent Steam from grabbing input of the internal controller.
This can lead to doubled inputs.

Describe the solution you'd like
Automatic Hiding of the HID Device from steam process, with a toggle from settings menu.

Describe alternatives you've considered
Usage of process based white or blacklist. Steam input sometimes does not work properly.
Especially with non steam games.

Additional context
N/A

[BUG] v0.2.7-beta2 crashes with method not found exception

Describe the bug
I was previously on v0.26-beta and updated to v0.2.7-beta2. My controls immediately stopped working. On opening up the SWICD control panel I can see there's a method not found exception for "boolean.neptunehidapi.net.NeptuneCo"...something, the rest of the message is off the screen. Unfortunately I can't investigate further because then the control panel goes completely unresponsive, and I can't even exit it when right clicking on the tray icon.

To Reproduce
Steps to reproduce the behavior:

  1. Use SWICD
  2. Crashes with error. Reboot doesn't fix it.

Expected behavior
The software not to crash with an error and lock up my controls.

Debug information
Driver version: v0.2.7-beta2 from here:
https://github.com/mKenfenheuer/steam-deck-windows-usermode-driver/releases/tag/v0.2.7-beta2

Unable to create a support package due to the control panel locking up upon crashing.

Additional context
Uninstalling this release and downgrading to the V0.26-beta resolves the issue.

Motion control support for Windows Steam Deck

Hey there! I'm one of the developers of Handheld Companion/Controller Service, someone came up on our Discord sub channel to ask if your app could be combined with ours to make it possible to use motion control on steam deck through Windows.

Our application currently supports embedded and external motion sensors, external controllers and some other bits. I saw your emulated device does have some gyro and accelerometer in the interface. Perhaps we can talk, combine some effort maybe?

https://github.com/Valkirie/ControllerService

PS Love your resume website design! I'll be sure to open it next time someone from IT walks past me at work, haha.

[BUG] Changing "Start with windows" sometimes does not have any effect.

Describe the bug
A clear and concise description of what the bug is.

To Reproduce
Steps to reproduce the behavior:

  1. Change "Start with windows" in settings page
  2. Reboot
  3. Check. Sometimes the change does not have any effect.

Expected behavior
The program should start with windows if checked

Screenshots
N/A

Debug information
Driver version: v0.2.4-f187ba-release upwards

Create a support package by going to "Driver status" and selecting "Create support package".
Attach the file SWICD_Support_XXXXX.zip from your desktop.
SWICD_Support_637907172355805154.zip

Additional context
N/A

[FEATURE] Keyboard actions and gui editor

Is your feature request related to a problem? Please describe.
Sometimes keyboard shortcuts are needed to close a game or to open a keyboard etc.

Describe the solution you'd like
Feature to have a button emulate a certain, user definable keyboard action like e.g. CTRL+ALT+DEL, ALT+F4 and so on.

Describe alternatives you've considered
N/A

Additional context
N/A

[BUG] cant delete whitelist and blacklist items

Describe the bug
A clear and concise description of what the bug is.

To Reproduce
Steps to reproduce the behavior:

On default profile, click add whitelist, add a program.
Save profile

Now delete program from the default profile
Save and exit
Log back in, program still shows

Deleted and reinstalled software and the default profile remembers the program I've whitelisted.

Im on the latest beta

Help with build issues?

Is this the right place to ask for help with build issues? I'm not sure what I'm supposed to do to fix this, I think I'm running into the issues under the Build section in the instructions, but not sure what actions I need to take to correct them.

image

There doesn't seem to be any option to 'Retarget' anywhere that it mentions, and I'm not sure how to add v143 build tools. I also have my target build set to x64 so not sure why it is complaining about that in the top two errors.

GUI should show the version number and icons for buttons

The GUI looks great!

Putting the version number in the log or somewhere else would help with bug reports I guess. I checked the version number of the executable (1.0) and under installed software (1.3 or 0.1.3, can't exactly remember) both were different to the version number I downloaded from the releases page. Putting the version number in the filename of the download would also be helpful I guess.

I'm still struggling to differentiate some buttons. A, B, X, RT are mostly self explanatory, but for others icons in the button mapping would help so you know what the button with the overlapping windows is. Looks like Microsoft has a font for that (https://support.xbox.com/en-US/help/hardware-network/controller/xbox-one-wireless-controller), not sure if you can use that or Font Awesome or something else appropriate.

[FEATURE] Haptic Feedback and Rumble support

Is your feature request related to a problem? Please describe.
Not a problem but definitely something i would love to be implemented.

Describe the solution you'd like
Curious whether you plan to add haptic feedback/rumble support?

Describe alternatives you've considered
GlosC/Glossi.

Additional context
While GlosC/Glossi have this feature, SWICD is so much more user friendly as I have it setup to whitelist playnite on startup and blacklist steam. This way I am able to boot into playnite to explore my entire library with addons that automatically change the refresh rate per game to what i've set them to. But I'm a big fan of rumble/haptic feedback so it's the one feature that's a personal deal breaker and I find myself torn between both this tool and GlosC.
As a final note, I want to thank you so much for this tool, It's the only one that is absolutely seamless and just works everytime with zero issues. It's also the only way for me to play World War Z with controller support as steam input and GlosC/Glossi do not work with that game unless i use M&K bindings.

Remapping won't work, or even stay?

so to start, I want to fully disable the touch pad features it is defaulted by. so when I edit the app_config.conf and set everything involving the pad to [None] it doesn't work and it also gets reverted back to the default settings when I open SWICD_Configurator.exe. Also every .exe in your folder is set as admin if it matters.

I love the drivers itself btw Keep up the great work!

Edit: there's also this app that I use for joystick mouse movement called Joyxoff which works flawlessly on 0.1.1 but on 0.1.2 it freezes up when moving the stick ex. making a circle.

[BUG]Rear Grip Hardware button R5 does not seem to be registering input

The Hardware Button R5 (lower right rear grip button) does not seem to be registering input when using SWICD. All other hardware buttons seem to be functioning properly. I tried assigning different functions to R5, checked app_config.conf for any anomalies, and started with freshly generated profiles but could not find a possible cause under the control of the user. I verified that the R5 button on my Steam Deck unit activates properly under Steam; it is only SWICD where it does not function.

Reproduced by starting the SWICD program, making sure mode is set to 'blacklist'; Open Windows Game Controllers Control Panel (joy.cpl), to test buttons, only the R5 button does not register an input (default assignment given by SWICD is Windows Button 4/Y)

Driver version: 0.2.4-7f187ba-release

[Possible Bug] B button always opens pause menu

This maybe down to my own user error but every game I try Including days gone and the new logo star wars, the B button always opens the menu which does not allow me to complete many tasks in the games?
This is not a gripe as I think the work done on this app is amazing and you are a life saver for windows and the steam deck.. many thanks for the work you do but please help if possible. ๐Ÿ‘๐Ÿ‘๐Ÿ‘

Swicd configurator - blank

I am able to install the driver and it is detected without steam but when I open the swicd configurator I get a blank form with no options to configure.
Ran in administrative mode, still nothing.

Shows up in reWASD as a Xbox controller with no back pedals but when the back buttons are pressed it responds.

Can the back buttons be remapped from what you have as default?

[BUG] Lastest release buttons not registering when pressed?

Hi there

Love the new update. But one thing. Driver states it's started. The sound pops up. Windows and games acknowledges the contoller. But when I press anything nothing doesn't register? No buttons works. Any idea what I'm doing wrong. Thanks and always great work :)

[FEATURE] Map + and - Volume Keys to Screen brightness controls (when holding another button down)

Is your feature request related to a problem? Please describe.
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]

I'm trying to find a way to map the screen brightness to the volume buttons as an alternate function.

Describe the solution you'd like
A clear and concise description of what you want to happen.

Abiliy to map volume buttons in SWICD so that I can change the volume to brightness when holding a alt button

Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.

I've managed to do it by combining your app with Twinkle Tray ( https://github.com/xanderfrangos/twinkle-tray) but would like to remove having another app running on my Deck, so wondered if there is any other way to do this

Additional context
Add any other context or screenshots about the feature request here.

Hope that makes sense, let me know if you need more info

[BUG] Latest version crashes randomly and shuts down

Describe the bug
Hi!
I've been using 0.2.4 for a while and it has worked great! Tried the new beta and it also works great! However, the program sometimes crashes randomly. I tried reinstall everything and it still crashes. Went back to 0.2.4 and works without issue, but now I kinda miss the keyboard input.

To Reproduce
Steps to reproduce the behavior:

  1. Just opening the program and then it will crash at random.

Screenshots
IMG_20220627_142329

Debug information
New Beta

Additional context
Add any other context about the problem here.

[BUG] Seems MENU and VIEW buttons are swapped

Describe the bug
The default profile maps seems correct.

  • MENU (hamburger) -> MENU
  • VIEW (windows) -> VIEW

But in-game it seems MENU button activates VIEW function, and VIEW button activates MENU function.

To Reproduce
Steps to reproduce the behavior (Forza Horizon 5):

  1. Launch Forza Horizon 5
  2. Enter game.
  3. Press MENU button, the game pops map interface (which suppose to be activated by VIEW button)
  4. Press VIEW button, the game pops menus (which suppose to be activated by MENU button)

Steps to reproduce the behavior (Genshin Impact):

  1. Launch Genshin Impact
  2. Set input to "Controller"
  3. Press MENU button, the game pops chat interface (which suppose to be activated by VIEW button)
  4. Press VIEW button, the game pops Paimon menus (which suppose to be activated by MENU button)

Expected behavior
VIEW and MENU should be swapped.

Screenshots
N/A

Debug information
Driver version: v0.2.5-beta2-f9e0e59-release

Additional context
N/A

GUI Configurator

This is a work in progress.
Please post your feature requests and comments below!

Could not open neptune controller

Describe the bug
I just wiped my deck and reinstalled windows from scratch. I've installed ViGEm, and SWICD but when I start it I'm getting an error and the controller is not recognized after the Driver is started. Not sure if this is some sort of bug, or user error. The error states:

Could not open neptune controller: System.DllNotFoundException: Unable to load DLL 'hidapi.dll': The specified module could not be found. (Exception from HRESULT: 0x8007007E)
at hidapi.Native.HidApiNative.hid_enumerate(UInt16 vendor_id, UInt16 product_id)
at hidapi.HidDevice.OpenDevice()
at neptune_hidapi.net.NeptuneController.Open()
at SWICD.Services.ControllerService.Start()

To Reproduce
Steps to reproduce the behavior:

  1. Start Windows
  2. Open SWICD Driver Control Panel
  3. See error

Expected behavior
Driver loads and controller works

Screenshots
If applicable, add screenshots to help explain your problem.

Debug information
Driver version: [v0.2.4-f187ba-release]

Create a support package by going to "Driver status" and selecting "Create support package".
Attach the file SWICD_Support_XXXXX.zip from your desktop.

SWICD_Support_637916194649346935.zip

Additional context
Add any other context about the problem here.

Profile toggle via hotkey

Since the Deck doesn't use the ... button on Windows, I think it would be very convenient to use it to turn off/on SWICD inputs rather than add every Steam game someone owns to the blacklist or disable the driver altogether via the tray icon. Such a feature could also be used to toggle lizard mode or rearrange control setups on the fly, too.

[FEATURE] Mapping Sticks to Keyboard

There are a bunch of games that do not have controller support, please implement mapping of joysticks to keyboards (e.g, left stick to WASD).

[BUG] B button acts as a start button?

Hi I'm using the latest edition release and no matter what game I play the B button pauses the game and brings up the game menu? And therefore render that button in game can't be used.

Any way to not Have this happen. In the mapping screen it is as B button.

Thanks for all your hard work.

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.