xemu-project / xemu

Original Xbox Emulator for Windows, macOS, and Linux (Active Development)
https://xemu.app
Other
2.71k stars 268 forks source link

[Feature Request] Support for pressure-sensitive face buttons #606

Open eVenent opened 2 years ago

eVenent commented 2 years ago

Feature Request

The Xbox OG Controller drivers in perspective of pressure sensitive buttons are garbage. XBCD allows to use assign 6 of 8 pressure sensitive buttons to 3 free axis. Mayflash Tigergame allows only 2 of 8. Recommended Xb2XInput none as translates signals to XInput which is not supporting pressure sensitive buttons.

I saw that Cxbx have added recently support for Xbox Controller (and SBC) via USB passthrough with libusb. Is it possible to add support for pressure sensitive buttons to Xbox Controller via libusb too?

Additionally, there are 2 other controllers, DualShock 2 and DualShock 3 with pressure sensitive support too. I saw that RPCS3 and PCSX2 have added support for DualShock 3's pressure sensitive buttons using DsHidMini driver. Maybe it will be possible to make xemu compatible with PlayStation's pressure sensitive buttons too?

I think that pressure sensitive buttons are something unique, which should not be forgotten and it's worth to preserve support for them.

Alternatives

Nothing interesting as alternative. Pressure sensitivity buttons are unique feature which is difficult to replace.

Additional Context

PC gamers will be able to feel difference in games which supports pressure sensitivity comparing them to PC ports. Xbox gamers will be able to play their games like on their old device. It will lead to better immersion and higher satisfaction. Anyway feature can be optional and should be disabled for people who does not enjoy using pressure-sensitive buttons.

GXTX commented 2 years ago

Is it possible to add support for pressure sensitive buttons to Xbox Controller via libusb too?

No need. Pass the physical USB device into xemu, no need for Windows drivers. See QEMUs docs on how to pass physical USB devices to the guest VM.

Maybe it will be possible to make [...] PlayStation's pressure sensitive buttons too?

xemu uses SDL for it's controller backend. You'd need to suggest such things upstream to them.

Spidy123222 commented 2 years ago

Is it possible to add support for pressure sensitive buttons to Xbox Controller via libusb too?

No need. Pass the physical USB device into xemu, no need for Windows drivers. See QEMUs docs on how to pass physical USB devices to the guest VM.

Maybe it will be possible to make [...] PlayStation's pressure sensitive buttons too?

xemu uses SDL for it's controller backend. You'd need to suggest such things upstream to them.

I agree with this this should be on SDL side. Also there are gamepads other than original Xbox that did have pressure sensitive buttons like p2 and ps3 dual shock controllers which passthrough wouldn't work with since it's not a actual Xbox controller. I'm no technical person so idk if you could passthrough a ps3 controller. Which was stated in OG post. So this belongs in sdl more of.

eVenent commented 1 year ago

So it finally happened for DualShock 3 with this commit and SDL is supporting pressure-sensitive face buttons. 😁 For now, supports only DS3 and DS2 adapters which convert signals to DS3 (like Ostent ones), it does not have Xbox OG pressure-sensitive buttons yet, but maybe it will change in the future. BUT DS3 controllers for sure will cover a big chunk of the total number of use cases.

eVenent commented 1 year ago

I have one interesting update.

ReWASD team has introduced Virtual DS3 controller which can emulate pressure-sensitive buttons on every supported controller. It means that even Xbox One controllers can have pressure-sensitive options depends how we will configure it (I'm usually using other button modifiers or combos like RB+A i giving only 20% pressure, but normal press A is 100% or short press 20%, double press 50% long press 100%). This solution is tested for PS emulators and works great.

They even modified PCSX2's code to support native DS3 driver for pressure-sensitivity - Native DualShock 3 support in Windows by official Sony driver (sixaxis). I think it's worth to implement this feature in this way by adding support for official DS3 driver and the rest job can be done by rewasd's virtual DS3 controller or the real one.