From fe83a60ad3398fb41d30b131a08cdbc3855afac1 Mon Sep 17 00:00:00 2001 From: Filipe Moreira Date: Wed, 11 Nov 2026 17:10:04 +0100 Subject: [PATCH] feat: bring TV control back (revert #195) A user confirmed ADB input switching works on a Coocaa/Skyworth TV, even from deep sleep, with a custom input command (#207). Co-Authored-By: Claude Opus 5.5 --- CHANGELOG.en-US.md | 2 ++ CHANGELOG.md | 2 ++ README.de-DE.md | 1 + README.es-ES.md | 1 + README.fr-FR.md | 1 + README.md | 1 + README.pt-BR.md | 1 + README.ru-RU.md | 1 + docs/GUIDE.de-DE.md | 25 ++++++++++++++++++- docs/GUIDE.es-ES.md | 25 ++++++++++++++++++- docs/GUIDE.fr-FR.md | 25 ++++++++++++++++++- docs/GUIDE.md | 25 ++++++++++++++++++- docs/GUIDE.pt-BR.md | 25 ++++++++++++++++++- docs/GUIDE.ru-RU.md | 25 ++++++++++++++++++- docs/PRD.md | 4 +-- docs/TESTING.md | 11 ++++---- src/ConsoleMode/Resources/Strings.de-DE.json | 2 +- src/ConsoleMode/Resources/Strings.en-US.json | 2 +- src/ConsoleMode/Resources/Strings.es-ES.json | 2 +- src/ConsoleMode/Resources/Strings.fr-FR.json | 2 +- src/ConsoleMode/Resources/Strings.pt-BR.json | 2 +- src/ConsoleMode/Resources/Strings.ru-RU.json | 2 +- src/ConsoleMode/Services/ConsoleEngine.cs | 4 +-- .../Services/Tv/TvControlService.cs | 7 ------ .../ViewModels/MainViewModel.Tv.cs | 3 --- src/ConsoleMode/Views/ConsoleHomeView.xaml | 4 +-- 26 files changed, 171 insertions(+), 34 deletions(-) diff --git a/CHANGELOG.en-US.md b/CHANGELOG.en-US.md index 786a7f5..de4fd4d 100644 --- a/CHANGELOG.en-US.md +++ b/CHANGELOG.en-US.md @@ -3,6 +3,8 @@ English (US) release notes, mirroring CHANGELOG.md (Brazilian Portuguese). Before publishing a version, add a `## [VERSION]` section to **both** files: the workflow publishes the section matching the tag from each one and fails if either is missing. ## [Unreleased] +### Changes +- TV control (Google TV / Android TV over the network) is back: the **TV** category returns to the System tab and sessions again turn the TV on, switch it to the PC's input (also with your own **Input command**) and, if chosen, put it in standby on the way back. Anyone who set it up in 1.6 finds it as they left it. (#208) ## [1.7.0] ### What's new diff --git a/CHANGELOG.md b/CHANGELOG.md index 37f24bc..222bc71 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,8 @@ Notas em português do Brasil; a versão em inglês (Estados Unidos) fica em `CHANGELOG.en-US.md`. Antes de publicar uma versão, adicione uma seção `## [VERSÃO]` com o changelog daquela versão **nos dois arquivos**. O workflow publica as duas seções correspondentes à tag na mesma release e falha se faltar alguma. ## [Unreleased] +### Mudanças +- O controle da TV (Google TV / Android TV pela rede) volta: a categoria **TV** reaparece na aba Sistema e a sessão volta a ligar a TV, trocar para a entrada do PC (inclusive com um **Comando de entrada** próprio) e, se escolhido, colocá-la em espera na volta. Quem já tinha configurado na 1.6 encontra tudo como deixou. (#208) ## [1.7.0] ### Novidades diff --git a/README.de-DE.md b/README.de-DE.md index c667666..701d07b 100644 --- a/README.de-DE.md +++ b/README.de-DE.md @@ -44,6 +44,7 @@ Die Controller-Tastenkombinationen wählst du selbst: Anfangs ist keine aktiv, d - **Auflösung und Bildwiederholrate** pro Bildschirm, **HDR**, **VRR** und eine **FPS-Begrenzung** (RTSS) während du spielst - **FPS-Anzeige** über dem Spiel (RTSS) als Kachel in drei Größen: Nur FPS, Kompakt (CPU-, GPU- und RAM-Auslastung), Detailliert (Taktraten, GPU-Temperatur und Speicher) oder dein eigenes Layout - Der Ton geht an den Fernseher (oder einen beliebigen Ausgang) und kommt danach zurück +- [Schaltet den Fernseher ein und wechselt auf den Eingang des PCs](docs/GUIDE.de-DE.md#fernsehersteuerung) (Google TV / Android TV über das Netzwerk) und kann ihn danach in den Standby versetzen - Startet **Steam Big Picture**, **Playnite im Vollbild** oder den **Xbox-Modus** und minimiert Steam in den Infobereich, wenn du zum PC zurückkehrst - **Sitzungsmenü** über dem Spiel: geöffnete Fenster wechseln oder schließen, Lautstärke, Auflösung, Audio, FPS und HDR ändern, den Mauszeiger ausblenden oder mit dem Controller steuern und deine Dateien mit [ControlFS](https://github.com/nextestudios/ControlFS) und das Web mit [JoyChromium](https://github.com/lippdev/joychromium) durchsuchen - Eine Oberfläche im Stil einer Konsole, gemacht für den Fernseher, die auch mit Maus und Tastatur funktioniert (Vollbild, Xbox- und PlayStation-Controller, Registerkarten mit LB/RB, ein eigenes Hintergrundbild oder deine Steam-Cover als Hintergrund), mit einer geführten Tour beim ersten Öffnen diff --git a/README.es-ES.md b/README.es-ES.md index f80c51d..bedf3b5 100644 --- a/README.es-ES.md +++ b/README.es-ES.md @@ -44,6 +44,7 @@ Los atajos del mando los eliges tú: al principio no hay ninguno activado, el re - **Resolución y frecuencia de actualización** por pantalla, **HDR**, **VRR** y **límite de FPS** (RTSS) mientras juegas - **Contador de FPS** sobre el juego (RTSS) en una tarjeta de tres tamaños: solo FPS, compacto (uso de CPU, GPU y RAM), detallado (relojes, temperatura y memoria de la GPU) o tu propia disposición - El audio va a la TV (o a cualquier salida) y vuelve después +- [Enciende la TV y la cambia a la entrada del PC](docs/GUIDE.es-ES.md#control-de-la-tv) (Google TV / Android TV por la red), y puede ponerla en reposo después - Abre **Steam Big Picture**, **Playnite a pantalla completa** o el **modo Xbox**, y envía Steam a la bandeja al volver al PC - **Menú de la sesión** sobre el juego: cambia o cierra las ventanas abiertas, ajusta volumen, resolución, audio, FPS y HDR, oculta el puntero del ratón o muévelo con el mando, y explora tus archivos con [ControlFS](https://github.com/nextestudios/ControlFS) y la web con [JoyChromium](https://github.com/lippdev/joychromium) - Una interfaz al estilo de las consolas, hecha para la TV, que también funciona con ratón y teclado (pantalla completa, mandos de Xbox y PlayStation, pestañas con LB/RB, un fondo de pantalla propio o tus portadas de Steam de fondo), con un recorrido guiado la primera vez que la abres diff --git a/README.fr-FR.md b/README.fr-FR.md index 3565b28..c45d634 100644 --- a/README.fr-FR.md +++ b/README.fr-FR.md @@ -44,6 +44,7 @@ C'est vous qui choisissez les raccourcis manette : aucun n'est actif au départ, - **Résolution et fréquence** par écran, **HDR**, **VRR** et **limite de FPS** (RTSS) pendant que vous jouez - **Compteur de FPS** par-dessus le jeu (RTSS) sur une carte en trois tailles : FPS seulement, compact (utilisation CPU, GPU et RAM), détaillé (fréquences, température et mémoire du GPU) ou votre propre disposition - Le son passe sur la TV (ou n'importe quelle sortie) et revient ensuite +- [Allume la TV et la bascule sur l'entrée du PC](docs/GUIDE.fr-FR.md#contrôle-de-la-tv) (Google TV / Android TV par le réseau), et peut la mettre en veille ensuite - Lance **Steam Big Picture**, **Playnite en plein écran** ou le mode **Xbox**, et réduit Steam dans la zone de notification quand vous revenez au PC - **Menu de session** par-dessus le jeu : changer de fenêtre ou fermer les fenêtres ouvertes, régler le volume, la résolution, le son, les FPS et le HDR, masquer le pointeur de la souris ou le piloter à la manette, et parcourir vos fichiers avec [ControlFS](https://github.com/nextestudios/ControlFS) et le Web avec [JoyChromium](https://github.com/lippdev/joychromium) - Une interface façon console, pensée pour la TV, qui marche aussi à la souris et au clavier (plein écran, manettes Xbox et PlayStation, onglets sur LB/RB, un fond d’écran maison ou vos jaquettes Steam en fond), avec une visite guidée à la première ouverture diff --git a/README.md b/README.md index 4960a0c..f2b47b2 100644 --- a/README.md +++ b/README.md @@ -46,6 +46,7 @@ You pick the controller shortcuts yourself: none is on at first, the tour the ap - Per-screen **resolution and refresh rate**, **HDR**, **VRR** and an **FPS limit** (RTSS) while you play - **FPS counter** over the game (RTSS) on a card in three sizes: FPS only, compact (CPU, GPU and RAM usage), detailed (clocks, GPU temperature and memory) or your own layout - Audio goes to the TV (or any output) and comes back afterwards +- [Turns the TV on and switches it to the PC's input](docs/GUIDE.md#tv-control) (Google TV / Android TV over the network), and can put it in standby afterwards - Launches **Steam Big Picture**, **Playnite fullscreen** or **Xbox** mode, and sends Steam to the tray when you go back to the PC - **Session menu** over the game: switch or close the open windows, change volume, resolution, audio, FPS and HDR, hide the mouse pointer or drive it with the controller, and browse your files with [ControlFS](https://github.com/nextestudios/ControlFS) and the web with [JoyChromium](https://github.com/lippdev/joychromium) - A console-style interface made for the TV that also works with the mouse and the keyboard (full screen, Xbox and PlayStation pads, LB/RB tabs, its own wallpaper or your Steam covers as the background), with a guided tour the first time you open it diff --git a/README.pt-BR.md b/README.pt-BR.md index b4c5a60..ba365b9 100644 --- a/README.pt-BR.md +++ b/README.pt-BR.md @@ -46,6 +46,7 @@ Os atalhos do controle são você quem escolhe: nenhum vem ligado, o tour da pri - **Resolução e Hz** por tela, **HDR**, **VRR** e **limite de FPS** (RTSS) enquanto você joga - **Contador de FPS** sobre o jogo (RTSS) num card em três tamanhos: apenas FPS, compacto (uso de CPU, GPU e RAM), detalhado (clocks, temperatura da GPU e memória) ou do seu jeito - O áudio vai para a TV (ou qualquer saída) e volta depois +- [Liga a TV e troca para a entrada do PC](docs/GUIDE.pt-BR.md#controle-da-tv) (Google TV / Android TV pela rede), e pode colocá-la em espera no fim - Abre **Steam Big Picture**, **Playnite em tela cheia** ou o **Modo Xbox**, e manda a Steam para a bandeja ao voltar ao PC - **Menu da sessão** sobre o jogo: troque ou feche as janelas abertas, mude volume, resolução, áudio, FPS e HDR, esconda o cursor do mouse ou mova-o com o controle e navegue pelos seus arquivos com o [ControlFS](https://github.com/nextestudios/ControlFS) e pela web com o [JoyChromium](https://github.com/lippdev/joychromium) - Uma interface no estilo dos consoles, feita para a TV, que também funciona com mouse e teclado (tela cheia, controles Xbox e PlayStation, abas no LB/RB, um papel de parede próprio ou as capas da sua Steam como plano de fundo), com um tour guiado na primeira vez que você abre diff --git a/README.ru-RU.md b/README.ru-RU.md index 45b0194..313e04b 100644 --- a/README.ru-RU.md +++ b/README.ru-RU.md @@ -44,6 +44,7 @@ Windows 10 или 11, а также [Steam](https://store.steampowered.com/) (Bi - **Разрешение и частота обновления** для каждого экрана, **HDR**, **VRR** и **ограничение FPS** (RTSS) во время игры - **Счётчик FPS** поверх игры (RTSS) на карточке трёх размеров: только FPS, компактный (загрузка ЦП, ГП и ОЗУ), подробный (частоты, температура ГП и память) или ваш собственный вариант - Звук переходит на телевизор (или любой другой выход) и потом возвращается +- [Включает телевизор и переключает его на вход ПК](docs/GUIDE.ru-RU.md#управление-телевизором) (Google TV / Android TV по сети), а после может перевести его в режим ожидания - Запускает **Steam Big Picture**, **Playnite в полноэкранном режиме** или **режим Xbox** и сворачивает Steam в область уведомлений при возврате к ПК - **Меню сеанса** поверх игры: переключайтесь между открытыми окнами или закрывайте их, меняйте громкость, разрешение, звук, FPS и HDR, скрывайте указатель мыши или управляйте им с геймпада, просматривайте файлы через [ControlFS](https://github.com/nextestudios/ControlFS) и сайты через [JoyChromium](https://github.com/lippdev/joychromium) - Интерфейс в стиле консоли, сделанный для телевизора, который работает и с мышью и клавиатурой (полный экран, геймпады Xbox и PlayStation, вкладки на LB/RB, собственный фоновый рисунок или обложки из Steam на фоне), с обзором при первом запуске diff --git a/docs/GUIDE.de-DE.md b/docs/GUIDE.de-DE.md index 8c62aae..230fb8a 100644 --- a/docs/GUIDE.de-DE.md +++ b/docs/GUIDE.de-DE.md @@ -29,7 +29,7 @@ Console Mode hat eine einzige Oberfläche, gestaltet wie die einer Konsole: Sie Unter **System → Controller** wählst du das Tastenlayout: **Automatisch**, **Xbox** oder **PlayStation**. Vorschau und Tastenbeschriftungen richten sich nach dieser Wahl, die beim Schließen der App gespeichert wird. Das ändert nur die angezeigten Symbole; die Eingaben des Controllers behalten ihre bisherige Belegung. -Die Registerkarte **System** enthält alle Einstellungen, darunter Controller-Tastenkombinationen, Playnite, benutzerdefinierte FPS, das Layout des FPS-Zählers, die Argumente der eigenen App, den Diagnosebericht und den Datenordner. Die Werte bleiben auch nach einem Neustart der App erhalten. +Die Registerkarte **System** enthält alle Einstellungen, darunter Controller-Tastenkombinationen, Playnite, Android TV, benutzerdefinierte FPS, das Layout des FPS-Zählers, die Argumente der eigenen App, den Diagnosebericht und den Datenordner. Die Werte bleiben auch nach einem Neustart der App erhalten. Öffne die Aktion, deren Tastenkombination du einrichten willst, wähle **Festlegen** oder **Ändern**, halte die gewünschte Kombination auf einem Controller gedrückt und lass die Tasten los. **Entfernen** deaktiviert diese Tastenkombination. Während der Aufnahme navigieren die Controller-Tasten nicht durch die Oberfläche; mit **Abbrechen** oder **Esc** beendest du die Aufnahme. Außerhalb der Aufnahme verlässt du den Editor mit **B**. Die Felder für Adresse und benutzerdefinierte FPS nehmen Tastatureingaben an. @@ -54,6 +54,29 @@ Ein Wechsel des Hauptbildschirms kann Windows dazu bringen, die Desktopsymbole n `start`, `stop` und `show` tun genau das, was der passende `consolemode://`-Link tut, und antworten, sobald die App fertig ist (`ok:false` mit einem `error`, wenn der Konsolenmodus nicht gestartet ist oder die Wiederherstellung nicht abgeschlossen wurde). `status` liest nur. Verbinden können sich nur der angemeldete Benutzer und LocalSystem; nichts wird ins Netzwerk freigegeben. +## Fernsehersteuerung + +Unter System → **Fernseher** kann die App beim Start des Konsolenmodus den Fernseher einschalten und auf den HDMI-Eingang des PCs wechseln und ihn optional wieder in den Standby versetzen, nachdem der Schreibtisch wiederhergestellt ist. Ein Fernseher, der nicht antwortet, blockiert den Konsolenmodus nie: Die App protokolliert das und wartet wie gewohnt auf den Spielbildschirm. + +Mit der Voreinstellung **Nicht steuern** wird nichts gesendet und Start und Wiederherstellung dauern nicht länger. Ist ein Weg ausgewählt, läuft der Fernseher-Schritt beim Start des Konsolenmodus zuerst und ist auf **30 Sekunden** begrenzt (der schlimmste Fall, wenn der Fernseher nicht antwortet und Wake-on-LAN versucht wird); der optionale Standby bei der Wiederherstellung ist auf **15 Sekunden** begrenzt. Ein Fernseher, der schon an ist, antwortet meist in ein bis zwei Sekunden. + +Die meisten PC-Grafikkarten können kein HDMI-CEC senden, deshalb spricht die App stattdessen über das Netzwerk mit dem Fernseher: + +### Google TV / Android TV + +TCL, Sony, Hisense, Philips und andere Fernseher mit Google TV oder Android TV, über ADB (das Android-Debugging-Protokoll). Auf dem PC musst du nichts installieren. + +1. Auf dem Fernseher: **Einstellungen → System → Info** (About), drücke 7-mal auf **Android TV OS-Build**, um die Entwickleroptionen freizuschalten. +2. **Einstellungen → System → Entwickleroptionen**: Schalte **USB-Debugging** ein (bei manchen Fernsehern **Netzwerk-Debugging** / **ADB über Netzwerk**). +3. Wähle in Console Mode *Google TV / Android TV (Netzwerk)*, gib die IP-Adresse des Fernsehers ein (Einstellungen → Netzwerk auf dem Fernseher; reserviere sie im Router) und den HDMI-Eingang, den der PC nutzt. +4. Drücke **Jetzt testen**. Der Fernseher fragt „USB-Debugging zulassen?“ (Allow debugging from this computer?): Setze das Häkchen bei **Von diesem Computer immer zulassen** (Always allow) und drücke **Zulassen** (Allow). + +Der ADB-Schlüssel des PCs wird verschlüsselt für deinen Windows-Benutzer gespeichert (DPAPI), daher fragt der Fernseher nur einmal. Wird der Datenordner zu einem anderen Windows-Benutzer oder PC kopiert, lässt sich der Schlüssel dort nicht lesen: Die App erstellt einen neuen und der Fernseher fragt erneut „USB-Debugging zulassen?“. + +Zum Aufwecken sendet die App die Android-Aufwecktaste und danach die Taste **HDMI 1-4**. Wenn dein Fernseher diese Taste ignoriert, trage unter **Eingangsbefehl** einen beliebigen Android-Shell-Befehl ein, der den Eingang des PCs öffnet. Wenn der Fernseher im Standby aus dem Netzwerk verschwindet, trage seine **MAC-Adresse** ein, damit die App zuerst Wake-on-LAN sendet (die Option „Über Netzwerk einschalten“ / „Über WLAN einschalten“ (Wake on network / Wake on Wi-Fi) des Fernsehers muss an sein). + +„Kabelloses Debugging“ (Wireless debugging) mit Kopplungscode (Android-11-Smartphones und neuer) ist ein anderes, per TLS geschütztes Protokoll und wird nicht unterstützt: Verwende USB- oder Netzwerk-Debugging. + ## Optionale Extras ### HDR diff --git a/docs/GUIDE.es-ES.md b/docs/GUIDE.es-ES.md index 315a975..2fea43c 100644 --- a/docs/GUIDE.es-ES.md +++ b/docs/GUIDE.es-ES.md @@ -29,7 +29,7 @@ Console Mode tiene una sola interfaz, hecha como la de una consola: ocupa toda l En **Sistema → Mando**, elige el diseño de botones: **Automático**, **Xbox** o **PlayStation**. La vista previa y las etiquetas de los atajos siguen esa elección, que se guarda al cerrar la aplicación. Esto solo cambia los símbolos que se muestran; las entradas del mando mantienen su asignación. -La pestaña **Sistema** reúne todos los ajustes, incluidos los atajos del mando, Playnite, el FPS personalizado, el diseño del contador de FPS, los argumentos de la aplicación personalizada, el informe de diagnóstico y la carpeta de datos. Los valores se mantienen al reiniciar la aplicación. +La pestaña **Sistema** reúne todos los ajustes, incluidos los atajos del mando, Playnite, Android TV, el FPS personalizado, el diseño del contador de FPS, los argumentos de la aplicación personalizada, el informe de diagnóstico y la carpeta de datos. Los valores se mantienen al reiniciar la aplicación. Abre la acción del atajo que quieras configurar, elige **Definir** o **Cambiar**, mantén la combinación deseada en un mando y suelta los botones. **Quitar** desactiva ese atajo. Durante la captura, los botones del mando no navegan por la interfaz; usa **Cancelar** o **Esc** para detener la captura. Fuera de la captura, **B** sale del editor. Los campos de dirección y de FPS personalizado aceptan el teclado. @@ -54,6 +54,29 @@ Los enlaces `consolemode://` se lanzan sin esperar respuesta. Las herramientas q `start`, `stop` y `show` hacen exactamente lo mismo que el enlace `consolemode://` correspondiente y responden cuando la aplicación termina (`ok:false` con un `error` si el modo consola no se inició o la restauración no terminó). `status` solo lee. Solo pueden conectarse el usuario que ha iniciado sesión y LocalSystem; nada se expone a la red. +## Control de la TV + +Sistema → **TV** puede encender la TV y cambiarla a la entrada HDMI del PC cuando empieza el modo consola, y, si quieres, volver a ponerla en reposo cuando se restaura el escritorio. Una TV que no responde nunca bloquea el modo consola: la aplicación lo anota en el registro y espera a la pantalla de juego como siempre. + +Con la opción predeterminada, **No controlarla**, no se envía nada y no se añade nada al inicio ni a la restauración. Con una ruta elegida, el paso de la TV va primero cuando empieza el modo consola y dura como máximo **30 segundos** (el peor caso, cuando la TV no responde y se prueba Wake-on-LAN); el reposo opcional al restaurar dura como máximo **15 segundos**. Una TV que ya está encendida suele responder en uno o dos segundos. + +La mayoría de las tarjetas gráficas de PC no pueden enviar HDMI-CEC, así que la aplicación habla con la TV por la red: + +### Google TV / Android TV + +TCL, Sony, Hisense, Philips y otras TV con Google TV o Android TV, mediante ADB (el protocolo de depuración de Android). No hay que instalar nada en el PC. + +1. En la TV: **Ajustes → Sistema → Información**, pulsa 7 veces **Compilación del SO de Android TV** (Android TV OS build) para desbloquear las Opciones de desarrollador. +2. **Ajustes → Sistema → Opciones de desarrollador**: activa **Depuración USB** (en algunas TV, **Depuración por red** / **ADB por red**). +3. En Console Mode, elige *Google TV / Android TV (red)*, escribe la IP de la TV (Ajustes → Red en la TV; resérvala en el router) y la entrada HDMI que usa el PC. +4. Pulsa **Probar ahora**. La TV pregunta "¿Permitir depuración desde este ordenador?": marca **Permitir siempre** y pulsa **Permitir**. + +La clave ADB del PC se guarda cifrada para tu usuario de Windows (DPAPI), así que la TV solo pregunta una vez. Si copias la carpeta de datos a otro usuario de Windows o a otro PC, la clave no se puede leer allí: la aplicación crea una nueva y la TV vuelve a preguntar "¿Permitir depuración?". + +Para encenderla se usa la tecla de activación de Android y después la tecla **HDMI 1-4**. Si tu TV ignora esa tecla, rellena **Comando de la entrada (avanzado)** con cualquier comando de shell de Android que abra la entrada del PC. Si la TV se desconecta de la red en reposo, rellena su **Dirección MAC** para que la aplicación envíe antes Wake-on-LAN (la opción de la TV "Activar por red" / "Activar por Wi-Fi" (Wake on network / Wake on Wi-Fi) tiene que estar activada). + +La "Depuración inalámbrica" con código de emparejamiento (móviles con Android 11 o posterior) es otro protocolo, envuelto en TLS, y no es compatible: usa la depuración USB / por red. + ## Extras opcionales ### HDR diff --git a/docs/GUIDE.fr-FR.md b/docs/GUIDE.fr-FR.md index 463d234..b0f7e9b 100644 --- a/docs/GUIDE.fr-FR.md +++ b/docs/GUIDE.fr-FR.md @@ -29,7 +29,7 @@ Console Mode a une seule interface, conçue comme celle d'une console : elle occ Dans **Système → Manette**, choisissez la disposition des boutons : **Automatique**, **Xbox** ou **PlayStation**. L'aperçu et les libellés des raccourcis suivent ce choix, qui est enregistré à la fermeture de l'application. Seuls les symboles affichés changent ; les entrées de la manette gardent leur correspondance actuelle. -L'onglet **Système** réunit tous les réglages, y compris les raccourcis manette, Playnite, les FPS personnalisés, la disposition du compteur d'IPS, les arguments de l'application personnalisée, le rapport de diagnostic et le dossier de données. Les valeurs sont conservées après un redémarrage de l'application. +L'onglet **Système** réunit tous les réglages, y compris les raccourcis manette, Playnite, Android TV, les FPS personnalisés, la disposition du compteur d'IPS, les arguments de l'application personnalisée, le rapport de diagnostic et le dossier de données. Les valeurs sont conservées après un redémarrage de l'application. Ouvrez l'action de raccourci à configurer, choisissez **Définir** ou **Modifier**, maintenez la combinaison voulue sur une manette, puis relâchez les boutons. **Supprimer** désactive ce raccourci. Pendant la capture, les boutons de la manette ne naviguent pas dans l'interface ; utilisez **Annuler** ou **Échap** pour arrêter la capture. Hors capture, **B** quitte l'éditeur. Les champs d'adresse et de FPS personnalisés acceptent la saisie au clavier. @@ -54,6 +54,29 @@ Les liens `consolemode://` s'envoient sans attendre de réponse. Les outils qui `start`, `stop` et `show` font exactement ce que fait le lien `consolemode://` correspondant, puis répondent une fois l'application stabilisée (`ok:false` avec un `error` si le mode console n'a pas démarré ou si la restauration n'a pas abouti). `status` se contente de lire. Seuls l'utilisateur connecté et LocalSystem peuvent se connecter ; rien n'est exposé sur le réseau. +## Contrôle de la TV + +Système → **TV** peut allumer la TV et la basculer sur l'entrée HDMI du PC au démarrage du mode console, et en option la remettre en veille une fois le bureau restauré. Une TV qui ne répond pas ne bloque jamais le mode console : l'application le note dans le journal et attend l'écran de jeu comme d'habitude. + +Avec la valeur par défaut, **Ne pas la contrôler**, rien n'est envoyé et rien ne s'ajoute au démarrage ni à la restauration. Avec une méthode choisie, l'étape TV s'exécute en premier au démarrage du mode console et dure au plus **30 secondes** (le pire cas, quand la TV ne répond pas et que le Wake-on-LAN est tenté) ; la mise en veille facultative à la restauration dure au plus **15 secondes**. Une TV déjà allumée répond en général en une ou deux secondes. + +La plupart des cartes graphiques de PC ne savent pas envoyer de HDMI-CEC, donc l'application parle à la TV par le réseau : + +### Google TV / Android TV + +TCL, Sony, Hisense, Philips et les autres TV sous Google TV ou Android TV, via ADB (le protocole de débogage d'Android). Rien à installer sur le PC. + +1. Sur la TV : **Paramètres → Système → À propos** (Settings → System → About), appuyez 7 fois sur **Build de l'OS Android TV** (Android TV OS build) pour débloquer les options pour les développeurs. +2. **Paramètres → Système → Options pour les développeurs** (Developer options) : activez le **Débogage USB** (USB debugging) (sur certaines TV, **Débogage réseau** / **ADB via le réseau**). +3. Dans Console Mode, choisissez *Google TV / Android TV (réseau)*, saisissez l'adresse IP de la TV (Paramètres → Réseau sur la TV ; réservez-la dans votre box ou routeur) et l'entrée HDMI utilisée par le PC. +4. Appuyez sur **Tester maintenant**. La TV demande « Autoriser le débogage depuis cet ordinateur ? » (Allow debugging from this computer?) : cochez **Toujours autoriser** (Always allow) et appuyez sur **Autoriser** (Allow). + +La clé ADB du PC est stockée chiffrée pour votre utilisateur Windows (DPAPI), donc la TV ne pose la question qu'une fois. Si le dossier de données est copié vers un autre utilisateur Windows ou un autre PC, la clé n'y est pas lisible : l'application en crée une nouvelle et la TV redemande « Autoriser le débogage ? ». + +Le réveil utilise la touche de réveil d'Android, puis la touche **HDMI 1-4**. Si votre TV ignore cette touche, renseignez dans **Commande d'entrée (avancé)** n'importe quelle commande shell Android qui ouvre l'entrée du PC. Si la TV disparaît du réseau en veille, indiquez son **Adresse MAC** pour que l'application envoie d'abord un Wake-on-LAN (l'option « Réveil par le réseau » / « Réveil par Wi-Fi » de la TV doit être activée). + +Le « Débogage sans fil » (Wireless debugging) avec code d'association (téléphones Android 11+) est un autre protocole, encapsulé en TLS, et n'est pas pris en charge : utilisez le débogage USB / réseau. + ## Extras facultatifs ### HDR diff --git a/docs/GUIDE.md b/docs/GUIDE.md index e5faeec..3bbba51 100644 --- a/docs/GUIDE.md +++ b/docs/GUIDE.md @@ -37,7 +37,7 @@ The **System** tab lists its categories on the left (Gaming display, When enteri In **System → Controller**, choose the button layout: **Automatic**, **Xbox** or **PlayStation**. The preview and shortcut labels follow the choice, which is saved when you close the app. This changes the displayed symbols; the controller's inputs keep their existing mapping. -The **System** tab holds every setting, including controller shortcuts, Playnite, custom FPS, the FPS counter's layout, the custom app's arguments, the diagnostics report and the data folder. The values stay saved after restarting the app. +The **System** tab holds every setting, including controller shortcuts, Playnite, Android TV, custom FPS, the FPS counter's layout, the custom app's arguments, the diagnostics report and the data folder. The values stay saved after restarting the app. Open the shortcut action you want to configure, choose **Set** or **Change**, hold the desired combination on one controller and release the buttons. **Remove** disables that shortcut. During capture, controller buttons do not navigate the interface; use **Cancel** or **Esc** to stop capture. Outside capture, **B** leaves the editor. Address and custom FPS fields accept keyboard input. @@ -62,6 +62,29 @@ Changing the main display can make Windows reshuffle the desktop icons. **Put de `start`, `stop` and `show` do exactly what the matching `consolemode://` link does, then reply once the app has settled (`ok:false` with an `error` if console mode didn't start or the restore didn't finish). `status` only reads. Only the signed-in user and LocalSystem can connect; nothing is exposed to the network. +## TV control + +System → **TV** can turn the TV on and switch it to the PC's HDMI input when console mode starts, and optionally put it back in standby after the desk is restored. A TV that doesn't answer never blocks console mode: the app logs it and waits for the game screen as usual. + +With the default, **Don't control it**, nothing is sent and nothing is added to starting or restoring. With a route selected, the TV step runs first when console mode starts and is capped at **30 seconds** (the worst case, when the TV doesn't answer and Wake-on-LAN is tried); the optional standby on restore is capped at **15 seconds**. A TV that is already on usually answers in about a second or two. + +Most PC graphics cards can't send HDMI-CEC, so the app talks to the TV over the network instead: + +### Google TV / Android TV + +TCL, Sony, Hisense, Philips and other TVs running Google TV or Android TV, through ADB (the Android debugging protocol). Nothing to install on the PC. + +1. On the TV: **Settings → System → About**, press **Android TV OS build** 7 times to unlock Developer options. +2. **Settings → System → Developer options**: turn on **USB debugging** (on some TVs, **Network debugging** / **ADB over network**). +3. In Console Mode, pick *Google TV / Android TV*, enter the TV's IP (Settings → Network on the TV; reserve it in your router) and the HDMI input the PC uses. +4. Press **Test now**. The TV asks "Allow debugging from this computer?": tick **Always allow** and press **Allow**. + +The PC's ADB key is stored encrypted for your Windows user (DPAPI), so the TV only asks once. If the data folder is copied to another Windows user or PC, the key can't be read there: the app creates a new one and the TV asks "Allow debugging?" again. + +Waking uses the Android wake-up key, then the **HDMI 1-4** key. If your TV ignores that key, set **Input command** to any Android shell command that opens the PC's input. If the TV drops off the network in standby, fill in its **MAC address** so the app sends Wake-on-LAN first (the TV's "Wake on network" / "Wake on Wi-Fi" option must be on). + +"Wireless debugging" with a pairing code (Android 11+ phones) is a different, TLS-wrapped protocol and isn't supported: use USB / network debugging. + ## Optional extras ### HDR diff --git a/docs/GUIDE.pt-BR.md b/docs/GUIDE.pt-BR.md index f4ac4c6..e9e3b49 100644 --- a/docs/GUIDE.pt-BR.md +++ b/docs/GUIDE.pt-BR.md @@ -37,7 +37,7 @@ A aba **Sistema** lista as categorias à esquerda (Tela de jogo, Ao entrar no mo Em **Sistema → Controle**, escolha o layout dos botões: **Automático**, **Xbox** ou **PlayStation**. A prévia e os nomes dos atalhos acompanham a escolha, que fica salva ao fechar o app. Isso muda os símbolos exibidos; as entradas do controle mantêm o mapeamento existente. -A aba **Sistema** reúne todos os ajustes, incluindo os atalhos do controle, Playnite, FPS personalizado, o layout do contador de FPS, os argumentos do aplicativo personalizado, o relatório de diagnóstico e a pasta de dados. Os valores permanecem salvos ao reabrir o app. +A aba **Sistema** reúne todos os ajustes, incluindo os atalhos do controle, Playnite, Android TV, FPS personalizado, o layout do contador de FPS, os argumentos do aplicativo personalizado, o relatório de diagnóstico e a pasta de dados. Os valores permanecem salvos ao reabrir o app. Abra a ação de atalho que deseja configurar, escolha **Definir** ou **Alterar**, segure a combinação desejada em um único controle e solte os botões. **Remover** desativa aquele atalho. Durante a captura, os botões não navegam pela interface; use **Cancelar** ou **Esc** para interrompê-la. Fora da captura, **B** volta do editor. Campos de endereço e FPS personalizado aceitam digitação por teclado. @@ -62,6 +62,29 @@ Os links `consolemode://` não dão resposta. Ferramentas que precisam de uma `start`, `stop` e `show` fazem o mesmo que o link `consolemode://` correspondente e respondem quando o app terminou (`ok:false` com `error` se o modo console não entrou ou a restauração não terminou). `status` só consulta. Só o usuário logado e o LocalSystem conseguem conectar; nada fica exposto na rede. +## Controle da TV + +Sistema → **TV** pode ligar a TV e trocar para a entrada HDMI do PC quando o modo console começa e, se você quiser, colocá-la em espera depois que a mesa volta. Uma TV que não responde nunca trava o modo console: o app registra no log e espera a tela de jogo como sempre. + +Com o padrão, **Não controlar**, nada é enviado e nada é acrescentado ao iniciar nem ao restaurar. Com um caminho escolhido, a etapa da TV roda primeiro quando o modo console começa e tem limite de **30 segundos** (o pior caso, quando a TV não responde e o Wake-on-LAN é tentado); a espera opcional ao restaurar tem limite de **15 segundos**. Uma TV que já está ligada costuma responder em um ou dois segundos. + +A maioria das placas de vídeo de PC não envia HDMI-CEC, então o app fala com a TV pela rede: + +### Google TV / Android TV + +TVs TCL, Sony, Hisense, Philips e outras com Google TV ou Android TV, via ADB (o protocolo de depuração do Android). Nada para instalar no PC. + +1. Na TV: **Configurações → Sistema → Sobre**, aperte **Build do Android TV OS** 7 vezes para liberar as Opções do desenvolvedor. +2. **Configurações → Sistema → Opções do desenvolvedor**: ative **Depuração USB** (em algumas TVs, **Depuração pela rede** / **ADB pela rede**). +3. No Console Mode, escolha *Google TV / Android TV*, informe o IP da TV (Configurações → Rede na TV; reserve esse IP no roteador) e a entrada HDMI do PC. +4. Aperte **Testar agora**. A TV pergunta "Permitir depuração deste computador?": marque **Sempre permitir** e aperte **Permitir**. + +A chave ADB deste PC fica guardada criptografada para o seu usuário do Windows (DPAPI), então a TV só pergunta uma vez. Se a pasta de dados for copiada para outro usuário do Windows ou outro PC, a chave não pode ser lida lá: o app cria outra e a TV pergunta "Permitir depuração?" de novo. + +Para acordar, o app usa a tecla de despertar do Android e depois a tecla **HDMI 1-4**. Se a sua TV ignorar essa tecla, preencha **Comando da entrada** com qualquer comando de shell do Android que abra a entrada do PC. Se a TV sai da rede em espera, informe o **endereço MAC** para o app mandar Wake-on-LAN antes (a opção "Ligar pela rede" / "Wake on Wi-Fi" da TV precisa estar ativa). + +A "Depuração sem fio" com código de pareamento (Android 11+ em celulares) é outro protocolo, com TLS, e não é suportada: use a depuração USB / pela rede. + ## Extras opcionais ### HDR diff --git a/docs/GUIDE.ru-RU.md b/docs/GUIDE.ru-RU.md index 9ae7188..c55497a 100644 --- a/docs/GUIDE.ru-RU.md +++ b/docs/GUIDE.ru-RU.md @@ -29,7 +29,7 @@ В разделе **«Система» → «Геймпад»** выберите раскладку кнопок: **«Автоматически»**, **Xbox** или **PlayStation**. Предпросмотр и подписи сочетаний следуют выбору, который сохраняется при закрытии приложения. Меняются только отображаемые символы; назначение кнопок геймпада остаётся прежним. -На вкладке **«Система»** собраны все настройки, включая сочетания на геймпаде, Playnite, своё значение FPS, вид счётчика FPS, аргументы своего приложения, отчёт диагностики и папку данных. Значения сохраняются после перезапуска приложения. +На вкладке **«Система»** собраны все настройки, включая сочетания на геймпаде, Playnite, Android TV, своё значение FPS, вид счётчика FPS, аргументы своего приложения, отчёт диагностики и папку данных. Значения сохраняются после перезапуска приложения. Откройте действие, сочетание для которого хотите настроить, выберите **«Задать»** или **«Изменить»**, удерживайте нужную комбинацию на одном геймпаде и отпустите кнопки. **«Удалить»** отключает это сочетание. Во время записи кнопки геймпада не управляют интерфейсом; чтобы остановить запись, используйте **«Отмена»** или **Esc**. Вне записи **B** закрывает редактор. В поля адреса и своего значения FPS можно вводить текст с клавиатуры. @@ -54,6 +54,29 @@ `start`, `stop` и `show` делают ровно то же, что и соответствующая ссылка `consolemode://`, и отвечают, когда приложение завершит действие (`ok:false` с полем `error`, если режим консоли не запустился или восстановление не завершилось). `status` только читает состояние. Подключиться могут только вошедший в систему пользователь и LocalSystem; в сеть ничего не открывается. +## Управление телевизором + +В разделе «Система» → **«Телевизор»** можно включать телевизор и переключать его на HDMI-вход ПК при запуске режима консоли, а также, по желанию, переводить его обратно в режим ожидания после восстановления рабочего стола. Телевизор, который не отвечает, никогда не блокирует режим консоли: приложение записывает это в журнал и, как обычно, ждёт игровой экран. + +По умолчанию выбрано **«Не управлять»**: ничего не отправляется, и запуск или восстановление ничем не замедляются. Если выбран способ управления, шаг с телевизором выполняется первым при запуске режима консоли и занимает не больше **30 секунд** (худший случай, когда телевизор не отвечает и пробуется Wake-on-LAN); перевод в режим ожидания при восстановлении занимает не больше **15 секунд**. Уже включённый телевизор обычно отвечает за секунду-две. + +Большинство видеокарт ПК не умеют отправлять HDMI-CEC, поэтому приложение общается с телевизором по сети: + +### Google TV / Android TV + +TCL, Sony, Hisense, Philips и другие телевизоры с Google TV или Android TV, через ADB (протокол отладки Android). На ПК ничего устанавливать не нужно. + +1. На телевизоре: **«Настройки» → «Система» → «Об устройстве»** (Settings → System → About), нажмите 7 раз на **«Сборка ОС Android TV»** (Android TV OS build), чтобы открыть параметры разработчика. +2. **«Настройки» → «Система» → «Для разработчиков»** (Developer options): включите **«Отладка по USB»** (USB debugging; на некоторых телевизорах **«Отладка по сети»** / **ADB over network**). +3. В Console Mode выберите *«Google TV / Android TV (по сети)»*, введите IP-адрес телевизора («Настройки» → «Сеть» на телевизоре; зарезервируйте его в роутере) и HDMI-вход, к которому подключён ПК. +4. Нажмите **«Проверить»**. Телевизор спросит «Разрешить отладку с этого компьютера?» (Allow debugging from this computer?): отметьте **«Всегда разрешать»** (Always allow) и нажмите **«Разрешить»** (Allow). + +Ключ ADB этого ПК хранится в зашифрованном виде для вашего пользователя Windows (DPAPI), поэтому телевизор спрашивает только один раз. Если папку данных скопировать другому пользователю Windows или на другой ПК, ключ там прочитать не удастся: приложение создаст новый, и телевизор снова спросит «Разрешить отладку?». + +Для включения используется клавиша пробуждения Android, затем клавиша **HDMI 1-4**. Если телевизор её игнорирует, укажите в поле **«Команда входа»** любую shell-команду Android, которая открывает вход ПК. Если в режиме ожидания телевизор отключается от сети, заполните **«MAC-адрес»**, чтобы приложение сначала отправило Wake-on-LAN (на телевизоре должна быть включена опция «Включение по сети» / «Включение по Wi-Fi», Wake on network / Wake on Wi-Fi). + +«Беспроводная отладка» (Wireless debugging) с кодом сопряжения (телефоны с Android 11+) — это другой протокол, обёрнутый в TLS, и он не поддерживается: используйте отладку по USB или по сети. + ## Дополнительные возможности ### HDR diff --git a/docs/PRD.md b/docs/PRD.md index aea513e..dfc3630 100644 --- a/docs/PRD.md +++ b/docs/PRD.md @@ -94,7 +94,7 @@ refeita e sem caminho de volta perdido. | D-21 | **Estacionar o ponteiro** no canto da tela de jogo quando o launcher aparece vem **ligado por padrão** e devolve o ponteiro para onde estava ao voltar. | Decidido (resposta à issue #172; implementação no INPUT-014) | | D-22 | **Restauração durável:** tudo o que a sessão muda (telas, áudio, ícones, ponteiro, comandos de fim) é gravado em disco antes da mudança e desfeito no próximo início se o app cair. | Decidido e implementado no CORE-012 (#178). Antes dele, depois de uma queda nada era restaurado sozinho: os backups ficavam no disco, mas o "Restaurar agora" não os usava sem uma sessão ativa. | | D-25 | **Escala de console:** a interface e o Menu da sessão são desenhados para uma tela de 1080 de altura e ocupam sempre a mesma proporção da janela, qualquer que seja a escala do Windows (125 %, 150 %, 200 %) ou a resolução (1080p, 1440p, 4K). Escolhido entre "proporcional à tela" e "sempre em 100 %". | Decidido pelo dono em 01/11/2026; UI-018. | -| D-26 | **Controle da TV fora da 1.7.** O dono decidiu (01/11/2026) que ligar a Google TV / Android TV, trocar a entrada e pôr em espera não vai na 1.7 final. A categoria TV some do Sistema e a sessão não fala com a TV; o código (`Services/Tv`) e os ajustes salvos ficam, e `TvControlService.IsAvailable` traz tudo de volta. | Decidido pelo dono em 01/11/2026; TV-001. | +| D-26 | **Controle da TV fora da 1.7, de volta na 1.7.1.** O dono tirou a função da 1.7 (01/11/2026, #195) e a trouxe de volta depois que um usuário confirmou que ela funciona numa TV Coocaa/Skyworth, até em espera profunda, com um comando de entrada próprio (issue #207). | Decidido pelo dono em 11/11/2026; TV-001. | | D-27 | **Legacy na mesma release.** A 1.7.0 sai com um segundo download, o **Console Mode Legacy**: o código da 1.6.2 (interfaces Desktop e Console, controle da TV), para quem sentir falta do modo antigo. Sai da branch `release/1.7-legacy`, com a versão da release, e está congelado: não recebe funções nem correções e nunca procura atualização. Divide o `config.json` com a versão atual; cada lado guarda de volta os ajustes que não conhece (#200, #201), então dá para trocar sem perder nada. Os arquivos se chamam `ConsoleModeLegacy-*.exe`, nomes que a verificação de atualizações e o winget não procuram. A release é feita primeiro como rascunho (#202) para o dono testar antes de alguém receber. | Decidido pelo dono em 09/11/2026. | | D-24 | **Sons oficiais de console, por conta e risco:** o dono pode usar sons da Microsoft e da Sony (como os das aberturas inspiradas no Xbox 360 e no PS4), registrados no THIRD_PARTY_NOTICES e trocados se o dono dos direitos pedir. A parte visual imita só o clima, sem logos nem nomes dos consoles. | Decidido pelo dono em 31/10/2026 | | D-23 | **Uma interface só:** a partir da 1.7.0 o app tem apenas a interface Console, que também funciona com mouse e teclado. A interface Desktop e a escolha de interface saem; o que só existia nela vai para a aba Sistema, e a primeira abertura ganha um tour guiado. | Decidido pelo dono em 31/10/2026; UI-012 e UI-013. | @@ -433,7 +433,7 @@ Legenda: **P0** = necessário para a 1.7.0; **P1** = próxima versão; **P2** = ### Épico TV — Controle da TV -- [ ] **TV-001 —** Google TV / Android TV pela rede (ADB): ligar, trocar a entrada HDMI, standby ao voltar. (#126, 1.6.0; a primeira versão, #93, foi revertida no #125, §2.3) Fora da 1.7 (D-26): escondido, código e ajustes guardados. +- [x] **TV-001 —** Google TV / Android TV pela rede (ADB): ligar, trocar a entrada HDMI, standby ao voltar. (#126, 1.6.0; a primeira versão, #93, foi revertida no #125, §2.3) - [ ] **TV-002 (P2) —** LG webOS. Partir do #94 (fechado, já revisado) e do código C# antigo do Tako (§3). - [ ] **TV-003 (P2) —** Samsung Tizen, a partir do código C# antigo do Tako. - [ ] **TV-004 (P3) —** HDMI-CEC com adaptador USB, para TVs sem rede. Issue #75; partir do #96. diff --git a/docs/TESTING.md b/docs/TESTING.md index 6c281a9..6e9b5bb 100644 --- a/docs/TESTING.md +++ b/docs/TESTING.md @@ -342,6 +342,12 @@ Pré-condições: lançador = Steam Big Picture; Ajustes → "Mandar a Steam par ## 3c. Controle da TV: Google TV / Android TV (issue #75) +### Volta na 1.7.1 (#207) + +- [ ] Sistema mostra de novo a categoria **TV**; o direcional e o mouse chegam nela e nas outras sem buracos. Resultado: ______ +- [ ] Com a TV configurada na 1.6 (ou no Legacy): o `config.json` mantém o bloco `tv`, a sessão liga a TV e troca a entrada, e a volta a coloca em espera se a opção estiver ligada (o log tem "TV: ligar" / "TV: desligar"). Resultado: ______ +- [ ] Com um **Comando de entrada** próprio (ex.: `am start -n com.smartdevice.livetv/skyworth.skyworthlivetv.osd.ui.mainActivity.LiveTvScreenActivity` numa Coocaa/Skyworth): a TV vai para a entrada do PC. Resultado: ______ + Pré-condições: TV Google TV / Android TV na mesma rede do PC, com **Depuração USB** (ou "Depuração pela rede") ativada nas Opções do desenvolvedor; Ajustes → TV → *Google TV / Android TV* com o IP e a entrada HDMI do PC. - [ ] **Testar agora** na primeira vez: a TV pede "Permitir depuração"; com "Sempre permitir" + "Permitir", a TV acorda e vai para a entrada do PC. O status mostra sucesso. Resultado: ______ @@ -649,11 +655,6 @@ Pré-condições: a opção **Tirar o ponteiro do mouse do caminho** ligada (é - [ ] Com o app em segundo plano (Alt + Tab para outra janela), a parada não avança; ao voltar, ela conta o tempo de novo. Resultado: ______ - [ ] Com controle de PS5: o tour avança sozinho mesmo que os botões não respondam nele. Anotar se ✕ e ○ funcionam no tour. Resultado: ______ -## Controle da TV fora da 1.7 (#195) - -- [ ] Sistema não mostra mais a categoria **TV**; o direcional e o mouse andam pelas outras categorias sem buracos. Resultado: ______ -- [ ] Com uma Android TV que estava configurada na 1.6: uma sessão não liga a TV nem troca a entrada, e a volta não a coloca em espera (o log não tem linhas "TV: ligar" / "TV: desligar"). O `config.json` continua com o bloco `tv` como estava. Resultado: ______ - ## Remover um app pelo bloco da Início (#198) - [ ] Com dois apps adicionados pelo **+**: foco num deles, **☰** (ou OPTIONS) abre o menu com o nome do app, **Remover da Início** e **Cancelar**. **Remover da Início** tira o bloco (e do `config.json`); **Cancelar** ou B fecham sem mudar nada. Resultado: ______ diff --git a/src/ConsoleMode/Resources/Strings.de-DE.json b/src/ConsoleMode/Resources/Strings.de-DE.json index ad719e5..f10907b 100644 --- a/src/ConsoleMode/Resources/Strings.de-DE.json +++ b/src/ConsoleMode/Resources/Strings.de-DE.json @@ -416,7 +416,7 @@ "ConsoleTourQuickSettingsTitle": "Schnelleinstellungen", "ConsoleTourQuickSettingsBody": "Audioausgabe, Auflösung, HDR und FPS-Limit für die nächste Sitzung, nur einen Tastendruck entfernt. Zurück am PC ist alles wieder wie vorher.", "ConsoleTourSystemTitle": "Alle Einstellungen", - "ConsoleTourSystemBody": "Der Tab System enthält alle Einstellungen, nach Kategorie: Spielbildschirm, was beim Start passiert, Controller, Extras und die App. {0} öffnet und schließt diesen Tab von überall.", + "ConsoleTourSystemBody": "Der Tab System enthält alle Einstellungen, nach Kategorie: Spielbildschirm, was beim Start passiert, Controller, TV, Extras und die App. {0} öffnet und schließt diesen Tab von überall.", "ConsoleTourShortcutsTitle": "Controller-Kürzel", "ConsoleTourShortcutsBody": "Wähle hier die Kürzel, die auch bei geschlossenem Fenster funktionieren: eines für den Konsolenmodus, eines für das Sitzungsmenü über dem Spiel und eines für die Rückkehr zum PC. Ein Kürzel ohne Kombination bewirkt nichts.", "ConsoleTourDoneTitle": "Alles bereit", diff --git a/src/ConsoleMode/Resources/Strings.en-US.json b/src/ConsoleMode/Resources/Strings.en-US.json index 4adbe29..40b0596 100644 --- a/src/ConsoleMode/Resources/Strings.en-US.json +++ b/src/ConsoleMode/Resources/Strings.en-US.json @@ -416,7 +416,7 @@ "ConsoleTourQuickSettingsTitle": "Quick settings", "ConsoleTourQuickSettingsBody": "Audio output, resolution, HDR and FPS limit for the next session, one press away. When you go back to the PC, everything goes back to how it was.", "ConsoleTourSystemTitle": "Every setting", - "ConsoleTourSystemBody": "The System tab holds every setting, by category: game display, what happens when entering, controller, extras and the app. {0} opens and closes this tab from anywhere.", + "ConsoleTourSystemBody": "The System tab holds every setting, by category: game display, what happens when entering, controller, TV, extras and the app. {0} opens and closes this tab from anywhere.", "ConsoleTourShortcutsTitle": "Controller shortcuts", "ConsoleTourShortcutsBody": "Pick the shortcuts that work even with this window closed here: one to enter console mode, one to open the session menu over the game and one to go back to the PC. A shortcut with no combination does nothing.", "ConsoleTourDoneTitle": "All set", diff --git a/src/ConsoleMode/Resources/Strings.es-ES.json b/src/ConsoleMode/Resources/Strings.es-ES.json index f6b3a75..0f13003 100644 --- a/src/ConsoleMode/Resources/Strings.es-ES.json +++ b/src/ConsoleMode/Resources/Strings.es-ES.json @@ -416,7 +416,7 @@ "ConsoleTourQuickSettingsTitle": "Ajustes rápidos", "ConsoleTourQuickSettingsBody": "Salida de audio, resolución, HDR y límite de FPS de la próxima sesión, a un botón de distancia. Al volver al PC, todo vuelve a como estaba.", "ConsoleTourSystemTitle": "Todos los ajustes", - "ConsoleTourSystemBody": "La pestaña Sistema reúne todos los ajustes, por categoría: pantalla de juego, qué pasa al entrar, mando, extras y la aplicación. {0} abre y cierra esta pestaña desde cualquier sitio.", + "ConsoleTourSystemBody": "La pestaña Sistema reúne todos los ajustes, por categoría: pantalla de juego, qué pasa al entrar, mando, TV, extras y la aplicación. {0} abre y cierra esta pestaña desde cualquier sitio.", "ConsoleTourShortcutsTitle": "Atajos del mando", "ConsoleTourShortcutsBody": "Elige aquí los atajos que funcionan incluso con esta ventana cerrada: uno para entrar en el modo consola, otro para abrir el menú de la sesión sobre el juego y otro para volver al PC. Un atajo sin combinación no hace nada.", "ConsoleTourDoneTitle": "Todo listo", diff --git a/src/ConsoleMode/Resources/Strings.fr-FR.json b/src/ConsoleMode/Resources/Strings.fr-FR.json index e97dfc3..7619cd8 100644 --- a/src/ConsoleMode/Resources/Strings.fr-FR.json +++ b/src/ConsoleMode/Resources/Strings.fr-FR.json @@ -416,7 +416,7 @@ "ConsoleTourQuickSettingsTitle": "Réglages rapides", "ConsoleTourQuickSettingsBody": "Sortie audio, résolution, HDR et limite d'IPS de la prochaine session, à une touche près. De retour sur le PC, tout redevient comme avant.", "ConsoleTourSystemTitle": "Tous les réglages", - "ConsoleTourSystemBody": "L'onglet Système réunit tous les réglages, par catégorie : écran de jeu, ce qui se passe à l'entrée, manette, extras et l'application. {0} ouvre et ferme cet onglet de partout.", + "ConsoleTourSystemBody": "L'onglet Système réunit tous les réglages, par catégorie : écran de jeu, ce qui se passe à l'entrée, manette, TV, extras et l'application. {0} ouvre et ferme cet onglet de partout.", "ConsoleTourShortcutsTitle": "Raccourcis de la manette", "ConsoleTourShortcutsBody": "Choisissez ici les raccourcis qui marchent même fenêtre fermée : un pour entrer en mode console, un pour ouvrir le menu de session par-dessus le jeu et un pour revenir au PC. Un raccourci sans combinaison ne fait rien.", "ConsoleTourDoneTitle": "Tout est prêt", diff --git a/src/ConsoleMode/Resources/Strings.pt-BR.json b/src/ConsoleMode/Resources/Strings.pt-BR.json index 0ad5d12..819300d 100644 --- a/src/ConsoleMode/Resources/Strings.pt-BR.json +++ b/src/ConsoleMode/Resources/Strings.pt-BR.json @@ -416,7 +416,7 @@ "ConsoleTourQuickSettingsTitle": "Ajustes rápidos", "ConsoleTourQuickSettingsBody": "Saída de áudio, resolução, HDR e limite de FPS da próxima sessão, a um botão de distância. Quando você volta ao PC, tudo volta ao que era.", "ConsoleTourSystemTitle": "Todas as configurações", - "ConsoleTourSystemBody": "A aba Sistema reúne todos os ajustes, por categoria: tela de jogo, o que acontece ao entrar, controle, extras e o app. {0} abre e fecha esta aba de qualquer lugar.", + "ConsoleTourSystemBody": "A aba Sistema reúne todos os ajustes, por categoria: tela de jogo, o que acontece ao entrar, controle, TV, extras e o app. {0} abre e fecha esta aba de qualquer lugar.", "ConsoleTourShortcutsTitle": "Atalhos do controle", "ConsoleTourShortcutsBody": "Escolha aqui os atalhos que funcionam mesmo com esta janela fechada: um para entrar no modo console, um para abrir o menu da sessão por cima do jogo e um para voltar ao PC. Atalho sem combinação definida não faz nada.", "ConsoleTourDoneTitle": "Tudo pronto", diff --git a/src/ConsoleMode/Resources/Strings.ru-RU.json b/src/ConsoleMode/Resources/Strings.ru-RU.json index a70d510..941970d 100644 --- a/src/ConsoleMode/Resources/Strings.ru-RU.json +++ b/src/ConsoleMode/Resources/Strings.ru-RU.json @@ -416,7 +416,7 @@ "ConsoleTourQuickSettingsTitle": "Быстрые настройки", "ConsoleTourQuickSettingsBody": "Аудиовыход, разрешение, HDR и ограничение FPS для следующего сеанса — в одно нажатие. Когда вы возвращаетесь к ПК, всё становится как было.", "ConsoleTourSystemTitle": "Все настройки", - "ConsoleTourSystemBody": "Вкладка Система содержит все настройки по категориям: игровой экран, что происходит при входе, геймпад, дополнения и приложение. {0} открывает и закрывает эту вкладку откуда угодно.", + "ConsoleTourSystemBody": "Вкладка Система содержит все настройки по категориям: игровой экран, что происходит при входе, геймпад, ТВ, дополнения и приложение. {0} открывает и закрывает эту вкладку откуда угодно.", "ConsoleTourShortcutsTitle": "Сочетания геймпада", "ConsoleTourShortcutsBody": "Выберите здесь сочетания, которые работают даже при закрытом окне: одно для входа в режим консоли, одно для меню сеанса поверх игры и одно для возврата к ПК. Сочетание без комбинации ничего не делает.", "ConsoleTourDoneTitle": "Всё готово", diff --git a/src/ConsoleMode/Services/ConsoleEngine.cs b/src/ConsoleMode/Services/ConsoleEngine.cs index 01decb3..cc07527 100644 --- a/src/ConsoleMode/Services/ConsoleEngine.cs +++ b/src/ConsoleMode/Services/ConsoleEngine.cs @@ -93,8 +93,8 @@ public void Start(AppConfig config, MonitorInfo? focusInfo, FuncSettings → Test: time to press "Allow" on the TV the first time. public static readonly TimeSpan PairingTimeout = TimeSpan.FromSeconds(60); - /// - /// Off for 1.7: the owner left TV control (Google TV / Android TV) out of the release. The System → TV category is - /// hidden and sessions don't wake the TV or put it in standby; the code and the saved settings stay, so turning - /// this back on brings the feature back as it was. - /// - public static bool IsAvailable => false; - public static ITvController? Create(string provider) => provider switch { TvControlConfig.AndroidTv => new AndroidTvController(), diff --git a/src/ConsoleMode/ViewModels/MainViewModel.Tv.cs b/src/ConsoleMode/ViewModels/MainViewModel.Tv.cs index 313fe77..278295b 100644 --- a/src/ConsoleMode/ViewModels/MainViewModel.Tv.cs +++ b/src/ConsoleMode/ViewModels/MainViewModel.Tv.cs @@ -24,9 +24,6 @@ public partial class MainViewModel private string TvProvider => SelectedTvProvider?.Value ?? TvControlConfig.None; - /// The System → TV category shows only while the feature is in (). - public bool IsTvControlAvailable => TvControlService.IsAvailable; - public bool IsTvEnabled => TvProvider != TvControlConfig.None; public bool IsTvAndroid => TvProvider == TvControlConfig.AndroidTv; public bool UsesTvHost => IsTvAndroid; diff --git a/src/ConsoleMode/Views/ConsoleHomeView.xaml b/src/ConsoleMode/Views/ConsoleHomeView.xaml index 32aa479..261f9f4 100644 --- a/src/ConsoleMode/Views/ConsoleHomeView.xaml +++ b/src/ConsoleMode/Views/ConsoleHomeView.xaml @@ -531,9 +531,7 @@ OpacityTransition="{StaticResource ConsoleFade}"/> - -