UnleashedRecomp/UnleashedRecomp/hid/hid.cpp
Al. Lopez b282cbc4a2
Some checks are pending
validate-internal / build (push) Waiting to run
Steam Virtual Gamepad support / Steam Input sharing Device Info with SDL (#1086)
* Experimenting Button Label

Experimenting a way to add a hint for Button Labels. It should attempt to fix the Nintendo Layout issue when using a Nintendo Switch controller

* Create c-cpp.yml

* Create cmake-multi-platform.yml

* Create apply-patch.yml

* removing the workflows

* added experimental Steam Virtual Gamepad support

* restoring notes for Button Labels.

* Initial Gamepad Hotplug Logic improvements

This changes the way how a Controller will be prioritized. By default: it'll always prioritize based on Player 1. It should play nicely with Steam Deck's internal inputs when Steam Input is active

* Lightbar detection when using multiple PlayStation controllers at the same time.

An attempt to remedy the Lightbar activation. While Player 2/3/4 will override the in-game lightbar event upon connection: it'll later revert back to the in-game event.

* Attempt to reduce Input leaking

To avoid "the Controller is leaking" situation, there's now a Gamepad stat management that should reset Controller state based on connected controller.

* Lightbar active fix when gamepad plugged first prior to game launch

Another attempt to fix the lightbar by redoing the controller state mangement. For some reason: the Lightbar gets disabled when a controller is already plugged prior to game launch. It reverts back to normal until the next game event.

* Revert "restoring notes for Button Labels."

This reverts commit ef4e37cb41.

* Reapply "restoring notes for Button Labels."

This reverts commit f3ddd80024.

* Moving all Gamepad Hotplug changes to separate branch

To ensure all Hotplug-related changes don't accidentally get leftover: this commit will revert all the back back to the accidental removal of Button Label's note.

* added SDL's GameController naming convention as Fallback

If EInputDeviceExplicit doesn't recognize a specific Controller Type or Device: it'll fallback to SDL's naming conventions. This helps troubleshooting Controller-related issues when using the debug console.

* Official device naming scheme for EInputDeviceExplicit

Changes some of EInputDeviceExplicit's names to match the device's official name (such as Nintendo Switch Pro Controller, Xbox Wireless Controller, Amazon Luna Controller, etc.)

* spacing formatting fix

* remove "SDL_HINT_GAMECONTROLLER_USE_BUTTON_LABELS" hint

since #1045 will include it: we're gonna get rid of it on this code section to avoid conflicts.

* moved EInputDevice Unknown class to the top priority

* Replacing EInputDeviceExplicit with SDL_GameControllerName

Based on @hyperbx's suggestions: It'll look for SDL's Controller Name as opposed to EInputDevice's naming scheme.

* remove hid::GetInputDeviceName() from hid.ccp

Now that SDL_GameControllerName handles Controller naming conventions, the hid.ccp portion of GetInputDeviceName is no longer needed.

* Fix indentation

---------

Co-authored-by: Hyper <34012267+hyperbx@users.noreply.github.com>
2025-03-29 21:38:44 +03:00

29 lines
801 B
C++

#include "hid.h"
#include <ui/game_window.h>
#include <user/config.h>
hid::EInputDevice hid::g_inputDevice;
hid::EInputDevice hid::g_inputDeviceController;
hid::EInputDeviceExplicit hid::g_inputDeviceExplicit;
uint16_t hid::g_prohibitedButtons;
bool hid::g_isLeftStickProhibited;
bool hid::g_isRightStickProhibited;
void hid::SetProhibitedInputs(uint16_t wButtons, bool leftStick, bool rightStick)
{
hid::g_prohibitedButtons = wButtons;
hid::g_isLeftStickProhibited = leftStick;
hid::g_isRightStickProhibited = rightStick;
}
bool hid::IsInputAllowed()
{
return GameWindow::s_isFocused || Config::AllowBackgroundInput;
}
bool hid::IsInputDeviceController()
{
return hid::g_inputDevice != hid::EInputDevice::Keyboard &&
hid::g_inputDevice != hid::EInputDevice::Mouse;
}