From ea1514bfdfcebb03dd674d7abfed2eb270be8a11 Mon Sep 17 00:00:00 2001 From: edgar-simao <23741809+edgar-simao@users.noreply.github.com> Date: Mon, 16 Mar 2026 23:40:42 +0000 Subject: [PATCH 1/3] feat: add per-app gamepad type override in web UI --- src/input.cpp | 14 +++++++----- src/input.h | 2 +- src/platform/common.h | 4 +++- src/platform/linux/input/inputtino.cpp | 4 ++-- .../linux/input/inputtino_gamepad.cpp | 9 ++++---- src/platform/linux/input/inputtino_gamepad.h | 2 +- src/platform/macos/input.cpp | 2 +- src/platform/windows/input.cpp | 7 +++--- src/process.cpp | 5 +++++ src/process.h | 1 + src/stream.cpp | 13 ++++++++++- src_assets/common/assets/web/apps.html | 22 +++++++++++++++++++ .../assets/web/public/assets/locale/bg.json | 3 +++ .../assets/web/public/assets/locale/cs.json | 3 +++ .../assets/web/public/assets/locale/de.json | 3 +++ .../assets/web/public/assets/locale/en.json | 3 +++ .../web/public/assets/locale/en_GB.json | 3 +++ .../web/public/assets/locale/en_US.json | 3 +++ .../assets/web/public/assets/locale/es.json | 3 +++ .../assets/web/public/assets/locale/fr.json | 3 +++ .../assets/web/public/assets/locale/hu.json | 3 +++ .../assets/web/public/assets/locale/it.json | 3 +++ .../assets/web/public/assets/locale/ja.json | 3 +++ .../assets/web/public/assets/locale/ko.json | 3 +++ .../assets/web/public/assets/locale/pl.json | 3 +++ .../assets/web/public/assets/locale/pt.json | 3 +++ .../web/public/assets/locale/pt_BR.json | 3 +++ .../assets/web/public/assets/locale/ru.json | 3 +++ .../assets/web/public/assets/locale/sv.json | 3 +++ .../assets/web/public/assets/locale/tr.json | 3 +++ .../assets/web/public/assets/locale/uk.json | 3 +++ .../assets/web/public/assets/locale/vi.json | 3 +++ .../assets/web/public/assets/locale/zh.json | 3 +++ .../web/public/assets/locale/zh_TW.json | 3 +++ 34 files changed, 132 insertions(+), 19 deletions(-) diff --git a/src/input.cpp b/src/input.cpp index db7618bfb05..9084e94ecaf 100644 --- a/src/input.cpp +++ b/src/input.cpp @@ -162,13 +162,15 @@ namespace input { input_t( safe::mail_raw_t::event_t touch_port_event, - platf::feedback_queue_t feedback_queue + platf::feedback_queue_t feedback_queue, + std::string gamepad_override = {} ): shortcutFlags {}, gamepads(MAX_GAMEPADS), client_context {platf::allocate_client_input_context(platf_input)}, touch_port_event {std::move(touch_port_event)}, feedback_queue {std::move(feedback_queue)}, + gamepad_override {std::move(gamepad_override)}, mouse_left_button_timeout {}, touch_port {{0, 0, 0, 0}, 0, 0, 1.0f, 1.0f, 0, 0}, accumulated_vscroll_delta {}, @@ -179,6 +181,7 @@ namespace input { int shortcutFlags; std::vector gamepads; + std::string gamepad_override; // per-session override; empty = use global config std::unique_ptr client_context; safe::mail_raw_t::event_t touch_port_event; @@ -894,7 +897,7 @@ namespace input { } // Allocate a new gamepad - if (platf::alloc_gamepad(platf_input, {id, packet->controllerNumber}, arrival, input->feedback_queue)) { + if (platf::alloc_gamepad(platf_input, {id, packet->controllerNumber}, arrival, input->feedback_queue, input->gamepad_override)) { free_id(gamepadMask, id); return; } @@ -1147,7 +1150,7 @@ namespace input { return; } - if (platf::alloc_gamepad(platf_input, {id, (uint8_t) packet->controllerNumber}, {}, input->feedback_queue)) { + if (platf::alloc_gamepad(platf_input, {id, (uint8_t) packet->controllerNumber}, {}, input->feedback_queue, input->gamepad_override)) { free_id(gamepadMask, id); return; } @@ -1681,10 +1684,11 @@ namespace input { return true; } - std::shared_ptr alloc(safe::mail_t mail) { + std::shared_ptr alloc(safe::mail_t mail, std::string_view gamepad_override) { auto input = std::make_shared( mail->event(mail::touch_port), - mail->queue(mail::gamepad_feedback) + mail->queue(mail::gamepad_feedback), + std::string {gamepad_override} ); // Workaround to ensure new frames will be captured when a client connects diff --git a/src/input.h b/src/input.h index 0e7007c9d03..71ade744d31 100644 --- a/src/input.h +++ b/src/input.h @@ -22,7 +22,7 @@ namespace input { bool probe_gamepads(); - std::shared_ptr alloc(safe::mail_t mail); + std::shared_ptr alloc(safe::mail_t mail, std::string_view gamepad_override = {}); struct touch_port_t: public platf::touch_port_t { int env_width; diff --git a/src/platform/common.h b/src/platform/common.h index 07e5af4a064..c8363ae48d1 100644 --- a/src/platform/common.h +++ b/src/platform/common.h @@ -10,6 +10,7 @@ #include #include #include +#include // lib includes #include @@ -834,9 +835,10 @@ namespace platf { * @param id The gamepad ID. * @param metadata Controller metadata from client (empty if none provided). * @param feedback_queue The queue for posting messages back to the client. + * @param gamepad_override Per-session gamepad type override (e.g. "xone", "ds4"); empty = use global config. * @return 0 on success. */ - int alloc_gamepad(input_t &input, const gamepad_id_t &id, const gamepad_arrival_t &metadata, feedback_queue_t feedback_queue); + int alloc_gamepad(input_t &input, const gamepad_id_t &id, const gamepad_arrival_t &metadata, feedback_queue_t feedback_queue, std::string_view gamepad_override = {}); void free_gamepad(input_t &input, int nr); /** diff --git a/src/platform/linux/input/inputtino.cpp b/src/platform/linux/input/inputtino.cpp index 3102fdd9120..e1db8923240 100644 --- a/src/platform/linux/input/inputtino.cpp +++ b/src/platform/linux/input/inputtino.cpp @@ -79,9 +79,9 @@ namespace platf { platf::pen::update(raw, touch_port, pen); } - int alloc_gamepad(input_t &input, const gamepad_id_t &id, const gamepad_arrival_t &metadata, feedback_queue_t feedback_queue) { + int alloc_gamepad(input_t &input, const gamepad_id_t &id, const gamepad_arrival_t &metadata, feedback_queue_t feedback_queue, std::string_view gamepad_override) { auto raw = (input_raw_t *) input.get(); - return platf::gamepad::alloc(raw, id, metadata, feedback_queue); + return platf::gamepad::alloc(raw, id, metadata, feedback_queue, gamepad_override); } void free_gamepad(input_t &input, int nr) { diff --git a/src/platform/linux/input/inputtino_gamepad.cpp b/src/platform/linux/input/inputtino_gamepad.cpp index 7e782b59b21..8e1e14ba9d7 100644 --- a/src/platform/linux/input/inputtino_gamepad.cpp +++ b/src/platform/linux/input/inputtino_gamepad.cpp @@ -53,16 +53,17 @@ namespace platf::gamepad { return inputtino::PS5Joypad::create({.name = "Sunshine PS5 (virtual) pad", .vendor_id = 0x054C, .product_id = 0x0CE6, .version = 0x8111, .device_phys = device_mac, .device_uniq = device_mac}); } - int alloc(input_raw_t *raw, const gamepad_id_t &id, const gamepad_arrival_t &metadata, feedback_queue_t feedback_queue) { + int alloc(input_raw_t *raw, const gamepad_id_t &id, const gamepad_arrival_t &metadata, feedback_queue_t feedback_queue, std::string_view gamepad_override) { ControllerType selectedGamepadType; + const std::string_view effective_gamepad = gamepad_override.empty() ? std::string_view(config::input.gamepad) : gamepad_override; - if (config::input.gamepad == "xone"sv) { + if (effective_gamepad == "xone"sv) { BOOST_LOG(info) << "Gamepad " << id.globalIndex << " will be Xbox One controller (manual selection)"sv; selectedGamepadType = XboxOneWired; - } else if (config::input.gamepad == "ds5"sv) { + } else if (effective_gamepad == "ds5"sv) { BOOST_LOG(info) << "Gamepad " << id.globalIndex << " will be DualSense 5 controller (manual selection)"sv; selectedGamepadType = DualSenseWired; - } else if (config::input.gamepad == "switch"sv) { + } else if (effective_gamepad == "switch"sv) { BOOST_LOG(info) << "Gamepad " << id.globalIndex << " will be Nintendo Pro controller (manual selection)"sv; selectedGamepadType = SwitchProWired; } else if (metadata.type == LI_CTYPE_XBOX) { diff --git a/src/platform/linux/input/inputtino_gamepad.h b/src/platform/linux/input/inputtino_gamepad.h index 8d26c9e1ff6..814cc945260 100644 --- a/src/platform/linux/input/inputtino_gamepad.h +++ b/src/platform/linux/input/inputtino_gamepad.h @@ -23,7 +23,7 @@ namespace platf::gamepad { SwitchProWired ///< Switch Pro Wired Controller }; - int alloc(input_raw_t *raw, const gamepad_id_t &id, const gamepad_arrival_t &metadata, feedback_queue_t feedback_queue); + int alloc(input_raw_t *raw, const gamepad_id_t &id, const gamepad_arrival_t &metadata, feedback_queue_t feedback_queue, std::string_view gamepad_override = {}); void free(input_raw_t *raw, int nr); diff --git a/src/platform/macos/input.cpp b/src/platform/macos/input.cpp index d3bf20057ba..5724633c63d 100644 --- a/src/platform/macos/input.cpp +++ b/src/platform/macos/input.cpp @@ -298,7 +298,7 @@ const KeyCodeMap kKeyCodesMap[] = { BOOST_LOG(info) << "unicode: Unicode input not yet implemented for MacOS."sv; } - int alloc_gamepad(input_t &input, const gamepad_id_t &id, const gamepad_arrival_t &metadata, feedback_queue_t feedback_queue) { + int alloc_gamepad(input_t &input, const gamepad_id_t &id, const gamepad_arrival_t &metadata, feedback_queue_t feedback_queue, std::string_view gamepad_override) { BOOST_LOG(info) << "alloc_gamepad: Gamepad not yet implemented for MacOS."sv; return -1; } diff --git a/src/platform/windows/input.cpp b/src/platform/windows/input.cpp index 28fe6fa5749..3094ff0a720 100644 --- a/src/platform/windows/input.cpp +++ b/src/platform/windows/input.cpp @@ -1163,7 +1163,7 @@ namespace platf { } } - int alloc_gamepad(input_t &input, const gamepad_id_t &id, const gamepad_arrival_t &metadata, feedback_queue_t feedback_queue) { + int alloc_gamepad(input_t &input, const gamepad_id_t &id, const gamepad_arrival_t &metadata, feedback_queue_t feedback_queue, std::string_view gamepad_override) { auto raw = (input_raw_t *) input.get(); if (!raw->vigem) { @@ -1171,11 +1171,12 @@ namespace platf { } VIGEM_TARGET_TYPE selectedGamepadType; + const std::string_view effective_gamepad = gamepad_override.empty() ? std::string_view(config::input.gamepad) : gamepad_override; - if (config::input.gamepad == "x360"sv) { + if (effective_gamepad == "x360"sv) { BOOST_LOG(info) << "Gamepad " << id.globalIndex << " will be Xbox 360 controller (manual selection)"sv; selectedGamepadType = Xbox360Wired; - } else if (config::input.gamepad == "ds4"sv) { + } else if (effective_gamepad == "ds4"sv) { BOOST_LOG(info) << "Gamepad " << id.globalIndex << " will be DualShock 4 controller (manual selection)"sv; selectedGamepadType = DualShock4Wired; } else if (metadata.type == LI_CTYPE_PS) { diff --git a/src/process.cpp b/src/process.cpp index 95c7bdaeaa5..94c463eefc2 100644 --- a/src/process.cpp +++ b/src/process.cpp @@ -650,6 +650,7 @@ namespace proc { auto auto_detach = app_node.get_optional("auto-detach"s); auto wait_all = app_node.get_optional("wait-all"s); auto exit_timeout = app_node.get_optional("exit-timeout"s); + auto gamepad = app_node.get_optional("gamepad"s); std::vector prep_cmds; if (!exclude_global_prep.value_or(false)) { @@ -715,6 +716,10 @@ namespace proc { ctx.image_path = parse_env_val(this_env, *image_path); } + if (gamepad) { + ctx.gamepad = parse_env_val(this_env, *gamepad); + } + ctx.elevated = elevated.value_or(false); ctx.auto_detach = auto_detach.value_or(true); ctx.wait_all = wait_all.value_or(true); diff --git a/src/process.h b/src/process.h index 0f2f5f51fb4..a5c2ccfa77a 100644 --- a/src/process.h +++ b/src/process.h @@ -63,6 +63,7 @@ namespace proc { std::string output; std::string image_path; std::string id; + std::string gamepad; // optional: "xone", "ds5", "switch", "x360", "ds4", or empty/"auto" = use global config bool elevated; bool auto_detach; bool wait_all; diff --git a/src/stream.cpp b/src/stream.cpp index 8b303ef24da..b3520e97da7 100644 --- a/src/stream.cpp +++ b/src/stream.cpp @@ -4,6 +4,7 @@ */ // standard includes +#include #include #include #include @@ -405,6 +406,7 @@ namespace stream { } control; std::uint32_t launch_session_id; + std::string gamepad_override; // per-app gamepad type when streaming this session; empty = use global config safe::mail_raw_t::event_t shutdown_event; safe::signal_t controlEnd; @@ -1961,7 +1963,7 @@ namespace stream { } int start(session_t &session, const std::string &addr_string) { - session.input = input::alloc(session.mail); + session.input = input::alloc(session.mail, session.gamepad_override); session.broadcast_ref = broadcast.ref(); if (!session.broadcast_ref) { @@ -2009,6 +2011,15 @@ namespace stream { session->shutdown_event = mail->event(mail::shutdown); session->launch_session_id = launch_session.id; + { + const auto &apps = proc::proc.get_apps(); + auto it = std::find_if(apps.begin(), apps.end(), [&](const proc::ctx_t &app) { + return app.id == std::to_string(launch_session.appid); + }); + if (it != apps.end() && !it->gamepad.empty() && it->gamepad != "auto") { + session->gamepad_override = it->gamepad; + } + } session->config = config; diff --git a/src_assets/common/assets/web/apps.html b/src_assets/common/assets/web/apps.html index c9d06f61f9c..3763786634a 100644 --- a/src_assets/common/assets/web/apps.html +++ b/src_assets/common/assets/web/apps.html @@ -243,6 +243,24 @@
{{ app.name }}
v-model="editForm['exit-timeout']" min="0" placeholder="5" />
{{ $t('apps.exit_timeout_desc') }}
+ +
+ + +
{{ $t('apps.gamepad_desc') }}
+
@@ -573,6 +591,7 @@ "auto-detach": true, "wait-all": true, "exit-timeout": 5, + gamepad: "", "prep-cmd": [], detached: [], "image-path": "" @@ -601,6 +620,9 @@ if (this.editForm["exit-timeout"] === undefined) { this.editForm["exit-timeout"] = 5; } + if (this.editForm.gamepad === undefined) { + this.editForm.gamepad = ""; + } this.showEditForm = true; }, showDeleteForm(id) { diff --git a/src_assets/common/assets/web/public/assets/locale/bg.json b/src_assets/common/assets/web/public/assets/locale/bg.json index 04ca9b7c857..6d4e46d3ce9 100644 --- a/src_assets/common/assets/web/public/assets/locale/bg.json +++ b/src_assets/common/assets/web/public/assets/locale/bg.json @@ -71,6 +71,9 @@ "env_xrandr_example": "Пример за автоматизиране на резолюцията чрез Xrandr:", "exit_timeout": "Време за изчакване при затваряне", "exit_timeout_desc": "Брой секунди за изчакване на всички процеси на приложението да завършат самостоятелно, когато бъде изпратена заявка за затваряне. Ако не е зададено, по подразбиране се изчаква до 5 секунди. Ако е зададена стойност 0, приложението ще бъде прекратено незабавно.", + "gamepad": "Тип контролер", + "gamepad_default": "Използване по подразбиране (от настройките за въвеждане)", + "gamepad_desc": "Презаписване на симулирания тип контролер за това приложение. При стрийминг на това приложение хостът ще използва този тип вместо глобалната настройка.", "find_cover": "Търсене на обложка", "global_prep_desc": "Включване/изключване на изпълнението на глобалните подготвителни команди за това приложение.", "global_prep_name": "Глобални команди за подготовка", diff --git a/src_assets/common/assets/web/public/assets/locale/cs.json b/src_assets/common/assets/web/public/assets/locale/cs.json index ec1f214a5dc..aaaf8bf4774 100644 --- a/src_assets/common/assets/web/public/assets/locale/cs.json +++ b/src_assets/common/assets/web/public/assets/locale/cs.json @@ -71,6 +71,9 @@ "env_xrandr_example": "Příklad - Xrandr pro automatizaci rozlišení:", "exit_timeout": "Časový limit pro ukončení", "exit_timeout_desc": "Počet sekund, po které se čeká na elegantní ukončení všech procesů aplikace, když je požadováno ukončení. Pokud není nastaveno, výchozí je čekat až 5 sekund. Je-li nastavena hodnota 0, aplikace bude ukončena okamžitě.", + "gamepad": "Typ ovladače", + "gamepad_default": "Použít výchozí (z nastavení vstupu)", + "gamepad_desc": "Přepsat typ emulovaného ovladače pro tuto aplikaci. Při streamování této aplikace bude hostitel používat tento typ místo globálního nastavení.", "find_cover": "Najít obal", "global_prep_desc": "Povolit/zakázat provádění globálních předběžných příkazů pro tuto aplikaci.", "global_prep_name": "Globální předběžné příkazy", diff --git a/src_assets/common/assets/web/public/assets/locale/de.json b/src_assets/common/assets/web/public/assets/locale/de.json index 361c37ce7ae..cd2de6791f1 100644 --- a/src_assets/common/assets/web/public/assets/locale/de.json +++ b/src_assets/common/assets/web/public/assets/locale/de.json @@ -71,6 +71,9 @@ "env_xrandr_example": "Beispiel - Xrandr für die Auflösungsautomatisierung:", "exit_timeout": "Beenden Timeout", "exit_timeout_desc": "Anzahl der Sekunden, die gewartet werden soll, bis alle Prozesse der Anwendung ordnungsgemäß beendet werden, wenn sie zum Beenden aufgefordert werden. Ist der Wert nicht festgelegt, wird standardmäßig bis zu 5 Sekunden gewartet. Bei einem Wert von 0 wird die Anwendung sofort beendet.", + "gamepad": "Controller-Typ", + "gamepad_default": "Standard verwenden (aus Eingabeeinstellungen)", + "gamepad_desc": "Überschreibt den emulierten Controller-Typ für diese App. Beim Streamen dieser App verwendet der Host diesen Typ anstelle der globalen Einstellung.", "find_cover": "Cover finden", "global_prep_desc": "Aktiviere/Deaktiviere die Ausführung von globalen Vorbereitungsbefehlen für diese Anwendung.", "global_prep_name": "Globale Vorbereitungsbefehle", diff --git a/src_assets/common/assets/web/public/assets/locale/en.json b/src_assets/common/assets/web/public/assets/locale/en.json index 75b1a9c74d5..8c677490fc3 100644 --- a/src_assets/common/assets/web/public/assets/locale/en.json +++ b/src_assets/common/assets/web/public/assets/locale/en.json @@ -72,6 +72,9 @@ "env_xrandr_example": "Example - Xrandr for Resolution Automation:", "exit_timeout": "Exit Timeout", "exit_timeout_desc": "Number of seconds to wait for all app processes to gracefully exit when requested to quit. If unset, the default is to wait up to 5 seconds. If set to 0, the app will be immediately terminated.", + "gamepad": "Controller Type", + "gamepad_default": "Use default (from Input settings)", + "gamepad_desc": "Override the emulated controller type for this app. When streaming this app, the host will use this type instead of the global setting.", "find_cover": "Find Cover", "global_prep_desc": "Enable/Disable the execution of Global Prep Commands for this application.", "global_prep_name": "Global Prep Commands", diff --git a/src_assets/common/assets/web/public/assets/locale/en_GB.json b/src_assets/common/assets/web/public/assets/locale/en_GB.json index 8ee9d5f37ed..0099ebf4a0c 100644 --- a/src_assets/common/assets/web/public/assets/locale/en_GB.json +++ b/src_assets/common/assets/web/public/assets/locale/en_GB.json @@ -71,6 +71,9 @@ "env_xrandr_example": "Example - Xrandr for Resolution Automation:", "exit_timeout": "Exit Timeout", "exit_timeout_desc": "Number of seconds to wait for all app processes to gracefully exit when requested to quit. If unset, the default is to wait up to 5 seconds. If set to zero or a negative value, the app will be immediately terminated.", + "gamepad": "Controller Type", + "gamepad_default": "Use default (from Input settings)", + "gamepad_desc": "Override the emulated controller type for this app. When streaming this app, the host will use this type instead of the global setting.", "find_cover": "Find Cover", "global_prep_desc": "Enable/Disable the execution of Global Prep Commands for this application.", "global_prep_name": "Global Prep Commands", diff --git a/src_assets/common/assets/web/public/assets/locale/en_US.json b/src_assets/common/assets/web/public/assets/locale/en_US.json index f2cc95b383c..b83d58d06b1 100644 --- a/src_assets/common/assets/web/public/assets/locale/en_US.json +++ b/src_assets/common/assets/web/public/assets/locale/en_US.json @@ -71,6 +71,9 @@ "env_xrandr_example": "Example - Xrandr for Resolution Automation:", "exit_timeout": "Exit Timeout", "exit_timeout_desc": "Number of seconds to wait for all app processes to gracefully exit when requested to quit. If unset, the default is to wait up to 5 seconds. If set to 0, the app will be immediately terminated.", + "gamepad": "Controller Type", + "gamepad_default": "Use default (from Input settings)", + "gamepad_desc": "Override the emulated controller type for this app. When streaming this app, the host will use this type instead of the global setting.", "find_cover": "Find Cover", "global_prep_desc": "Enable/Disable the execution of Global Prep Commands for this application.", "global_prep_name": "Global Prep Commands", diff --git a/src_assets/common/assets/web/public/assets/locale/es.json b/src_assets/common/assets/web/public/assets/locale/es.json index d5d0ca0a48f..16a6131ae73 100644 --- a/src_assets/common/assets/web/public/assets/locale/es.json +++ b/src_assets/common/assets/web/public/assets/locale/es.json @@ -71,6 +71,9 @@ "env_xrandr_example": "Ejemplo - Xrandr para Automatización de Resolución:", "exit_timeout": "Tiempo de espera de salida", "exit_timeout_desc": "Segundos a esperar para que todos los procesos de la aplicación se cierren de manera ordenada cuando se solicite cerrar. Si no se establece, el valor predeterminado es esperar hasta 5 segundos. Si se establece en 0, la aplicación se cerrará inmediatamente.", + "gamepad": "Tipo de controlador", + "gamepad_default": "Usar predeterminado (desde configuración de entrada)", + "gamepad_desc": "Anular el tipo de controlador emulado para esta aplicación. Al transmitir esta aplicación, el host usará este tipo en lugar de la configuración global.", "find_cover": "Encontrar portada", "global_prep_desc": "Activar/Desactivar la ejecución de Comandos de Preparación Global para esta aplicación.", "global_prep_name": "Comandos de preparación global", diff --git a/src_assets/common/assets/web/public/assets/locale/fr.json b/src_assets/common/assets/web/public/assets/locale/fr.json index d12b41f2660..f1c8d60cf71 100644 --- a/src_assets/common/assets/web/public/assets/locale/fr.json +++ b/src_assets/common/assets/web/public/assets/locale/fr.json @@ -71,6 +71,9 @@ "env_xrandr_example": "Exemple - Xrandr pour l'automatisation de la résolution :", "exit_timeout": "Délai de fermeture", "exit_timeout_desc": "Nombre de secondes d'attente pour que tous les processus de l'application se ferment gracieusement lorsque demandé à quitter. Si non défini, la valeur par défaut est d'attendre jusqu'à 5 secondes. Si elle est définie à zéro ou à une valeur négative, l'application sera immédiatement fermée.", + "gamepad": "Type de manette", + "gamepad_default": "Utiliser par défaut (depuis les paramètres d'entrée)", + "gamepad_desc": "Remplacer le type de manette émulée pour cette application. Lors du streaming de cette application, l'hôte utilisera ce type au lieu du paramètre global.", "find_cover": "Trouver une jaquette", "global_prep_desc": "Activer/désactiver l'exécution des commandes globales de préparation pour cette application.", "global_prep_name": "Commandes globales de préparation", diff --git a/src_assets/common/assets/web/public/assets/locale/hu.json b/src_assets/common/assets/web/public/assets/locale/hu.json index c694d156e40..3e16d154e38 100644 --- a/src_assets/common/assets/web/public/assets/locale/hu.json +++ b/src_assets/common/assets/web/public/assets/locale/hu.json @@ -71,6 +71,9 @@ "env_xrandr_example": "Példa - Xrandr a felbontás automatizálásához:", "exit_timeout": "Kilépési időkorlát", "exit_timeout_desc": "Ennyi másodpercet vár, hogy az alkalmazásfolyamatok szépen kilépjenek, mielőtt bezárásra kényszerítené őket. Ha nincs beállítva, ez alapértelmezett 5 másodperc. Ha 0-ra állítod, az alkalmazás azonnal leáll.", + "gamepad": "Vezérlő típusa", + "gamepad_default": "Alapértelmezett használata (a Bemenet beállításokból)", + "gamepad_desc": "A vezérlő típus felülírása ehhez az alkalmazáshoz. Az alkalmazás streamelésekor a gazdagép ezt a típust használja a globális beállítás helyett.", "find_cover": "Borító keresése", "global_prep_desc": "Globális előkészítő parancsok végrehajtásának engedélyezése/tiltása ehhez az alkalmazáshoz.", "global_prep_name": "Globális előkészítő parancsok", diff --git a/src_assets/common/assets/web/public/assets/locale/it.json b/src_assets/common/assets/web/public/assets/locale/it.json index 7f3cea03ea1..2bde64d0f87 100644 --- a/src_assets/common/assets/web/public/assets/locale/it.json +++ b/src_assets/common/assets/web/public/assets/locale/it.json @@ -71,6 +71,9 @@ "env_xrandr_example": "Esempio - Xrandr per l'automazione della risoluzione:", "exit_timeout": "Timeout Uscita", "exit_timeout_desc": "Numero di secondi in cui attendere che tutti i processi delle app si chiudano correttamente quando richiesto. Se disattivato, il valore predefinito è di 5 secondi. Se viene impostato a 0 o a un valore negativo, l'app verrà immediatamente terminata.", + "gamepad": "Tipo di controller", + "gamepad_default": "Usa predefinito (dalle impostazioni di input)", + "gamepad_desc": "Sovrascrive il tipo di controller emulato per questa app. Durante lo streaming di questa app, l'host utilizzerà questo tipo invece dell'impostazione globale.", "find_cover": "Trova Copertina", "global_prep_desc": "Abilita/Disabilita l'esecuzione dei Comandi di Preparazione Globali per questa applicazione.", "global_prep_name": "Comandi di Preparazione Globali", diff --git a/src_assets/common/assets/web/public/assets/locale/ja.json b/src_assets/common/assets/web/public/assets/locale/ja.json index 608e372d621..346ae3fe0d2 100644 --- a/src_assets/common/assets/web/public/assets/locale/ja.json +++ b/src_assets/common/assets/web/public/assets/locale/ja.json @@ -71,6 +71,9 @@ "env_xrandr_example": "例 - 解像度自動化のための Xrandr:", "exit_timeout": "終了タイムアウト", "exit_timeout_desc": "終了要求時にすべてのアプリプロセスが正常に終了するまで待機する秒数。 設定されていない場合、デフォルトでは5秒まで待機します。ゼロまたはマイナス値に設定されている場合、アプリは直ちに終了します。", + "gamepad": "コントローラータイプ", + "gamepad_default": "デフォルトを使用(入力設定から)", + "gamepad_desc": "このアプリのエミュレートされたコントローラータイプを上書きします。このアプリをストリーミングする際、ホストはグローバル設定の代わりにこのタイプを使用します。", "find_cover": "カバーを見つける", "global_prep_desc": "このアプリケーションのグローバル準備コマンドの実行を有効/無効にする。", "global_prep_name": "グローバル準備コマンド", diff --git a/src_assets/common/assets/web/public/assets/locale/ko.json b/src_assets/common/assets/web/public/assets/locale/ko.json index 9b9babe7547..4b753c5667c 100644 --- a/src_assets/common/assets/web/public/assets/locale/ko.json +++ b/src_assets/common/assets/web/public/assets/locale/ko.json @@ -71,6 +71,9 @@ "env_xrandr_example": "예시 - 해상도 자동화를 위한 Xrandr:", "exit_timeout": "종료 시간 초과", "exit_timeout_desc": "종료 요청 시 모든 앱 프로세스가 정상적으로 종료될 때까지 기다릴 시간(초)입니다. 설정하지 않으면 기본값은 최대 5초까지 대기하는 것입니다. 0 또는 음수 값으로 설정하면 앱이 즉시 종료됩니다.", + "gamepad": "컨트롤러 유형", + "gamepad_default": "기본값 사용 (입력 설정에서)", + "gamepad_desc": "이 앱에 대해 에뮬레이션된 컨트롤러 유형을 재정의합니다. 이 앱을 스트리밍할 때 호스트는 전역 설정 대신 이 유형을 사용합니다.", "find_cover": "표지 찾기", "global_prep_desc": "이 애플리케이션에 대한 글로벌 준비 명령 실행을 활성화/비활성화합니다.", "global_prep_name": "글로벌 준비 명령", diff --git a/src_assets/common/assets/web/public/assets/locale/pl.json b/src_assets/common/assets/web/public/assets/locale/pl.json index d64604d0147..c73d71801e6 100644 --- a/src_assets/common/assets/web/public/assets/locale/pl.json +++ b/src_assets/common/assets/web/public/assets/locale/pl.json @@ -71,6 +71,9 @@ "env_xrandr_example": "Przykład - Xrandr dla automatycznej rozdzielczości:", "exit_timeout": "Limit czasu wyjścia", "exit_timeout_desc": "Liczba sekund oczekiwania, aż wszystkie procesy aplikacji zakończą działanie po żądaniu zakończenia. Jeśli nie jest ustawiona, domyślnie odczekiwane jest do 5 sekund. Jeśli ustawiona na 0 lub wartość ujemną, aplikacja zostanie natychmiast zakończona.", + "gamepad": "Typ kontrolera", + "gamepad_default": "Użyj domyślnego (z ustawień wejścia)", + "gamepad_desc": "Zastąp typ emulowanego kontrolera dla tej aplikacji. Podczas streamowania tej aplikacji host użyje tego typu zamiast ustawienia globalnego.", "find_cover": "Znajdź okładkę", "global_prep_desc": "Włączenie/wyłączenie wykonywania globalnych poleceń przygotowawczych dla tej aplikacji.", "global_prep_name": "Globalne polecenia przygotowawcze", diff --git a/src_assets/common/assets/web/public/assets/locale/pt.json b/src_assets/common/assets/web/public/assets/locale/pt.json index 831bc28303c..f65d28b081a 100644 --- a/src_assets/common/assets/web/public/assets/locale/pt.json +++ b/src_assets/common/assets/web/public/assets/locale/pt.json @@ -71,6 +71,9 @@ "env_xrandr_example": "Exemplo - Xrandr para Automação de Resolução:", "exit_timeout": "Tempo Esgotado", "exit_timeout_desc": "Número de segundos para esperar que todos os processos do aplicativo saiam graciosamente quando solicitado a sair. Se não definido, o padrão é esperar até 5 segundos. Se definido como zero ou negativo, o aplicativo será encerrado imediatamente.", + "gamepad": "Tipo de controlador", + "gamepad_default": "Usar predefinido (das definições de entrada)", + "gamepad_desc": "Substituir o tipo de controlador emulado para esta aplicação. Ao transmitir esta aplicação, o anfitrião utilizará este tipo em vez da definição global.", "find_cover": "Encontrar capa", "global_prep_desc": "Ativar/desativar a execução de comandos de preparação global para este aplicativo.", "global_prep_name": "Comandos de Preparação Global", diff --git a/src_assets/common/assets/web/public/assets/locale/pt_BR.json b/src_assets/common/assets/web/public/assets/locale/pt_BR.json index 02938627b9e..a831e38cdd7 100644 --- a/src_assets/common/assets/web/public/assets/locale/pt_BR.json +++ b/src_assets/common/assets/web/public/assets/locale/pt_BR.json @@ -71,6 +71,9 @@ "env_xrandr_example": "Exemplo - Xrandr para automação de resolução:", "exit_timeout": "Tempo limite de saída", "exit_timeout_desc": "Número de segundos para aguardar que todos os processos do aplicativo saiam graciosamente quando solicitado a sair. Se não for definido, o padrão é aguardar até 5 segundos. Se for definido como zero ou um valor negativo, o aplicativo será encerrado imediatamente.", + "gamepad": "Tipo de controle", + "gamepad_default": "Usar padrão (das configurações de entrada)", + "gamepad_desc": "Substituir o tipo de controle emulado para este aplicativo. Ao transmitir este aplicativo, o host usará este tipo em vez da configuração global.", "find_cover": "Encontrar cobertura", "global_prep_desc": "Ativar/desativar a execução de comandos de preparação global para esse aplicativo.", "global_prep_name": "Comandos globais de preparação", diff --git a/src_assets/common/assets/web/public/assets/locale/ru.json b/src_assets/common/assets/web/public/assets/locale/ru.json index cb5304ea576..682be3a3bf2 100644 --- a/src_assets/common/assets/web/public/assets/locale/ru.json +++ b/src_assets/common/assets/web/public/assets/locale/ru.json @@ -71,6 +71,9 @@ "env_xrandr_example": "Пример - Xrandr для автоматизации решения:", "exit_timeout": "Ожидание завершения", "exit_timeout_desc": "Сколько секунд ожидать корректного завершения всех процессов приложения при закрытии. Если не указано, то по умолчанию, ожидание длится 5 секунд. Если указан нуль или отрицательное значение, приложение будет прекращено незамедлительно.", + "gamepad": "Тип контроллера", + "gamepad_default": "Использовать по умолчанию (из настроек ввода)", + "gamepad_desc": "Переопределить тип эмулируемого контроллера для этого приложения. При потоковой передаче этого приложения хост будет использовать этот тип вместо глобальной настройки.", "find_cover": "Найти обложку", "global_prep_desc": "Включить/отключить исполнение глобальных команд подготовки для этого приложения.", "global_prep_name": "Глобальные команды", diff --git a/src_assets/common/assets/web/public/assets/locale/sv.json b/src_assets/common/assets/web/public/assets/locale/sv.json index 12771acc9fd..723688d4be2 100644 --- a/src_assets/common/assets/web/public/assets/locale/sv.json +++ b/src_assets/common/assets/web/public/assets/locale/sv.json @@ -71,6 +71,9 @@ "env_xrandr_example": "Exempel - Xrandr för upplösnings automation:", "exit_timeout": "Avbryt Timeout", "exit_timeout_desc": "Antalet sekunder i väntan på att alla app-processer ska avslutas graciöst när det krävs för att avsluta. Om du inte har angett detta är standardvärdet att vänta upp till 5 sekunder. Om satt till noll eller ett negativt värde kommer appen att avslutas omedelbart.", + "gamepad": "Kontrolltyp", + "gamepad_default": "Använd standard (från Inmatningsinställningar)", + "gamepad_desc": "Åsidosätt den emulerade kontrolltypen för denna app. När du strömmar denna app kommer värden att använda denna typ i stället för den globala inställningen.", "find_cover": "Hitta omslag", "global_prep_desc": "Aktivera/Inaktivera exekvering av globala prep kommandon för denna applikation.", "global_prep_name": "Globala prep kommandon", diff --git a/src_assets/common/assets/web/public/assets/locale/tr.json b/src_assets/common/assets/web/public/assets/locale/tr.json index e70a082028e..664d3721922 100644 --- a/src_assets/common/assets/web/public/assets/locale/tr.json +++ b/src_assets/common/assets/web/public/assets/locale/tr.json @@ -71,6 +71,9 @@ "env_xrandr_example": "Örnek - Çözüm Otomasyonu için Xrandr:", "exit_timeout": "Çıkış Zaman Aşımı", "exit_timeout_desc": "Uygulama işlemlerinin kapatılma isteği gönderildiğinde zarif bir şekilde çıkmaları için beklenilecek saniye sayısı. Ayarlanmadığı takdirde, varsayılan olarak 5 saniyeye kadar beklenir. Sıfır veya negatif bir değer ayarlandığında, uygulama anında sonlandırılacaktır.", + "gamepad": "Kontrolcü Türü", + "gamepad_default": "Varsayılanı kullan (Giriş ayarlarından)", + "gamepad_desc": "Bu uygulama için taklit edilen kontrolcü türünü geçersiz kıl. Bu uygulama akışı yapılırken, ana bilgisayar genel ayar yerine bu türü kullanacaktır.", "find_cover": "Kapak Resmi Bul", "global_prep_desc": "Bu uygulama için Global Hazırlık Komutlarının yürütülmesini etkinleştirin/devre dışı bırakın.", "global_prep_name": "Global Hazırlık Komutları", diff --git a/src_assets/common/assets/web/public/assets/locale/uk.json b/src_assets/common/assets/web/public/assets/locale/uk.json index b5d6a5f79bf..1ea76dd9cbd 100644 --- a/src_assets/common/assets/web/public/assets/locale/uk.json +++ b/src_assets/common/assets/web/public/assets/locale/uk.json @@ -71,6 +71,9 @@ "env_xrandr_example": "Приклад - Xrandr для Автоматизації Роздільної Здатності:", "exit_timeout": "Тайм-аут виходу", "exit_timeout_desc": "Кількість секунд, протягом яких всі процеси програми будуть примусово завершені після запиту на вихід. Якщо значення не встановлено, за замовчуванням програма буде чекати до 5 секунд. Якщо встановлено на нуль або від'ємне значення, програму буде негайно завершено.", + "gamepad": "Тип контролера", + "gamepad_default": "Використовувати за замовчуванням (з налаштувань введення)", + "gamepad_desc": "Перевизначити тип емульованого контролера для цієї програми. Під час стрімінгу цієї програми хост використовуватиме цей тип замість глобального налаштування.", "find_cover": "Знайти обкладинку", "global_prep_desc": "Ввімкнути/Вимкнути виконання глобальних команд Prep для цього застосунку.", "global_prep_name": "Глобальні команди підготовки", diff --git a/src_assets/common/assets/web/public/assets/locale/vi.json b/src_assets/common/assets/web/public/assets/locale/vi.json index ae10ef8ab00..d10c365443f 100644 --- a/src_assets/common/assets/web/public/assets/locale/vi.json +++ b/src_assets/common/assets/web/public/assets/locale/vi.json @@ -71,6 +71,9 @@ "env_xrandr_example": "Ví dụ - Xrandr cho độ phân giải động:", "exit_timeout": "Thời gian chờ thoát", "exit_timeout_desc": "Số giây chờ đợi cho tất cả các tiến trình của ứng dụng thoát ra một cách trơn tru khi được yêu cầu thoát. Nếu không được thiết lập, giá trị mặc định là chờ tối đa 5 giây. Nếu được thiết lập thành 0, ứng dụng sẽ bị kết thúc ngay lập tức.", + "gamepad": "Loại bộ điều khiển", + "gamepad_default": "Dùng mặc định (từ cài đặt Đầu vào)", + "gamepad_desc": "Ghi đè loại bộ điều khiển mô phỏng cho ứng dụng này. Khi phát trực tiếp ứng dụng này, máy chủ sẽ dùng loại này thay cho cài đặt toàn cục.", "find_cover": "Tìm chỗ trú ẩn", "global_prep_desc": "Bật/Tắt việc thực thi các lệnh chuẩn bị toàn cầu cho ứng dụng này.", "global_prep_name": "Lệnh chuẩn bị toàn cầu", diff --git a/src_assets/common/assets/web/public/assets/locale/zh.json b/src_assets/common/assets/web/public/assets/locale/zh.json index 432ff807df5..efea65f0f15 100644 --- a/src_assets/common/assets/web/public/assets/locale/zh.json +++ b/src_assets/common/assets/web/public/assets/locale/zh.json @@ -71,6 +71,9 @@ "env_xrandr_example": "示例 - Xrandr 用于分辨率自动化:", "exit_timeout": "退出超时", "exit_timeout_desc": "请求退出时,等待所有应用进程正常关闭的秒数。 如果未设置,默认等待5秒钟。如果设置为零或负值,应用程序将立即终止。", + "gamepad": "控制器类型", + "gamepad_default": "使用默认(来自输入设置)", + "gamepad_desc": "为此应用覆盖模拟的控制器类型。流式传输此应用时,主机将使用此类型而非全局设置。", "find_cover": "查找封面", "global_prep_desc": "启用/禁用此应用程序的全局预览命令。", "global_prep_name": "全局预处理命令", diff --git a/src_assets/common/assets/web/public/assets/locale/zh_TW.json b/src_assets/common/assets/web/public/assets/locale/zh_TW.json index 28534675708..988c4e65d41 100644 --- a/src_assets/common/assets/web/public/assets/locale/zh_TW.json +++ b/src_assets/common/assets/web/public/assets/locale/zh_TW.json @@ -71,6 +71,9 @@ "env_xrandr_example": "範例 - 用於解析度自動化的 Xrandr:", "exit_timeout": "結束逾時設定", "exit_timeout_desc": "當要求結束時,等待所有應用程式處理程序正常結束的秒數。如果未設定,預設會等待最多 5 秒。如果設為 0,應用程式將立即終止。", + "gamepad": "控制器類型", + "gamepad_default": "使用預設(來自輸入設定)", + "gamepad_desc": "覆寫此應用程式的模擬控制器類型。串流此應用程式時,主機將使用此類型而非全域設定。", "find_cover": "尋找封面圖片", "global_prep_desc": "啟用/停用此應用程式的全域準備指令執行。", "global_prep_name": "全域準備指令", From 4a8f659092e2265bd7205cdd42b10230746a3ebf Mon Sep 17 00:00:00 2001 From: edgar-simao <23741809+edgar-simao@users.noreply.github.com> Date: Tue, 17 Mar 2026 01:35:04 +0000 Subject: [PATCH 2/3] undoing locale changes --- src_assets/common/assets/web/public/assets/locale/bg.json | 3 --- src_assets/common/assets/web/public/assets/locale/cs.json | 3 --- src_assets/common/assets/web/public/assets/locale/de.json | 3 --- src_assets/common/assets/web/public/assets/locale/en_GB.json | 3 --- src_assets/common/assets/web/public/assets/locale/en_US.json | 3 --- src_assets/common/assets/web/public/assets/locale/es.json | 3 --- src_assets/common/assets/web/public/assets/locale/fr.json | 3 --- src_assets/common/assets/web/public/assets/locale/hu.json | 3 --- src_assets/common/assets/web/public/assets/locale/it.json | 3 --- src_assets/common/assets/web/public/assets/locale/ja.json | 3 --- src_assets/common/assets/web/public/assets/locale/ko.json | 3 --- src_assets/common/assets/web/public/assets/locale/pl.json | 3 --- src_assets/common/assets/web/public/assets/locale/pt.json | 3 --- src_assets/common/assets/web/public/assets/locale/pt_BR.json | 3 --- src_assets/common/assets/web/public/assets/locale/ru.json | 3 --- src_assets/common/assets/web/public/assets/locale/sv.json | 3 --- src_assets/common/assets/web/public/assets/locale/tr.json | 3 --- src_assets/common/assets/web/public/assets/locale/uk.json | 3 --- src_assets/common/assets/web/public/assets/locale/vi.json | 3 --- src_assets/common/assets/web/public/assets/locale/zh.json | 3 --- src_assets/common/assets/web/public/assets/locale/zh_TW.json | 3 --- 21 files changed, 63 deletions(-) diff --git a/src_assets/common/assets/web/public/assets/locale/bg.json b/src_assets/common/assets/web/public/assets/locale/bg.json index 6d4e46d3ce9..04ca9b7c857 100644 --- a/src_assets/common/assets/web/public/assets/locale/bg.json +++ b/src_assets/common/assets/web/public/assets/locale/bg.json @@ -71,9 +71,6 @@ "env_xrandr_example": "Пример за автоматизиране на резолюцията чрез Xrandr:", "exit_timeout": "Време за изчакване при затваряне", "exit_timeout_desc": "Брой секунди за изчакване на всички процеси на приложението да завършат самостоятелно, когато бъде изпратена заявка за затваряне. Ако не е зададено, по подразбиране се изчаква до 5 секунди. Ако е зададена стойност 0, приложението ще бъде прекратено незабавно.", - "gamepad": "Тип контролер", - "gamepad_default": "Използване по подразбиране (от настройките за въвеждане)", - "gamepad_desc": "Презаписване на симулирания тип контролер за това приложение. При стрийминг на това приложение хостът ще използва този тип вместо глобалната настройка.", "find_cover": "Търсене на обложка", "global_prep_desc": "Включване/изключване на изпълнението на глобалните подготвителни команди за това приложение.", "global_prep_name": "Глобални команди за подготовка", diff --git a/src_assets/common/assets/web/public/assets/locale/cs.json b/src_assets/common/assets/web/public/assets/locale/cs.json index aaaf8bf4774..ec1f214a5dc 100644 --- a/src_assets/common/assets/web/public/assets/locale/cs.json +++ b/src_assets/common/assets/web/public/assets/locale/cs.json @@ -71,9 +71,6 @@ "env_xrandr_example": "Příklad - Xrandr pro automatizaci rozlišení:", "exit_timeout": "Časový limit pro ukončení", "exit_timeout_desc": "Počet sekund, po které se čeká na elegantní ukončení všech procesů aplikace, když je požadováno ukončení. Pokud není nastaveno, výchozí je čekat až 5 sekund. Je-li nastavena hodnota 0, aplikace bude ukončena okamžitě.", - "gamepad": "Typ ovladače", - "gamepad_default": "Použít výchozí (z nastavení vstupu)", - "gamepad_desc": "Přepsat typ emulovaného ovladače pro tuto aplikaci. Při streamování této aplikace bude hostitel používat tento typ místo globálního nastavení.", "find_cover": "Najít obal", "global_prep_desc": "Povolit/zakázat provádění globálních předběžných příkazů pro tuto aplikaci.", "global_prep_name": "Globální předběžné příkazy", diff --git a/src_assets/common/assets/web/public/assets/locale/de.json b/src_assets/common/assets/web/public/assets/locale/de.json index cd2de6791f1..361c37ce7ae 100644 --- a/src_assets/common/assets/web/public/assets/locale/de.json +++ b/src_assets/common/assets/web/public/assets/locale/de.json @@ -71,9 +71,6 @@ "env_xrandr_example": "Beispiel - Xrandr für die Auflösungsautomatisierung:", "exit_timeout": "Beenden Timeout", "exit_timeout_desc": "Anzahl der Sekunden, die gewartet werden soll, bis alle Prozesse der Anwendung ordnungsgemäß beendet werden, wenn sie zum Beenden aufgefordert werden. Ist der Wert nicht festgelegt, wird standardmäßig bis zu 5 Sekunden gewartet. Bei einem Wert von 0 wird die Anwendung sofort beendet.", - "gamepad": "Controller-Typ", - "gamepad_default": "Standard verwenden (aus Eingabeeinstellungen)", - "gamepad_desc": "Überschreibt den emulierten Controller-Typ für diese App. Beim Streamen dieser App verwendet der Host diesen Typ anstelle der globalen Einstellung.", "find_cover": "Cover finden", "global_prep_desc": "Aktiviere/Deaktiviere die Ausführung von globalen Vorbereitungsbefehlen für diese Anwendung.", "global_prep_name": "Globale Vorbereitungsbefehle", diff --git a/src_assets/common/assets/web/public/assets/locale/en_GB.json b/src_assets/common/assets/web/public/assets/locale/en_GB.json index 0099ebf4a0c..8ee9d5f37ed 100644 --- a/src_assets/common/assets/web/public/assets/locale/en_GB.json +++ b/src_assets/common/assets/web/public/assets/locale/en_GB.json @@ -71,9 +71,6 @@ "env_xrandr_example": "Example - Xrandr for Resolution Automation:", "exit_timeout": "Exit Timeout", "exit_timeout_desc": "Number of seconds to wait for all app processes to gracefully exit when requested to quit. If unset, the default is to wait up to 5 seconds. If set to zero or a negative value, the app will be immediately terminated.", - "gamepad": "Controller Type", - "gamepad_default": "Use default (from Input settings)", - "gamepad_desc": "Override the emulated controller type for this app. When streaming this app, the host will use this type instead of the global setting.", "find_cover": "Find Cover", "global_prep_desc": "Enable/Disable the execution of Global Prep Commands for this application.", "global_prep_name": "Global Prep Commands", diff --git a/src_assets/common/assets/web/public/assets/locale/en_US.json b/src_assets/common/assets/web/public/assets/locale/en_US.json index b83d58d06b1..f2cc95b383c 100644 --- a/src_assets/common/assets/web/public/assets/locale/en_US.json +++ b/src_assets/common/assets/web/public/assets/locale/en_US.json @@ -71,9 +71,6 @@ "env_xrandr_example": "Example - Xrandr for Resolution Automation:", "exit_timeout": "Exit Timeout", "exit_timeout_desc": "Number of seconds to wait for all app processes to gracefully exit when requested to quit. If unset, the default is to wait up to 5 seconds. If set to 0, the app will be immediately terminated.", - "gamepad": "Controller Type", - "gamepad_default": "Use default (from Input settings)", - "gamepad_desc": "Override the emulated controller type for this app. When streaming this app, the host will use this type instead of the global setting.", "find_cover": "Find Cover", "global_prep_desc": "Enable/Disable the execution of Global Prep Commands for this application.", "global_prep_name": "Global Prep Commands", diff --git a/src_assets/common/assets/web/public/assets/locale/es.json b/src_assets/common/assets/web/public/assets/locale/es.json index 16a6131ae73..d5d0ca0a48f 100644 --- a/src_assets/common/assets/web/public/assets/locale/es.json +++ b/src_assets/common/assets/web/public/assets/locale/es.json @@ -71,9 +71,6 @@ "env_xrandr_example": "Ejemplo - Xrandr para Automatización de Resolución:", "exit_timeout": "Tiempo de espera de salida", "exit_timeout_desc": "Segundos a esperar para que todos los procesos de la aplicación se cierren de manera ordenada cuando se solicite cerrar. Si no se establece, el valor predeterminado es esperar hasta 5 segundos. Si se establece en 0, la aplicación se cerrará inmediatamente.", - "gamepad": "Tipo de controlador", - "gamepad_default": "Usar predeterminado (desde configuración de entrada)", - "gamepad_desc": "Anular el tipo de controlador emulado para esta aplicación. Al transmitir esta aplicación, el host usará este tipo en lugar de la configuración global.", "find_cover": "Encontrar portada", "global_prep_desc": "Activar/Desactivar la ejecución de Comandos de Preparación Global para esta aplicación.", "global_prep_name": "Comandos de preparación global", diff --git a/src_assets/common/assets/web/public/assets/locale/fr.json b/src_assets/common/assets/web/public/assets/locale/fr.json index f1c8d60cf71..d12b41f2660 100644 --- a/src_assets/common/assets/web/public/assets/locale/fr.json +++ b/src_assets/common/assets/web/public/assets/locale/fr.json @@ -71,9 +71,6 @@ "env_xrandr_example": "Exemple - Xrandr pour l'automatisation de la résolution :", "exit_timeout": "Délai de fermeture", "exit_timeout_desc": "Nombre de secondes d'attente pour que tous les processus de l'application se ferment gracieusement lorsque demandé à quitter. Si non défini, la valeur par défaut est d'attendre jusqu'à 5 secondes. Si elle est définie à zéro ou à une valeur négative, l'application sera immédiatement fermée.", - "gamepad": "Type de manette", - "gamepad_default": "Utiliser par défaut (depuis les paramètres d'entrée)", - "gamepad_desc": "Remplacer le type de manette émulée pour cette application. Lors du streaming de cette application, l'hôte utilisera ce type au lieu du paramètre global.", "find_cover": "Trouver une jaquette", "global_prep_desc": "Activer/désactiver l'exécution des commandes globales de préparation pour cette application.", "global_prep_name": "Commandes globales de préparation", diff --git a/src_assets/common/assets/web/public/assets/locale/hu.json b/src_assets/common/assets/web/public/assets/locale/hu.json index 3e16d154e38..c694d156e40 100644 --- a/src_assets/common/assets/web/public/assets/locale/hu.json +++ b/src_assets/common/assets/web/public/assets/locale/hu.json @@ -71,9 +71,6 @@ "env_xrandr_example": "Példa - Xrandr a felbontás automatizálásához:", "exit_timeout": "Kilépési időkorlát", "exit_timeout_desc": "Ennyi másodpercet vár, hogy az alkalmazásfolyamatok szépen kilépjenek, mielőtt bezárásra kényszerítené őket. Ha nincs beállítva, ez alapértelmezett 5 másodperc. Ha 0-ra állítod, az alkalmazás azonnal leáll.", - "gamepad": "Vezérlő típusa", - "gamepad_default": "Alapértelmezett használata (a Bemenet beállításokból)", - "gamepad_desc": "A vezérlő típus felülírása ehhez az alkalmazáshoz. Az alkalmazás streamelésekor a gazdagép ezt a típust használja a globális beállítás helyett.", "find_cover": "Borító keresése", "global_prep_desc": "Globális előkészítő parancsok végrehajtásának engedélyezése/tiltása ehhez az alkalmazáshoz.", "global_prep_name": "Globális előkészítő parancsok", diff --git a/src_assets/common/assets/web/public/assets/locale/it.json b/src_assets/common/assets/web/public/assets/locale/it.json index 2bde64d0f87..7f3cea03ea1 100644 --- a/src_assets/common/assets/web/public/assets/locale/it.json +++ b/src_assets/common/assets/web/public/assets/locale/it.json @@ -71,9 +71,6 @@ "env_xrandr_example": "Esempio - Xrandr per l'automazione della risoluzione:", "exit_timeout": "Timeout Uscita", "exit_timeout_desc": "Numero di secondi in cui attendere che tutti i processi delle app si chiudano correttamente quando richiesto. Se disattivato, il valore predefinito è di 5 secondi. Se viene impostato a 0 o a un valore negativo, l'app verrà immediatamente terminata.", - "gamepad": "Tipo di controller", - "gamepad_default": "Usa predefinito (dalle impostazioni di input)", - "gamepad_desc": "Sovrascrive il tipo di controller emulato per questa app. Durante lo streaming di questa app, l'host utilizzerà questo tipo invece dell'impostazione globale.", "find_cover": "Trova Copertina", "global_prep_desc": "Abilita/Disabilita l'esecuzione dei Comandi di Preparazione Globali per questa applicazione.", "global_prep_name": "Comandi di Preparazione Globali", diff --git a/src_assets/common/assets/web/public/assets/locale/ja.json b/src_assets/common/assets/web/public/assets/locale/ja.json index 346ae3fe0d2..608e372d621 100644 --- a/src_assets/common/assets/web/public/assets/locale/ja.json +++ b/src_assets/common/assets/web/public/assets/locale/ja.json @@ -71,9 +71,6 @@ "env_xrandr_example": "例 - 解像度自動化のための Xrandr:", "exit_timeout": "終了タイムアウト", "exit_timeout_desc": "終了要求時にすべてのアプリプロセスが正常に終了するまで待機する秒数。 設定されていない場合、デフォルトでは5秒まで待機します。ゼロまたはマイナス値に設定されている場合、アプリは直ちに終了します。", - "gamepad": "コントローラータイプ", - "gamepad_default": "デフォルトを使用(入力設定から)", - "gamepad_desc": "このアプリのエミュレートされたコントローラータイプを上書きします。このアプリをストリーミングする際、ホストはグローバル設定の代わりにこのタイプを使用します。", "find_cover": "カバーを見つける", "global_prep_desc": "このアプリケーションのグローバル準備コマンドの実行を有効/無効にする。", "global_prep_name": "グローバル準備コマンド", diff --git a/src_assets/common/assets/web/public/assets/locale/ko.json b/src_assets/common/assets/web/public/assets/locale/ko.json index 4b753c5667c..9b9babe7547 100644 --- a/src_assets/common/assets/web/public/assets/locale/ko.json +++ b/src_assets/common/assets/web/public/assets/locale/ko.json @@ -71,9 +71,6 @@ "env_xrandr_example": "예시 - 해상도 자동화를 위한 Xrandr:", "exit_timeout": "종료 시간 초과", "exit_timeout_desc": "종료 요청 시 모든 앱 프로세스가 정상적으로 종료될 때까지 기다릴 시간(초)입니다. 설정하지 않으면 기본값은 최대 5초까지 대기하는 것입니다. 0 또는 음수 값으로 설정하면 앱이 즉시 종료됩니다.", - "gamepad": "컨트롤러 유형", - "gamepad_default": "기본값 사용 (입력 설정에서)", - "gamepad_desc": "이 앱에 대해 에뮬레이션된 컨트롤러 유형을 재정의합니다. 이 앱을 스트리밍할 때 호스트는 전역 설정 대신 이 유형을 사용합니다.", "find_cover": "표지 찾기", "global_prep_desc": "이 애플리케이션에 대한 글로벌 준비 명령 실행을 활성화/비활성화합니다.", "global_prep_name": "글로벌 준비 명령", diff --git a/src_assets/common/assets/web/public/assets/locale/pl.json b/src_assets/common/assets/web/public/assets/locale/pl.json index c73d71801e6..d64604d0147 100644 --- a/src_assets/common/assets/web/public/assets/locale/pl.json +++ b/src_assets/common/assets/web/public/assets/locale/pl.json @@ -71,9 +71,6 @@ "env_xrandr_example": "Przykład - Xrandr dla automatycznej rozdzielczości:", "exit_timeout": "Limit czasu wyjścia", "exit_timeout_desc": "Liczba sekund oczekiwania, aż wszystkie procesy aplikacji zakończą działanie po żądaniu zakończenia. Jeśli nie jest ustawiona, domyślnie odczekiwane jest do 5 sekund. Jeśli ustawiona na 0 lub wartość ujemną, aplikacja zostanie natychmiast zakończona.", - "gamepad": "Typ kontrolera", - "gamepad_default": "Użyj domyślnego (z ustawień wejścia)", - "gamepad_desc": "Zastąp typ emulowanego kontrolera dla tej aplikacji. Podczas streamowania tej aplikacji host użyje tego typu zamiast ustawienia globalnego.", "find_cover": "Znajdź okładkę", "global_prep_desc": "Włączenie/wyłączenie wykonywania globalnych poleceń przygotowawczych dla tej aplikacji.", "global_prep_name": "Globalne polecenia przygotowawcze", diff --git a/src_assets/common/assets/web/public/assets/locale/pt.json b/src_assets/common/assets/web/public/assets/locale/pt.json index f65d28b081a..831bc28303c 100644 --- a/src_assets/common/assets/web/public/assets/locale/pt.json +++ b/src_assets/common/assets/web/public/assets/locale/pt.json @@ -71,9 +71,6 @@ "env_xrandr_example": "Exemplo - Xrandr para Automação de Resolução:", "exit_timeout": "Tempo Esgotado", "exit_timeout_desc": "Número de segundos para esperar que todos os processos do aplicativo saiam graciosamente quando solicitado a sair. Se não definido, o padrão é esperar até 5 segundos. Se definido como zero ou negativo, o aplicativo será encerrado imediatamente.", - "gamepad": "Tipo de controlador", - "gamepad_default": "Usar predefinido (das definições de entrada)", - "gamepad_desc": "Substituir o tipo de controlador emulado para esta aplicação. Ao transmitir esta aplicação, o anfitrião utilizará este tipo em vez da definição global.", "find_cover": "Encontrar capa", "global_prep_desc": "Ativar/desativar a execução de comandos de preparação global para este aplicativo.", "global_prep_name": "Comandos de Preparação Global", diff --git a/src_assets/common/assets/web/public/assets/locale/pt_BR.json b/src_assets/common/assets/web/public/assets/locale/pt_BR.json index a831e38cdd7..02938627b9e 100644 --- a/src_assets/common/assets/web/public/assets/locale/pt_BR.json +++ b/src_assets/common/assets/web/public/assets/locale/pt_BR.json @@ -71,9 +71,6 @@ "env_xrandr_example": "Exemplo - Xrandr para automação de resolução:", "exit_timeout": "Tempo limite de saída", "exit_timeout_desc": "Número de segundos para aguardar que todos os processos do aplicativo saiam graciosamente quando solicitado a sair. Se não for definido, o padrão é aguardar até 5 segundos. Se for definido como zero ou um valor negativo, o aplicativo será encerrado imediatamente.", - "gamepad": "Tipo de controle", - "gamepad_default": "Usar padrão (das configurações de entrada)", - "gamepad_desc": "Substituir o tipo de controle emulado para este aplicativo. Ao transmitir este aplicativo, o host usará este tipo em vez da configuração global.", "find_cover": "Encontrar cobertura", "global_prep_desc": "Ativar/desativar a execução de comandos de preparação global para esse aplicativo.", "global_prep_name": "Comandos globais de preparação", diff --git a/src_assets/common/assets/web/public/assets/locale/ru.json b/src_assets/common/assets/web/public/assets/locale/ru.json index 682be3a3bf2..cb5304ea576 100644 --- a/src_assets/common/assets/web/public/assets/locale/ru.json +++ b/src_assets/common/assets/web/public/assets/locale/ru.json @@ -71,9 +71,6 @@ "env_xrandr_example": "Пример - Xrandr для автоматизации решения:", "exit_timeout": "Ожидание завершения", "exit_timeout_desc": "Сколько секунд ожидать корректного завершения всех процессов приложения при закрытии. Если не указано, то по умолчанию, ожидание длится 5 секунд. Если указан нуль или отрицательное значение, приложение будет прекращено незамедлительно.", - "gamepad": "Тип контроллера", - "gamepad_default": "Использовать по умолчанию (из настроек ввода)", - "gamepad_desc": "Переопределить тип эмулируемого контроллера для этого приложения. При потоковой передаче этого приложения хост будет использовать этот тип вместо глобальной настройки.", "find_cover": "Найти обложку", "global_prep_desc": "Включить/отключить исполнение глобальных команд подготовки для этого приложения.", "global_prep_name": "Глобальные команды", diff --git a/src_assets/common/assets/web/public/assets/locale/sv.json b/src_assets/common/assets/web/public/assets/locale/sv.json index 723688d4be2..12771acc9fd 100644 --- a/src_assets/common/assets/web/public/assets/locale/sv.json +++ b/src_assets/common/assets/web/public/assets/locale/sv.json @@ -71,9 +71,6 @@ "env_xrandr_example": "Exempel - Xrandr för upplösnings automation:", "exit_timeout": "Avbryt Timeout", "exit_timeout_desc": "Antalet sekunder i väntan på att alla app-processer ska avslutas graciöst när det krävs för att avsluta. Om du inte har angett detta är standardvärdet att vänta upp till 5 sekunder. Om satt till noll eller ett negativt värde kommer appen att avslutas omedelbart.", - "gamepad": "Kontrolltyp", - "gamepad_default": "Använd standard (från Inmatningsinställningar)", - "gamepad_desc": "Åsidosätt den emulerade kontrolltypen för denna app. När du strömmar denna app kommer värden att använda denna typ i stället för den globala inställningen.", "find_cover": "Hitta omslag", "global_prep_desc": "Aktivera/Inaktivera exekvering av globala prep kommandon för denna applikation.", "global_prep_name": "Globala prep kommandon", diff --git a/src_assets/common/assets/web/public/assets/locale/tr.json b/src_assets/common/assets/web/public/assets/locale/tr.json index 664d3721922..e70a082028e 100644 --- a/src_assets/common/assets/web/public/assets/locale/tr.json +++ b/src_assets/common/assets/web/public/assets/locale/tr.json @@ -71,9 +71,6 @@ "env_xrandr_example": "Örnek - Çözüm Otomasyonu için Xrandr:", "exit_timeout": "Çıkış Zaman Aşımı", "exit_timeout_desc": "Uygulama işlemlerinin kapatılma isteği gönderildiğinde zarif bir şekilde çıkmaları için beklenilecek saniye sayısı. Ayarlanmadığı takdirde, varsayılan olarak 5 saniyeye kadar beklenir. Sıfır veya negatif bir değer ayarlandığında, uygulama anında sonlandırılacaktır.", - "gamepad": "Kontrolcü Türü", - "gamepad_default": "Varsayılanı kullan (Giriş ayarlarından)", - "gamepad_desc": "Bu uygulama için taklit edilen kontrolcü türünü geçersiz kıl. Bu uygulama akışı yapılırken, ana bilgisayar genel ayar yerine bu türü kullanacaktır.", "find_cover": "Kapak Resmi Bul", "global_prep_desc": "Bu uygulama için Global Hazırlık Komutlarının yürütülmesini etkinleştirin/devre dışı bırakın.", "global_prep_name": "Global Hazırlık Komutları", diff --git a/src_assets/common/assets/web/public/assets/locale/uk.json b/src_assets/common/assets/web/public/assets/locale/uk.json index 1ea76dd9cbd..b5d6a5f79bf 100644 --- a/src_assets/common/assets/web/public/assets/locale/uk.json +++ b/src_assets/common/assets/web/public/assets/locale/uk.json @@ -71,9 +71,6 @@ "env_xrandr_example": "Приклад - Xrandr для Автоматизації Роздільної Здатності:", "exit_timeout": "Тайм-аут виходу", "exit_timeout_desc": "Кількість секунд, протягом яких всі процеси програми будуть примусово завершені після запиту на вихід. Якщо значення не встановлено, за замовчуванням програма буде чекати до 5 секунд. Якщо встановлено на нуль або від'ємне значення, програму буде негайно завершено.", - "gamepad": "Тип контролера", - "gamepad_default": "Використовувати за замовчуванням (з налаштувань введення)", - "gamepad_desc": "Перевизначити тип емульованого контролера для цієї програми. Під час стрімінгу цієї програми хост використовуватиме цей тип замість глобального налаштування.", "find_cover": "Знайти обкладинку", "global_prep_desc": "Ввімкнути/Вимкнути виконання глобальних команд Prep для цього застосунку.", "global_prep_name": "Глобальні команди підготовки", diff --git a/src_assets/common/assets/web/public/assets/locale/vi.json b/src_assets/common/assets/web/public/assets/locale/vi.json index d10c365443f..ae10ef8ab00 100644 --- a/src_assets/common/assets/web/public/assets/locale/vi.json +++ b/src_assets/common/assets/web/public/assets/locale/vi.json @@ -71,9 +71,6 @@ "env_xrandr_example": "Ví dụ - Xrandr cho độ phân giải động:", "exit_timeout": "Thời gian chờ thoát", "exit_timeout_desc": "Số giây chờ đợi cho tất cả các tiến trình của ứng dụng thoát ra một cách trơn tru khi được yêu cầu thoát. Nếu không được thiết lập, giá trị mặc định là chờ tối đa 5 giây. Nếu được thiết lập thành 0, ứng dụng sẽ bị kết thúc ngay lập tức.", - "gamepad": "Loại bộ điều khiển", - "gamepad_default": "Dùng mặc định (từ cài đặt Đầu vào)", - "gamepad_desc": "Ghi đè loại bộ điều khiển mô phỏng cho ứng dụng này. Khi phát trực tiếp ứng dụng này, máy chủ sẽ dùng loại này thay cho cài đặt toàn cục.", "find_cover": "Tìm chỗ trú ẩn", "global_prep_desc": "Bật/Tắt việc thực thi các lệnh chuẩn bị toàn cầu cho ứng dụng này.", "global_prep_name": "Lệnh chuẩn bị toàn cầu", diff --git a/src_assets/common/assets/web/public/assets/locale/zh.json b/src_assets/common/assets/web/public/assets/locale/zh.json index efea65f0f15..432ff807df5 100644 --- a/src_assets/common/assets/web/public/assets/locale/zh.json +++ b/src_assets/common/assets/web/public/assets/locale/zh.json @@ -71,9 +71,6 @@ "env_xrandr_example": "示例 - Xrandr 用于分辨率自动化:", "exit_timeout": "退出超时", "exit_timeout_desc": "请求退出时,等待所有应用进程正常关闭的秒数。 如果未设置,默认等待5秒钟。如果设置为零或负值,应用程序将立即终止。", - "gamepad": "控制器类型", - "gamepad_default": "使用默认(来自输入设置)", - "gamepad_desc": "为此应用覆盖模拟的控制器类型。流式传输此应用时,主机将使用此类型而非全局设置。", "find_cover": "查找封面", "global_prep_desc": "启用/禁用此应用程序的全局预览命令。", "global_prep_name": "全局预处理命令", diff --git a/src_assets/common/assets/web/public/assets/locale/zh_TW.json b/src_assets/common/assets/web/public/assets/locale/zh_TW.json index 988c4e65d41..28534675708 100644 --- a/src_assets/common/assets/web/public/assets/locale/zh_TW.json +++ b/src_assets/common/assets/web/public/assets/locale/zh_TW.json @@ -71,9 +71,6 @@ "env_xrandr_example": "範例 - 用於解析度自動化的 Xrandr:", "exit_timeout": "結束逾時設定", "exit_timeout_desc": "當要求結束時,等待所有應用程式處理程序正常結束的秒數。如果未設定,預設會等待最多 5 秒。如果設為 0,應用程式將立即終止。", - "gamepad": "控制器類型", - "gamepad_default": "使用預設(來自輸入設定)", - "gamepad_desc": "覆寫此應用程式的模擬控制器類型。串流此應用程式時,主機將使用此類型而非全域設定。", "find_cover": "尋找封面圖片", "global_prep_desc": "啟用/停用此應用程式的全域準備指令執行。", "global_prep_name": "全域準備指令", From 40a8cc349606e7e6894e7e9e07aa0a4006e0e1f7 Mon Sep 17 00:00:00 2001 From: edgar-simao <23741809+edgar-simao@users.noreply.github.com> Date: Sun, 29 Mar 2026 18:26:26 +0100 Subject: [PATCH 3/3] fixing declaration order error --- src/input.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/input.cpp b/src/input.cpp index 9084e94ecaf..27d3a9deb52 100644 --- a/src/input.cpp +++ b/src/input.cpp @@ -167,10 +167,10 @@ namespace input { ): shortcutFlags {}, gamepads(MAX_GAMEPADS), + gamepad_override {std::move(gamepad_override)}, client_context {platf::allocate_client_input_context(platf_input)}, touch_port_event {std::move(touch_port_event)}, feedback_queue {std::move(feedback_queue)}, - gamepad_override {std::move(gamepad_override)}, mouse_left_button_timeout {}, touch_port {{0, 0, 0, 0}, 0, 0, 1.0f, 1.0f, 0, 0}, accumulated_vscroll_delta {},