# KEY2-SPEC-02 : regroupement du menu Clavier par fonctionnalité (étude) Fiche KEY2-SPEC-02 — Niveau N3 — Modèle prévu opus (Medium) | utilisé Opus 5.5 — Session « Medium · KEY2 » — Skills : sk-protocol, lp-doc. Date : 2026-10-20. Ordre de Big Boss `local_104ff22d`, après COMMUN-18.14 (PASS). Demande de l'utilisateur, citée : « 14 ok mais il faudrait regroupé les touche par fonctionalité ». Étude seule : aucun code, aucune copie UE. Fichier lu : `Source/LifePlay/LPKeyboardSubsystem.cpp` (MD5 9d450aaf) et `Config/DefaultInput.ini`. ## 0. Décision de l'utilisateur (2026-10-20, citée par Big Boss) « regroupement des touches ok ». Big Boss l'applique avec les recommandations de cette fiche : 1. les 9 sections du § 2, dans l'ordre et avec les noms proposés ; 2. option **(A)** : les flèches à deux places, même liaison ; 3. Pause dans Time, TestScenes dans System ; 4. RotateCamera en Camera seulement, signalé dans le libellé d'ActionPanel. Réalisé par KEY2-IMPL-02 (affichage seul, `LPKeyboardSubsystem.cpp`, instantané `KEY2-IMPL3`) : MD5 9d450aaf → 0eb6a592 ; +63 / −62 ; CRLF gardé (1491 / 1491). Rien n'est changé dans `DefaultInput.ini`, dans `LPKeyboard.ini` ni dans les noms internes ; aucune migration. Compilation en attente du jeton UE. ## 1. État actuel (établi) `GroupFor` (`LPKeyboardSubsystem.cpp:207-262`) range chaque action ou axe dans une section (`Order`) et, pour la section Scene, dans un bloc (`Sub`). Le tri se fait par section, puis bloc, puis libellé (`:489-505`), et le dessin par titre de section, puis sous-titre de bloc (`:508-535`). | Ordre | Section affichée | Contenu | |---|---|---| | 0 | Movement | MoveForward, MoveRight | | 2 | Interaction | Interact, SwapRoles | | 3 | Menus | MainMenu, CharacterMenu, Inventory, Journal, ContactsMenu, CityMenu, StatMenu, ModuleMenu, SearchBarToggle, Pause | | 4 | Favorites | Favorite0 à Favorite9 | | 5 | Time | SpeedUp, SpeedDown | | 6 | World | NextBuilding, PreviousBuilding | | 7 | Save | QuickSave, Quickload | | 8 | Scene › Camera | ScrollDownUp, RotateCamera, SwitchCamera, CameraHeight | | 8 | Scene › Characters | option « Move couple with », ManualAnimating, l'axe de rotation, CoupleMoveY, LeftRight, DownUp | | 8 | Scene › Actions | ActionPanel | | 8 | Scene › Other | TestScenes, Recommended | Défauts pour le joueur : - les commandes générales de la caméra (SwitchCamera, RotateCamera, zoom) sont rangées sous « Scene », alors qu'elles servent partout ; - Pause est dans Menus et non dans Time ; - les flèches n'apparaissent que dans le bloc du couple, alors qu'elles déplacent aussi la vue de dessus hors scène ; - Interact (Interaction) est séparé d'ActionPanel (Scene › Actions). Ne sont pas affichés, et ne le seront pas : ActionX / ActionY et CursorX / CursorY (axes de la souris, refusés par `IsRemappable`, `:75-78`). ## 2. Regroupement proposé (ordre d'affichage) Libellés en anglais, comme le reste du menu ; la traduction est donnée entre parenthèses. | Ordre | Section (libellé) | Actions et axes | Remarque | |---|---|---|---| | 1 | **Movement** (Déplacement) | MoveForward, MoveRight | inchangé | | 2 | **Camera** (Caméra) | SwitchCamera, RotateCamera, ScrollDownUp (zoom), CameraHeight | sort de Scene ; CameraHeight n'agit qu'en scène : libellé « Camera Height Up / Down (scene) » | | 3 | **Map & World** (Carte et monde) | LeftRight, DownUp (vue de dessus), NextBuilding, PreviousBuilding | les flèches y sont libellées « Map Right / Left / Forward / Back » | | 4 | **Couple (scene)** (Couple en scène) | option « Move couple with », CoupleMoveY (Up / Down), DownUp, LeftRight (couple), ManualAnimating, l'axe de rotation existant | les flèches y sont libellées « Couple Forward / Back / Right / Left » | | 5 | **Actions & Interaction** (Actions et interaction) | Interact, ActionPanel, SwapRoles, Recommended | regroupe Interact et ActionPanel | | 6 | **Menus** | MainMenu, CharacterMenu, Inventory, Journal, ContactsMenu, CityMenu, StatMenu, ModuleMenu, SearchBarToggle | Pause en sort | | 7 | **Time** (Temps) | Pause, SpeedUp, SpeedDown | Pause y entre | | 8 | **Favorites** (Favoris) | Favorite0 à Favorite9 | inchangé | | 9 | **System** (Système) | QuickSave, Quickload, TestScenes | Save devient System ; TestScenes y entre (zone de commande interne, KEY1-CART-01 § 12.3) | Plus de sous-titres de bloc : chaque section est courte (2 à 10 entrées). ## 3. Actions qui appartiennent à deux groupes | Action ou axe | Groupes | Raison | |---|---|---| | LeftRight, DownUp (flèches) | Map & World, Couple (scene) | vue de dessus hors scène, couple en scène (CAM2-SPEC-02 § 7) | | ScrollDownUp (molette) | Camera, Couple (scene) ? | zoom hors scène ; en scène, rôle à confirmer (KEY2-DIAG-02 § 3.4, et point b de la relecture CAM2-IMPL-03) : à classer en Camera seulement tant que ce n'est pas établi | | RotateCamera (Alt, clic du milieu) | Camera ; Actions (en scène) | un appui bref en scène bascule aussi le panneau d'action (`LPCameraModeSubsystem.cpp`, TickPanelClick). Proposé : Camera seulement, avec la mention dans le libellé d'ActionPanel (« Action Panel (also Alt / middle click) ») | | ManualAnimating (Ctrl, clic droit) | Couple (scene) | Ctrl sert aussi de modificateur aux menus (Ctrl+C, Ctrl+E…) : rien à dupliquer, c'est la touche seule | **Affichage d'une action à deux groupes**, à choisir par l'utilisateur : - **(A) Deux places, recommandé.** La même liaison apparaît dans les deux sections, avec le libellé de la section (« Map … » / « Couple … »). Changer la touche dans l'une la change dans l'autre, car c'est la même liaison : le menu se redessine depuis les réglages (`Rebuild`, `RefreshMenu`). Le joueur trouve la touche là où il la cherche. - **(B) Une seule place.** Section principale Couple (scene), avec un libellé à double sens comme aujourd'hui (« Forward (map view / couple) »). C'est plus court, mais on ne la trouve pas dans Map & World. ## 4. Changements dans `LPKeyboardSubsystem.cpp` (prévision, aucun autre fichier) 1. `GroupFor` (`:208-262`) : nouvelle table de 9 sections, conforme au § 2. Les constantes `KbSceneOrder` et `KbCharactersSub` (`:48-49`) deviennent `KbCoupleOrder` ; les sous-titres de bloc (`Sub`, `SubTitle`) sont retirés. 2. Option (A) seulement : - `GroupFor` rend une liste de sections (`TArray`, deux entrées pour LeftRight et DownUp) ; - la construction de `Binds` (`:453-488`) ajoute une ligne par section ; - `FBindRow` reçoit l'ordre de section pour le tri et le dessin (`:489-535`) ; - `AxisLabel` (`:163-196`) prend la section pour choisir « Map … » ou « Couple … ». 3. L'option « Move couple with » s'accroche au début de la section Couple (scene), au lieu du bloc Characters (`:533-535`). 4. Libellés : « Camera Height Up / Down (scene) » ; « Action Panel (also Alt / middle click) » ; flèches selon (A) ou (B). 5. Aucun changement de `DefaultInput.ini`, de `LPKeyboard.ini`, de nom interne ni de migration : le regroupement ne touche que l'affichage. 6. Contenu adulte (doc 27) : aucun libellé nouveau. L'axe de rotation garde « Rotation + / − ». ## 5. Coût estimé | Étape | Option (B) | Option (A) | |---|---|---| | IMPL (lp-impl ou la session, hors copie UE, sous instantané) | environ 40 lignes changées, 1 fichier | environ 90 lignes changées, 1 fichier | | Build (jeton UE) et VAL statique | 1 build éditeur + Development, environ 5 min | idem | | Essai en jeu | une capture du menu Clavier : ordre des 9 sections ; Change sur une flèche | idem, plus : changer une flèche dans Map & World la change dans Couple (scene) | | Risque | faible (affichage seul) | faible à moyen (tri et dessin avec lignes doublées ; Remove d'une ligne doublée retire la liaison des deux sections, ce qui est voulu) | ## 6. Questions pour l'utilisateur (par Big Boss) 1. L'ordre et les noms des 9 sections du § 2 conviennent-ils ? 2. Une action à deux groupes (flèches) : **(A)** deux places, recommandé, ou **(B)** une seule place ? 3. Pause dans Time, et TestScenes dans System : d'accord ? 4. RotateCamera (Alt, clic du milieu) : en Camera seulement, avec la mention dans le libellé d'ActionPanel ? Fichiers écrits : ce livrable. À commiter : A `Docs/Migration/etat/REL/KEY2/KEY2-SPEC-02.md`. Aucun git qui écrit.