Xb2XInput Versions Save

XB2X: User-mode Windows driver for Xbox OG controllers, supporting both XInput and DirectInput.

v1.5c

3 years ago

Read the Setup/Usage sections of the README to learn how to set it all up, really it only takes a minute or two.

(If you know the VID/PID of your controller you can edit the "install drivers.bat" and remove all the controllers that don't match up with it, this can help speed up the setup quite a lot for some people!)

A list of supported controllers can be found at the top of XboxController.cpp

If you have a controller that isn't on this list, or a controller that is on the list but won't work, feel free to make an issue about it on the issue tracker (please include the hardware ID of the controller though - see "Support" section in the readme)

Changelog

  • (v1.5c) Write remap-enabled setting to INI

  • (v1.5b) Allow toggling button remapping from the systray menu

  • (v1.5) Allow remapping to/from triggers, fix default remappings not being applied

  • (v1.41) Allow button remapping via INI settings - the included Xb2XInput.ini explains how this works.

  • (v1.41) Default settings for newly added controllers can now be customised via Xb2XInput.ini's [Default] section.

  • (v1.41) "Enable guide combination" choice is now respected (previously the value was ignored, and guide combo was always enabled)

  • (#15) Improved Multi-Controller Reliability - thanks to skajacore!

  • (#16) Added Deadzone Functionality - thanks to skajacore! Deadzone can be configured either via INI file or through button-combinations (right-click the systray icon to see the combinations) Any changes made to the deadzone will be saved back to the INI & loaded in next time XB2X is launched.

  • Added per-controller submenus to configure vibration/guide-button & view deadzones.

  • Now reads/writes config from a INI file with the same name as the EXE. This INI stores any desired guide-button combination along with per-controller config: whether vibration/guide-button combination is enabled for this controller, and any chosen deadzones for the sticks & triggers. (unfortunately some controllers can't be uniquely identified via a serial number, so for those INI will store & apply settings based on the controllers VID/PID instead)

  • Added an example Xb2XInput.ini file with all the config options included & described - note that the INI isn't required for Xb2XInput to run though, as the EXE will create a new INI if needed.

Todo

  • Find a way to uniquely ID controllers without needing a serial number? I think Windows must be creating some kind of identifier for them, since IIRC it seems to remember the installed driver no matter which USB port is used...

  • Update README with info about submenus/INI/deadzones

  • Replace wdi-simple, or at least add a wrapper which detects attached devices and only runs wdi-simple for those ones...

v1.5a

3 years ago

(v1.5b isn't the latest version, you can find the latest version here: https://github.com/emoose/Xb2XInput/releases)

Read the Setup/Usage sections of the README to learn how to set it all up, really it only takes a minute or two.

A list of supported controllers can be found at the top of XboxController.cpp

If you have a controller that isn't on this list, or a controller that is on the list but won't work, feel free to make an issue about it on the issue tracker (please include the hardware ID of the controller though - see "Support" section in the readme)

Changelog

  • (v1.5b) Allow toggling button remapping from the systray menu

  • (v1.5) Allow remapping to/from triggers, fix default remappings not being applied

  • (v1.41) Allow button remapping via INI settings - the included Xb2XInput.ini explains how this works.

  • (v1.41) Default settings for newly added controllers can now be customised via Xb2XInput.ini's [Default] section.

  • (v1.41) "Enable guide combination" choice is now respected (previously the value was ignored, and guide combo was always enabled)

  • (#15) Improved Multi-Controller Reliability - thanks to skajacore!

  • (#16) Added Deadzone Functionality - thanks to skajacore! Deadzone can be configured either via INI file or through button-combinations (right-click the systray icon to see the combinations) Any changes made to the deadzone will be saved back to the INI & loaded in next time XB2X is launched.

  • Added per-controller submenus to configure vibration/guide-button & view deadzones.

  • Now reads/writes config from a INI file with the same name as the EXE. This INI stores any desired guide-button combination along with per-controller config: whether vibration/guide-button combination is enabled for this controller, and any chosen deadzones for the sticks & triggers. (unfortunately some controllers can't be uniquely identified via a serial number, so for those INI will store & apply settings based on the controllers VID/PID instead)

  • Added an example Xb2XInput.ini file with all the config options included & described - note that the INI isn't required for Xb2XInput to run though, as the EXE will create a new INI if needed.

Todo

  • Find a way to uniquely ID controllers without needing a serial number? I think Windows must be creating some kind of identifier for them, since IIRC it seems to remember the installed driver no matter which USB port is used...

  • Allow customizing deadzone combination in the INI file.

  • Update README with info about submenus/INI/deadzones

  • Replace wdi-simple, or at least add a wrapper which detects attached devices and only runs wdi-simple for those ones...

v1.41a

3 years ago

Read the Setup/Usage sections of the README to learn how to set it all up, really it only takes a minute or two.

A list of supported controllers can be found at the top of XboxController.cpp

If you have a controller that isn't on this list, or a controller that is on the list but won't work, feel free to make an issue about it on the issue tracker (please include the hardware ID of the controller though - see "Support" section in the readme)

Changes from v1.3

  • (v1.41) Allow button remapping via INI settings - the included Xb2XInput.ini explains how this works.

  • (v1.41) Default settings for newly added controllers can now be customised via Xb2XInput.ini's [Default] section.

  • (v1.41) "Enable guide combination" choice is now respected (previously the value was ignored, and guide combo was always enabled)

  • (#15) Improved Multi-Controller Reliability - thanks to skajacore!

  • (#16) Added Deadzone Functionality - thanks to skajacore! Deadzone can be configured either via INI file or through button-combinations (right-click the systray icon to see the combinations) Any changes made to the deadzone will be saved back to the INI & loaded in next time XB2X is launched.

  • Added per-controller submenus to configure vibration/guide-button & view deadzones.

  • Now reads/writes config from a INI file with the same name as the EXE. This INI stores any desired guide-button combination along with per-controller config: whether vibration/guide-button combination is enabled for this controller, and any chosen deadzones for the sticks & triggers. (unfortunately some controllers can't be uniquely identified via a serial number, so for those INI will store & apply settings based on the controllers VID/PID instead)

  • Added an example Xb2XInput.ini file with all the config options included & described - note that the INI isn't required for Xb2XInput to run though, as the EXE will create a new INI if needed.

Todo

  • Find a way to uniquely ID controllers without needing a serial number? I think Windows must be creating some kind of identifier for them, since IIRC it seems to remember the installed driver no matter which USB port is used...

  • Allow customizing deadzone combination in the INI file.

  • Update README with info about submenus/INI/deadzones

  • Replace wdi-simple, or at least add a wrapper which detects attached devices and only runs wdi-simple for those ones...

v1.41

3 years ago

Read the Setup/Usage sections of the README to learn how to set it all up, really it only takes a minute or two.

A list of supported controllers can be found at the top of XboxController.cpp

If you have a controller that isn't on this list, or a controller that is on the list but won't work, feel free to make an issue about it on the issue tracker (please include the hardware ID of the controller though - see "Support" section in the readme)

Changes from v1.3

  • (v1.41) Allow button remapping via INI settings - the included Xb2XInput.ini file should explain how this works.

  • (v1.41) Default settings for new controllers can now be customized, see the [Default] section inside Xb2XInput.ini

  • (v1.41) "Enable guide combination" choice is now respected (previously the value was ignored, and guide combo was always enabled)

  • (#15) Improved Multi-Controller Reliability - thanks to skajacore!

  • (#16) Added Deadzone Functionality - thanks to skajacore! Deadzone can be configured either via INI file or through button-combinations (right-click the systray icon to see the combinations) Any changes made to the deadzone will be saved back to the INI & loaded in next time XB2X is launched.

  • Added per-controller submenus to configure vibration/guide-button & view deadzones.

  • Now reads/writes config from a INI file with the same name as the EXE. This INI stores any desired guide-button combination along with per-controller config: whether vibration/guide-button combination is enabled for this controller, and any chosen deadzones for the sticks & triggers. (unfortunately some controllers can't be uniquely identified via a serial number, so for those INI will store & apply settings based on the controllers VID/PID instead)

  • Added an example Xb2XInput.ini file with all the config options included & described - note that the INI isn't required for Xb2XInput to run though, as the EXE will create a new INI if needed.

Todo

  • Find a way to uniquely ID controllers without needing a serial number? I think Windows must be creating some kind of identifier for them, since IIRC it seems to remember the installed driver no matter which USB port is used...

  • Allow customizing deadzone combination in the INI file.

  • Update README with info about submenus/INI/deadzones

  • Replace wdi-simple, or at least add a wrapper which detects attached devices and only runs wdi-simple for those ones...

v1.4

3 years ago

Read the Setup/Usage sections of the README to learn how to set it all up, really it only takes a minute or two.

A list of supported controllers can be found at the top of XboxController.cpp

If you have a controller that isn't on this list, or a controller that is on the list but won't work, feel free to make an issue about it on the issue tracker (please include the hardware ID of the controller though - see "Support" section in the readme)

Changes in v1.4

  • (#15) Improved Multi-Controller Reliability - thanks to skajacore!

  • (#16) Added Deadzone Functionality - thanks to skajacore! Deadzone can be configured either via INI file or through button-combinations (right-click the systray icon to see the combinations) Any changes made to the deadzone will be saved back to the INI & loaded in next time XB2X is launched.

  • Added per-controller submenus to configure vibration/guide-button & view deadzones.

  • Now reads/writes config from a INI file with the same name as the EXE. This INI stores any desired guide-button combination along with per-controller config: whether vibration/guide-button combination is enabled for this controller, and any chosen deadzones for the sticks & triggers. (unfortunately some controllers can't be uniquely identified via a serial number, so for those INI will store & apply settings based on the controllers VID/PID instead)

  • Added an example Xb2XInput.ini file with all the config options included & described - note that the INI isn't required for Xb2XInput to run though, as the EXE will create a new INI if needed.

Todo

  • Find a way to uniquely ID controllers without needing a serial number? I think Windows must be creating some kind of identifier for them, since IIRC it seems to remember the installed driver no matter which USB port is used...

  • 'Default' INI section, with settings to apply to any new controllers

  • Allow customizing deadzone combination in the INI file.

  • Update README with info about submenus/INI/deadzones

  • Replace wdi-simple, or at least add a wrapper which detects attached devices and only runs wdi-simple for those ones...

v1.3.2

4 years ago

Read the Setup/Usage sections of the README to learn how to set it all up, really it only takes a minute or two.

A list of supported controllers can be found at the top of XboxController.cpp

If you have a controller that isn't on this list, or a controller that is on the list but won't work, feel free to make an issue about it on the issue tracker (please include the hardware ID of the controller though - see "Support" section in the readme)

Changes in v1.3

  • Added 2 extra controller IDs (thanks to @xalender and @Rarcoon!)

  • Hopefully fixed the issue with controller vibration!

  • Updated ViGEmClient from upstream.

  • (v1.3.1) Only lock usb_mutex when we're performing a control transfer - should increase stability with controllers that don't support interrupt transfers.

  • (v1.3.2) Allow emulating guide button press through LT+RT+LS+RS button combination (can be disabled through context-menu)

  • (v1.3.2) Allow disabling vibration support through context-menu.

  • (v1.3.2) Apply timeout to interrupt transfers - hopefully should improve support for multiple interrupt-supporting controllers.

v1.3.1

4 years ago

Read the Install/Usage sections of the README to learn how to set it all up, really it only takes a minute or two.

A list of supported controllers can be found at the top of XboxController.cpp

If you have a controller that isn't on this list, or a controller that is on the list but won't work, feel free to make an issue about it on the issue tracker (please include the hardware ID of the controller though - see "Support" section in the readme)

Changes in v1.3

  • Added 2 extra controller IDs (thanks to @xalender and @Rarcoon!)

  • Hopefully fixed the issue with controller vibration!

  • Updated ViGEmClient from upstream.

  • (v1.3.1) Only lock usb_mutex when we're performing a control transfer - should increase stability with controllers that don't support interrupt transfers.

v1.3

4 years ago

Read the Install/Usage sections of the README to learn how to set it all up, really it only takes a minute or two.

A list of supported controllers can be found at the top of XboxController.cpp

If you have a controller that isn't on this list, or a controller that is on the list but won't work, feel free to make an issue about it on the issue tracker (please include the hardware ID of the controller though - see "Support" section in the readme)

Changes

  • Added 2 extra controller IDs (thanks to @xalender and @Rarcoon!)

  • Hopefully fixed the issue with controller vibration!

  • Updated ViGEmClient from upstream.

v1.2

5 years ago

Read the Install/Usage sections of the README to learn how to set it all up, really it only takes a minute or two. (ignore anything about XOutput1_1 DLL, thats an unneeded DLL from an earlier version)

(If you're running Windows 7 you may need to install an update for SHA-2 driver support & the Xbox 360 controller drivers, instructions for installing these are available in the ViGEm documentation: https://docs.vigem.org/#!vigem-bus-driver-installation.md)

A list of supported controllers can be found at the top of XboxController.cpp

If you have a controller that isn't on this list, or a controller that is on the list but won't work, feel free to make an issue about it on the issue tracker (please include the hardware ID of the controller though - see "Support" section in the readme)

Changes

  • Switched from using the ScpVBus driver to ViGEmBus instead, as ScpVBus is no longer under development, and it seems Win10 won't recognise that driver as signed any more.

If you setup an earlier XB2X release and don't use anything like ScpToolkit, you can run the "uninstall drivers.bat" (as admin!) to remove the ScpVBus driver from your system.

  • Will now try using interrupt transfers instead of control transfers if possible, falling back to control transfers if interrupts aren't supported or cause an error, which should help improve compatibility with controllers a lot.

This change was brought on because the 2nd Madcatz controller I've been waiting to receive finally showed up today, and I excitedly hooked it up to my machine to check whether multiple controllers work, only to find it not seeming to give any response once connected (strangely only returning the state of the gamepad when it was first plugged in, never updating it again past that) Originally I thought it was broken and was about to contact the seller, but I figured I'd give it a quick test with the TigerGame/Mayflash driver first, and to my surprise with that it actually worked fine, so it must have been something wrong with my code...

First I tried a bunch of things like initing the controller by sending GET_DESCRIPTOR/GET_CAPABILITIES/etc requests, but sadly none of that had any effect. I turned back to the TigerGame driver, and some debugging showed that it used interrupts rather than control transfers to receive info from the controller, and so after a while of checking against libusb docs and trying to fix XB2X up to work like that I eventually got it to work :D.

Interrupts are a little fragile though, and I'm not sure if all controllers will support them (xboxdevwiki seems to imply they should, but who knows), so I've set XB2X up so it'll fallback to using control transfers if interrupts aren't available or cause an error.

Hopefully now XB2X will be a lot more compatible with any controllers that get thrown at it, and with the switch to ViGEm should now work completely fine on pretty much any system!

v1.1

5 years ago

Read the Install/Usage sections of the README to learn how to set it all up, really it only takes a minute or two.

A list of supported controllers can be found at the top of XboxController.cpp

If you have a controller that isn't on this list, or a controller that is on the list but won't work, feel free to make an issue about it on the issue tracker (please include the hardware ID of the controller though - see "Support" section in the readme)

Changes

This release brings some minor improvements & optimisations, and adds support for the libusb driver.

In case anyone has issues with the WinUSB driver that gets installed via "install drivers.bat" you can try using the libusb driver instead, install it by running the wdi-simple.exe like so (changing the vid / pid values to your controllers IDs)

wdi-simple.exe --vid 0x0738 --pid 0x4522 --type 1