From f6aa7cf6dfee0aadaaad45f6ad5eccf443bf46ab Mon Sep 17 00:00:00 2001 From: David Barbion Date: Wed, 10 Dec 2025 23:37:20 +0100 Subject: [PATCH] feat(xemu): generate SDL gamepad configuration as envvar This allows complex gamepads like Steam Deck to have correct axis set. --- .../configgen/generators/xemu/xemuControllers.py | 15 +++++++++++++++ .../configgen/generators/xemu/xemuGenerator.py | 5 ++++- 2 files changed, 19 insertions(+), 1 deletion(-) create mode 100644 projects/configgen/configgen/generators/xemu/xemuControllers.py diff --git a/projects/configgen/configgen/generators/xemu/xemuControllers.py b/projects/configgen/configgen/generators/xemu/xemuControllers.py new file mode 100644 index 0000000000..b0c4f7e8f6 --- /dev/null +++ b/projects/configgen/configgen/generators/xemu/xemuControllers.py @@ -0,0 +1,15 @@ +#!/usr/bin/env python3 +from configgen.controllers.controller import ControllerPerPlayer + + +class XemuControllers: + + def __init__(self, controllers: ControllerPerPlayer): + self.controllers = controllers + + def generateGameControllerConfig(self) -> list[str]: + gameControllerConfig = [] + for index, controller in self.controllers.items(): + gameControllerConfig.append(controller.generateSDLGameDBLine()) + + return gameControllerConfig diff --git a/projects/configgen/configgen/generators/xemu/xemuGenerator.py b/projects/configgen/configgen/generators/xemu/xemuGenerator.py index 09b150af9b..c59c9f8153 100644 --- a/projects/configgen/configgen/generators/xemu/xemuGenerator.py +++ b/projects/configgen/configgen/generators/xemu/xemuGenerator.py @@ -7,6 +7,7 @@ from configgen.generators.Generator import Generator, ControllerPerPlayer import configgen.recalboxFiles as recalboxFiles from configgen.settings.keyValueSettings import keyValueSettings from configgen.utils.Vulkan import Vulkan +from configgen.generators.xemu.xemuControllers import XemuControllers class XemuGenerator(Generator): @@ -117,4 +118,6 @@ class XemuGenerator(Generator): commandArray = [recalboxFiles.recalboxBins[system.Emulator], "-config_path", self.xemuConfigFile] if system.HasArgs: commandArray.extend(system.Args) - return Command(videomode=system.VideoMode, array=commandArray, env={"XDG_CONFIG_HOME": recalboxFiles.CONF}) + gamePadDB = XemuControllers(playersControllers) + + return Command(videomode=system.VideoMode, array=commandArray, env={"XDG_CONFIG_HOME": recalboxFiles.CONF, "SDL_GAMECONTROLLERCONFIG": "\n".join(gamePadDB.generateGameControllerConfig())}) -- GitLab