RetroDECK
RetroDECK copied to clipboard
RetroDECK - Controller Unification Project (CUP) 🍵
Original pitch:
We need to go through each emulator and make sure all the hotkeys are correct and as we want them then update the input configs inside the emulators, generate a new steam controller layout and new wiki entries.
These controllers should just be applied if you are using the Steam Deck as a device.
In the future there are more things to consider
A user commented as well to include more configurations for systems with multple inputs like the Wii:
it would be awesome if retrodeck includes already configured systems such as emudeck does for example for Wii https://github.com/dragoonDorise/EmuDeck/tree/main/configs/org.DolphinEmu.dolphin-emu/config/dolphin-emu
Docked mode: External controllers only
Handheld: As now
WiiU Steam Deck mode: Steam Deck as a WiiU gamepad.
WiiU Controller mode: Wii U with external WiiU Controller
GuitarHero/RockBand mode: Music Controllers
Lightgun Mode: Lightguns
Wii Controller Mode: Wii
As we also wants to move onto the standard Linux Desktop & other SteamOS devices post 1.0, there will be a need for dynamic controller configs based upon Device Detection + Device Mode + Plugged in Controllers.
Emulators - Category Classification by Hotkey type
Catagory 1 - Keyboard hotkey based:
Information:
- Don't allow gamepad inputs as hotkeys.
- Don't allow combination of letter characters as hotkeys
- Allows special keyboard inputs and combination as hotkeys (don't allow E+T but allows Shift+T)
Emulators: Citra, Yuzu
Catagory 2 - Keyboard and Gamepad combination based:
Information:
- Allows gamepad input and combination as hotkeys
- Allows keyboard inputs and combination as hotkeys
- Don't allow combination of letter characters as hotkeys (Like Letter T+ Letter R)
Emulators: PCSX2, Duckstation, MelonDS, Dolphin/Primehack
Catagory 3 - RetroArch
- Don't allow custom rebinding of all hotkeys
- Support keyboard input and gamepad input combinations as hotkeys
- Only supports one toggle button for hotkeys (you can't mix CTRL + X and ALT + X)
Emulators: RetroArch
Catagory 4 - Single gamepad/keyboard button hotkey based
Information:
- Only allow single letters or single gamepad or keyboard input as hotkeys (Letter T or Button B)
Emulators: PPSSPP
Catagory 5 - Hotkeybinds are not allowed
Information:
- Don't allow hotkeys at all in the GUI
Emulators: XEMU, RPCS3
Hotkeymapping priority order
Keyboard based > Gamepad based hotkeys > Single button based
CUP Part 1: Steam Deck - Layout changes:
Hotkey paradigm
Gamepad based hotkeys > Keyboard based > Single button based
Changes to the back buttons
Suggestion 1:
L4 - T
L5 - CTRL
R4 - R
R5 - SHIFT
This allows us to have 4 buttons in combinations and also allows hotkey combination bindings in Category 1
L4 + L5 L4 + R4 L4 + R5 L5 + R4 L5 + R5 L4 L5 R4 R5
It also allows up to use standard gamepad keybindings for Category 2-4
Suggestion 2:
Look into button chording so that each press of a back button could change the inputs of XYAB to something else.
Example:
L4 - Changes XYAB to keybard inputs ABCD
L5 - Changes XYAB to keybard inputs DEFH
R4
R5
That would allow even more keybinds.
Suggestion 3:
A hybrid of 1 and 2
Right touchpad = As mouse and leftclick
This will allow Lightgun, WiiMote games to work.
Left touchpad = Radial Menu
Information: The goal is to have the Left touchpad as an radial menu with icon glyphs for quick access. This can be divided into submenus per type of input catagory (above) or per function type: Save, Load, Quit etc..
Radial menu:
- Should access more hotkeys then the button combinations, but as well those that are bound.
- Should be logical for the users where each emulator is.
- We can't add a separate submenu for each emulator as it becomes too clustered
The 5 parts:
Part 1: Better Steam Deck inputs
Make a new profile that works with hotkeys in all emulators and rebind all emulators.
Release goal: RetroDECK 0.7b
Part 2: Standard External Controllers
Need to develop:
Controller Play order switcher This allows you to change the playorder of each controller, example: the PS3 controller is now player one, the 360 controller is player 2 ect... This is built into the Steam Deck from the GUI, but for desktop use we wither have to develop our own one or wait for ES-DE to do one.
Controller Profile type switcher and framework You should be able to choose or it can be detected each input device is and it should map all the emulators correctly with keybinds and hotkeys. So in the example above, as soon as we say the PS3 is controller one. All emulators are updated with PS3 inputs as playone with hotkeys.
Include support for standard controllers:
- Playstation
- Xbox
- Nintendo *
- Valve
- Generic
- Arcade Sticks
(*Nintendo WiiMote and WiiU Controller later)
Part 3: JoyToKey for PC-Systems
Add support for the following where it's possible
- All PCSystems in both Standalone Emulators and Cores.
Release goal: TBA
Part 4: Special External Controllers
Add support for the following where it's possible , make tools for them or at least guides to make them easier to hookup.
- Wii Mote
- Wii Sensorbar
- WiiU Controller
- Wii Balanceboard
- Ringfit
- Guitarhero/Dj hero /Rockband - Music Instruments (They have native emulator support so they might work).
- Lightguns (Might be licensing issues with Sinden and such. Check how Batocera solved it.)
Release goal: TBA
Part 5: Niche Peripherals
These might not be possible or are very complicated to do. They might need Linux kernel support (outside of our scope) or other issues.
- 3rd party Clones of those in Part 3
- Steering wheel + Shifter (The Linux drivers are not good at this moment)
- Steelbatalion Cockpit
- Flightsimulator Cockpit
- Other crazy things
Release goal: TBA or Never
CUP Part 1: Steam Deck Has been delivered in patch 0.7b in it's first iteration
Duckstation's hotkeys are not yet set as they're overwriting the keybaord (so radial) ones.