29 KiB
KEY2-SPEC-01 : panneau de touches K2 à K6 (alpha 2026.10.2.2a, build 1)
Fiche KEY2-SPEC-01 — Niveau N3 — Modèle prévu opus (Medium) | utilisé Opus 5.5 — Session « Medium · KEY2 » — Skills : lp-lot, sk-protocol, lp-doc.
Ordre : Big Boss local_104ff22d, 2026-10-20. Feuille de route Docs\37_Feuille_De_Route_Alpha2.md § 1.1 (K2 à K6, l. 36-40), § 3 (l. 170) et § 3.3 (risques 1 et 4, l. 189-197).
Sans copie UE : lecture de fichiers seulement, aucune modification de code, de config ni d'asset. Les modifications décrites ici sont à faire par l'IMPL.
Niveaux de preuve : établi (fichier:ligne relu) ; estimé (déduit du code, à éprouver en jeu) ; à lire (Blueprint, MCP).
Révision 2 (2026-10-20) : décision de l'utilisateur sur Q1 et Q3 (§ 1, décision 5) ; § 4, § 6, § 9, § 10 et § 11 mis à jour. Toujours sans IMPL.
Révision 3 (2026-10-20) : décisions de l'utilisateur sur Q2 et Q4 (§ 1, décisions 6 et 7) ; § 6, § 7 et § 11 mis à jour.
Révision 4 (2026-10-20) : réponse de l'utilisateur à Q5 (§ 1, décision 8) ; nouveau § 8b ; § 11 et § 12 mis à jour.
Révision 5 (2026-10-20), finale pour la build 1 : décisions sur Q6, Q7 et Q9 (§ 1, décisions 9 à 11). Q8, Q10, Q11 et Q12 restent sans réponse : l'IMPL applique la recommandation de la SPEC, notée « par défaut » au § 11.
Révision 6 (2026-10-20) : résultats de KEY2-CART-02 (lecture MCP) intégrés au § 6 et au § 8b (§ 8c). Aucune nouvelle décision de l'utilisateur.
Révision 7 (2026-10-20), finale pour l'IMPL : Q10 tranchée (« QWERTY en premier »), Q8 et Q11 tranchées aux valeurs recommandées, Q12 : Y du monde par défaut, repère réglé par une seule constante (ordre de Big Boss). § 1, § 4, § 8c, § 9 à § 11 mis à jour.
Révision 8 (2026-10-20) : Q12 tranchée par l'utilisateur (décision 15) ; arbitrages de Big Boss (décision 16). Toutes les questions sont tranchées.
1. Décisions de l'utilisateur (citées par Big Boss, 2026-10-20)
- « Lettre : la touche suit la lettre. C reste sur camera, E pour interaction. »
- « oui pour C & E . décommissionner les touche du pavé, + et - feront l'affaire »
- « 2 non » : Equals et Hyphen sont retirés aussi.
- « non on laisse tout en build 1 » : K2 à K6 restent dans la build 1 (doc 37 l. 189-190).
- Révision 2, sur Q1 et Q3 : « on libère les touche W et A, si le clavier est configurer proprement en AZERT ou en QWERTY elle n'ont plus a être affecté. on peut le récupérer pour la touche action comme dans la plupart des jeux A = action et E interaction (en AZERTY) ». Lecture de Big Boss :
- Q1 : préréglage exclusif (AZERTY : Z Q S D seuls ; QWERTY : W A S D seuls) ;
- Q3 :
ActionPanelsur A en AZERTY ; E reste Interact. La touche d'action en QWERTY (Q proposé par Big Boss, même position physique) est posée à l'utilisateur : Q9, non tranchée.
- Révision 3, Q2 : « Q2 une seul touche » : K4 garde une seule touche
Interact(E), sans touches séparées pour s'asseoir et parler. - Révision 3, Q4 : « Q4 oui » : la capture refuse le clic gauche seul ; elle ne l'accepte qu'avec un modificateur.
- Révision 4, Q5 : « actuellement on drag les personnages d'un endroit à un autre avec la click gauche de la souris. l'utilisateur pourrait choisir de le flaire au clavier (Arrow) pour réaffecter le click gauche sur une autre fonction. de plus il faut qu'une touche soit affecté sur 1 action caméra pour ajuster la hauteur de la vue, 2 une autre touche action pour repositionné le couple sur l'axe y on conserver la touche action pour afficher le panneau à moins que l'utilisateur en décide autrement ». Lecture de Big Boss :
- (a) le joueur peut choisir de déplacer les personnages aux flèches au lieu du glisser au clic gauche, ce qui libère le clic gauche ;
- (b) une nouvelle action de caméra, remappable : hauteur de la vue ;
- (c) une nouvelle action, remappable : repositionner le couple sur l'axe Y ;
- (d) la touche d'action garde l'ouverture du panneau par défaut, et reste remappable.
- Révision 5, Q9 : « 1 oui » : la touche d'action du préréglage QWERTY est Q.
- Révision 5, Q6 : « Q6 neutre pour le moment. » : la section porte le seul libellé neutre « Scene » ; aucun libellé adulte, ni dans le C++, ni dans une donnée privée, pour la build 1.
- Révision 5, Q7 : « Q7 pour la prochaine build » : Y et N restent lus en dur par
PCdans la build 1 ; leur remappage (modification dePCparlp-mcp-bp) passe en build 2. - Révision 7, Q10 : « QWERTY en premier » : au premier lancement, le préréglage QWERTY s'applique d'office (W A S D, action = Q, E = Interact) ; la touche d'action marche sans Apply.
- Révision 7, Q8 et Q11 (valeurs recommandées, non changées par l'utilisateur, transmises par Big Boss) : Tilde retiré de TestScenes ; en « Arrows only », le clic droit garde la rotation du couple.
- Révision 7, Q12 (ordre de Big Boss) :
CoupleMoveYsur Y du monde par défaut ; le repère (monde ou couple) est une seule constante du C++, facile à changer ; la recommandation part à l'utilisateur. - Révision 8, Q12 : « Q12 : axe Y du monde, comme le X déjà géré par PC ; touches G/B et V/X d'accord. » : CoupleMoveY sur Y du monde (V +, X −), CameraHeight sur G (+) / B (−).
- Révision 8, arbitrages de Big Boss : écarts E1, E4 à E7 de l'IMPL acceptés ; la migration ajoute aussi G / B, V / X et ActionPanel sur les touches libres ; texte d'aide du jeu mis à jour.
Conséquences retenues par cette SPEC :
- Disposition par lettre : une action liée à « M » répond à la touche marquée M, quelle que soit la disposition. Seul le groupe de déplacement dépend de la disposition (préréglages K2, § 4).
- C = SwitchCamera, Ctrl+C = CityMenu ; E = Interact, Ctrl+E = CharacterMenu.
- SpeedUp = Add seul, SpeedDown = Subtract seul : NumPadSix, NumPadFour, Equals et Hyphen sont retirés de ces deux actions. Favorite4 et Favorite6 gardent Four / Six et NumPadFour / NumPadSix.
2. État de départ (établi)
| Sujet | Constat | Source |
|---|---|---|
| Système d'entrée | entrée classique : 55 ActionMappings et 15 AxisMappings ; aucun asset IA_* ni IMC_* ; classe de joueur EnhancedPlayerInput |
Config/DefaultInput.ini:95-164, :165-166 ; KEY1-CART-01 § 1 |
| Menu des touches | panneau Slate SLPKeyboardMenu dans l'onglet Clavier des réglages (TakeEmbeddedPage) ou en fenêtre (OpenKeyboardMenu) ; boutons Change, Add, Remove par liaison ; un bouton Reset |
LPKeyboardSubsystem.cpp:228-305, :603-638 ; LPSettingsSubsystem.cpp:873-875 |
| Capture | FKeyboardProcessor::HandleKeyDownEvent seulement : aucune capture de bouton de souris ; une touche de modificateur seule est refusée (!Key.IsModifierKey()) |
LPKeyboardSubsystem.cpp:487-522, :506 |
| Filtre | IsRemappable : refuse les touches analogiques, les axes 1D et la manette ; accepte les boutons de souris |
:75-78 |
| Accords | Shift, Ctrl, Alt, Cmd enregistrés ; ChordText n'affiche pas Cmd |
CommitKey :685-743 ; :200-216 |
| Conflit à l'enregistrement | CommitKey retire la même touche (mêmes modificateurs) des autres actions et des axes, et l'annonce |
:707-727 |
| Persistance | Saved\Config\Windows\LPKeyboard.ini ; à l'ouverture, ce fichier remplace toutes les liaisons de DefaultInput.ini ; créé avec les touches actuelles s'il manque |
:36-39, :531-539, :834-899 |
| Valeurs d'origine | Reset relit Config\DefaultInput.ini ligne à ligne |
:766-832 |
| Groupes affichés | Movement, Camera, Interaction, Menus, Favorites, Time, World, Save, Scene, Other | GroupFor :154-197 |
| Libellés | anglais, en dur dans le C++ | ActionLabel :80-111 |
| Interact | lu par le C++ du contrôle direct, avec modificateurs exacts | LPDirectControlSubsystem.cpp:57, :159-166, :189-204 |
Touches en dur dans PC |
LeftShift, RightShift, LeftCtrl, RightCtrl, F12, PageDown, Y, N (ReactLead), LeftMouseButton, RightMouseButton |
KEY1-CART-01 § 12.2 |
3. Double déclenchement de C et E sous Ctrl (question de Big Boss)
- E / Ctrl+E (établi) :
Interactexige des modificateurs identiques (ModifiersMatch,LPDirectControlSubsystem.cpp:159-166). Sous Ctrl, E ne déclenche donc pas Interact ; Ctrl+E ne déclenche que CharacterMenu (lu parPC). - C / Ctrl+C (établi pour le code moteur, estimé pour l'effet en jeu) : dans l'entrée classique, un mappage sans Ctrl répond aussi quand Ctrl est enfoncé (
PlayerInput.cpp:1041-1044du moteur 5.8 :bCtrl == false || IsCtrlPressed()). Mais le moteur retire l'accord le moins précis quand un accord plus précis sur la même touche est trouvé dans la même passe (PlayerInput.cpp:1048-1060,FInputChord::GetRelationship→Masks). SwitchCamera (C) et CityMenu (Ctrl+C) sont tous deux lus dansPC(KEY1-CART-01 § 12.2) : Ctrl+C devrait donc déclencher CityMenu seul. - Reste à éprouver en jeu (VAL) : Ctrl+C ouvre la ville sans changer de caméra ; Ctrl+E ouvre la fiche sans interaction. Effet de bord connu et inchangé : Ctrl déclenche aussi
ManualAnimating(LeftControl, RightControl,DefaultInput.ini:111-112) etSetBlockHotkeydansPC(KEY1-CART-01 § 12.2). - Si l'essai montre un double déclenchement : correctif dans
PC(gardeBranchsur Ctrl) parlp-mcp-bp, hors de cette SPEC.
4. K2 : liste des dispositions et bouton « Apply »
Interface. En tête du panneau, au-dessus de la liste : une liste déroulante (SComboBox<TSharedPtr<FString>>) avec « QWERTY » et « AZERTY », un bouton « Apply » et le texte de la disposition en cours (« Layout: QWERTY », « Layout: AZERTY » ou « Layout: custom »).
Préréglages exclusifs (CAM3-RECH-01 § 5.3 ; décisions 1 et 5). Le groupe de déplacement et la touche d'action dépendent de la disposition ; les autres actions suivent la lettre.
| Liaison | QWERTY | AZERTY | Décision |
|---|---|---|---|
| MoveForward +1 | W | Z | décision 5 |
| MoveForward −1 | S | S | décision 5 |
| MoveRight −1 | A | Q | décision 5 |
| MoveRight +1 | D | D | décision 5 |
| ActionPanel (§ 6) | Q | A | décisions 5 (AZERTY) et 9 (QWERTY) |
| Interact | E | E | décisions 1 et 5 (inchangé) |
Une disposition n'a plus que ses 4 touches de déplacement : W et A en AZERTY, Z et Q en QWERTY, ne sont plus liées au déplacement (décision 5).
Apply :
- retire toutes les liaisons actuelles de
MoveForward,MoveRightetActionPanel; - pour chaque touche du préréglage, retire la même touche des autres actions et axes (même règle que
CommitKey,:707-727), et l'annonce dans la ligne d'état ; - ajoute les 5 liaisons du préréglage (4 de déplacement et
ActionPanel), puisApplyToPlayer()(:933-950), qui enregistreLPKeyboard.ini; - écrit la disposition choisie dans
LPKeyboard.ini, section[LPKeyboard], cléLayout=QWERTY|AZERTY. Toute modification manuelle ultérieure du groupe de déplacement passe la clé àLayout=Custom.
Disposition au premier lancement et Reset (décision 12, Q10 tranchée) :
DefaultInput.iniporte le préréglage QWERTY : W, S, A, D pour le déplacement,ActionPanel= Q,Interact= E. Z (avancer) et Q (gauche) ne sont plus liés au déplacement par défaut.- Premier lancement (pas de
LPKeyboard.ini) : les touches deDefaultInput.inis'appliquent,Layout=QWERTYest écrit. - Reset : rend les touches de
DefaultInput.ini, puis, siLayout=AZERTYest enregistré, réapplique le préréglage AZERTY ;Layoutest gardé. Un joueur AZERTY reste donc en AZERTY après Reset ; tous les autres reviennent en QWERTY. - Joueurs ayant déjà un
LPKeyboard.ini(migrationVersion=2, § 5) : leurs touches de déplacement ne sont pas changées ;ActionPanelest ajouté sur Q seulement si Q n'est lié à rien dans leur fichier, sinon il reste sans touche et la ligne d'état invite à choisir une disposition ;Layout=Customest écrit.
Aucune détection de la langue du système (CAM3-RECH-01 § 5.2 : peu fiable).
5. Décommission du pavé, de Equals et de Hyphen
Config/DefaultInput.ini: retirer les 4 lignes:113(SpeedUp NumPadSix),:114(SpeedDown NumPadFour),:123(SpeedUp Equals),:124(SpeedDown Hyphen). Garder:115(Add),:116(Subtract),:142(Favorite4 NumPadFour),:144(Favorite6 NumPadSix).- Joueurs déjà équipés d'un
LPKeyboard.ini: ce fichier remplace toutes les liaisons (:834-899), donc le retrait dansDefaultInput.inine les atteindrait pas (établi par lecture du code). Migration proposée dansLoadSaved:- clé
[LPKeyboard] Version; absente ou inférieure à 2 → retirer ces 4 liaisons exactes (action, touche, modificateurs tous faux) si elles sont présentes, puis écrireVersion=2; - aucune autre liaison du joueur n'est touchée ; une ligne de journal
LogLifePlaydonne le nombre de liaisons retirées.
- clé
5b. Tilde de TestScenes et console du moteur (ajout du 2026-10-20)
- Configuration (établi) :
TestScenesest lié à Tilde (DefaultInput.ini:121) et à Insert (:122) ; Tilde et ² sont aussi des touches de la console (ConsoleKeys,:168-170). - Essais en jeu (établi, cités par Big Boss) :
- COMMUN-14.16 : « ² affiche la console du moteur » ; sur AZERTY, la touche de Tilde ouvre la console et non la zone de scène ;
- COMMUN-14.13 : Insert ouvre bien la zone de scène (PASS).
- Lecture : la liaison Tilde de
TestScenesne sert à rien quand la console prend la touche, comme sur AZERTY. Sur une disposition où Tilde n'est pas prise par la console, elle peut déclencher les deux à la fois (estimé, non essayé). Dans les deux cas, elle ne suit pas la règle de la lettre : la touche Tilde (OEM_3) n'a pas le même caractère selon la disposition (KEY1-CART-01 § 6). - Proposé (Q8) :
- retirer la ligne
:121(TestScenes Tilde) deDefaultInput.iniet garder Insert ; - ajouter cette liaison exacte à la migration
Version=2; - ne pas toucher aux
ConsoleKeys.
- retirer la ligne
- Preuve : en jeu, Insert ouvre la zone de scène ; Tilde et ² n'ouvrent que la console, sur QWERTY et sur AZERTY.
6. K3 et K4 : entrées « action » et « interaction »
- K4 (interaction), décidé (décision 6) : une seule touche, l'action
Interactexistante (E,DefaultInput.ini:127), affichée dans le groupe « Interaction » (GroupFor:170-173) et remappable ; le C++ du contrôle direct la lit (LPDirectControlSubsystem.cpp:189-204) et l'interaction (s'asseoir, parler) dépend de la cible. Aucune actionSitniTalkn'est ajoutée ; K4 se réduit à garderInteractvisible et remappable dans le menu, dans le groupe « Interaction ». - K3 (action) et l'« entrée pour afficher le panneau d'action » de K6 sont lus ici comme une même action nouvelle,
ActionPanel, qui ouvre le panneau d'action. Ce qui ouvre ce panneau aujourd'hui n'est pas connu : à lire par MCP (BlueprintsUI/Action,UI/SexAction,PC,Person) avant l'IMPL (fiche KEY2-CART-02). Selon le résultat :- la fonction d'ouverture est appelable depuis le C++ (événement ou fonction d'un widget ou de
PC) : le C++ litActionPanelcommeInteractPressedet l'appelle ; - sinon, un nœud d'entrée
ActionPanelest ajouté dansPCparlp-mcp-bp(instantané, fiche, BUILD-GO).
- la fonction d'ouverture est appelable depuis le C++ (événement ou fonction d'un widget ou de
- Valeur par défaut d'
ActionPanel(révision 2) : A en AZERTY (décision 5), posée par le préréglage (§ 4) ; en QWERTY, Q (décision 9). Pour mémoire, lettres libres sans modificateur aujourd'hui : B, G, H, K, L, O, U, V, X (relevé surDefaultInput.ini:95-164, sans compter Y et N, en dur dansPC).
7. K5 : capture de la souris et des combinaisons
- Boutons de souris : ajouter
HandleMouseButtonDownEventàFKeyboardProcessor. Pendant une capture, il appelleCommitKeyavec le bouton et les modificateurs duFPointerEvent, puis consomme l'événement.- Clic gauche, décidé (décision 7) : le clic gauche seul est refusé pendant une capture, car le clic suivant sur l'interface serait pris pour la touche ; la ligne d'état le dit. Avec un modificateur (Shift, Ctrl, Alt, Cmd), il est accepté.
- Boutons acceptés seuls : droit, milieu, Thumb1, Thumb2.
- Molette (
MouseScrollUp,MouseScrollDown) : parHandleMouseWheelOrGestureEvent, pour les actions seulement ; les axes gardentMouseWheelAxis. - Modificateur seul (par exemple LeftControl pour
ManualAnimating,DefaultInput.ini:111-112) : aujourd'hui refusé (:506). Proposé : il est accepté au relâchement, si aucune autre touche n'a été pressée pendant l'appui. - Combinaisons : Shift, Ctrl, Alt et Cmd + une touche, déjà gérées ; ajouter Cmd à
ChordText(:200-216). Deux touches ordinaires ensemble (par exemple A+B) : non gérées par l'entrée classique, hors périmètre. - Touches réservées : les touches lues en dur par
PC(§ 2 : Shift, Ctrl, F12, PageDown, Y, N, clic gauche, clic droit) sont acceptées, mais la ligne d'état avertit (« also used by the game: … »). Elles ne sont pas refusées, carManualAnimatingutilise déjà RightMouseButton et Ctrl.
8. K6 : section de scène du menu des contrôles
Section « Scene », dans cet ordre :
- Bloc caméra :
LeftRight,DownUp,ScrollDownUp,RotateCamera,SwitchCamera, aujourd'hui groupe « Camera » (GroupFor:162-167). Ajout de la décision 8 :CameraHeight(§ 8b). - Bloc du déplacement des personnages (décision 8, détail au § 8b) : option du glisser au clic gauche,
CoupleMoveY, et les liaisons de scène existantes (ManualAnimating, axe de rotation:193). - Entrée du panneau d'action :
ActionPanel(§ 6).
Implémentation : la section se dessine en sous-titres dans Rebuild (:307-470), à partir d'un ordre de groupes étendu (FBindGroup.Order).
Règle du doc 27 (Docs\27_Plan_Migration_UE58.md:70 : rien de sexuel sur le dépôt public ; doc 37 l. 196-197) :
- le libellé adulte de la section ne s'écrit ni dans cette fiche, ni dans le C++ du dépôt public ;
- décidé (décision 10) : libellé neutre « Scene » seul pour la build 1. Proposition d'origine, écartée pour le moment : libellé adulte lu à l'exécution depuis une donnée privée (addon ou
Content), si l'utilisateur le veut (Q6).
Le code public contient déjà le nom technique de l'axe (LPKeyboardSubsystem.cpp:141, :193) : signalé, non traité ici.
8b. Déplacement des personnages, hauteur de la vue, couple sur Y (décision 8)
État du code (établi, sauf mention)
| Fonction | Où | Commande actuelle | Source |
|---|---|---|---|
| Glisser le couple pour le déplacer | C++, ULPCameraModeSubsystem::TickCoupleMouse |
clic gauche tenu et glissé sur le couple (sol ou lit), seuil de 5 px | LPCameraModeSubsystem.cpp:140, :1202, :1438-1458 ; aide affichée :2048 |
| Tourner le couple | même fonction | clic droit glissé | :1442, :2049 |
| Déplacer le couple au clavier | Blueprint (Room, « B2p-R », non lu) |
flèches, axes LeftRight et DownUp |
aide :2050, :2056 ; en scène, le C++ ne lit les flèches que pour le journal (:1241-1250) |
| Monter et baisser le couple | Blueprint (Room, B2p-R) |
molette | commentaire :2039-2041, aide :2050 |
| Caméra de scène : orbite, avancer, reculer | C++ | axes MoveForward et MoveRight (ZQSD ou WASD) |
:1186-1222 |
| Clic gauche | PC (K2Node_InputKey_14), en dur |
branches vers LeftMouseInput, OpenLeftMouse, CheckMouseForUI |
KEY1-CART-01 § 12.2 |
Les flèches déplacent donc déjà le couple en scène, d'après l'aide du jeu (:2050). Ce que le Blueprint fait exactement (repère de la caméra ou du monde, axes X et Y) est à lire.
Ce que la SPEC ajoute (proposé)
- Option « Move couple with » dans la section de scène du panneau :
- valeurs
Mouse and arrows(défaut, comportement actuel) ouArrows only; - clé
[LPKeyboard] CoupleDrag=Mouse|KeysdansLPKeyboard.ini; - avec
Keys,TickCoupleMouseignore le glisser au clic gauche ; le glisser au clic droit (tourner) reste, sauf avis contraire (Q11). - Limite : le clic gauche reste lu en dur par
PC(K2Node_InputKey_14). Pour « réaffecter le clic gauche sur une autre fonction », il faut que ces branches dePClaissent passer le clic pendant une scène. Sinon, une liaison du joueur sur le clic gauche se déclenchera en plus du code dePC. Lecture MCP d'abord (KEY2-CART-02), puis correctif parlp-mcp-bps'il le faut.
- valeurs
CameraHeight(axe, groupe Camera, section de scène) : monte (+1) ou baisse (−1) la caméra de scène. Le C++ le lit à côté de l'orbite (:1186-1222) ; borne et vitesse à fixer à l'essai.CoupleMoveY(axe, bloc du déplacement des personnages) : repositionne le couple sur l'axe Y.- Lecture proposée : Y du repère du couple (sa gauche et sa droite), car Y du monde dépend de l'orientation de la pièce (Q12).
- Le consommateur dépend de B2p-R : le C++ si la position du couple s'écrit depuis le C++, sinon
Room, parlp-mcp-bp. À lire avant l'IMPL.
ActionPanelgarde l'ouverture du panneau d'action (décision 8 d) et reste remappable (§ 6).
Touches par défaut proposées (règle de la lettre)
Les axes de l'entrée classique n'ont pas de modificateurs (FInputAxisKeyMapping : une touche et une échelle). Une lettre qui sert avec Ctrl ailleurs (C, E, F, M, T) répondrait donc aussi sous Ctrl : elle est écartée. Les flèches et la molette sont déjà prises en scène (tableau ci-dessus).
| Action | + | − | Pourquoi |
|---|---|---|---|
CameraHeight |
G | B | libres (DefaultInput.ini:95-164) ; même colonne, G au-dessus de B ; même place en AZERTY et en QWERTY (estimé) |
CoupleMoveY |
V | X | libres ; rangée du bas, de part et d'autre de C (SwitchCamera) ; même place dans les deux dispositions (estimé) |
Conflits vérifiés contre l'état visé (préréglages du § 4, décisions 1 à 7) :
- G, B, V et X ne sont liées à rien ;
- A (action en AZERTY), Q (action en QWERTY, Q9), E (Interact) et le déplacement (Z Q S D ou W A S D) ne sont pas touchés.
Non vérifié : qu'aucun nœud de touche en dur ne lit ces lettres hors de PC et des 20 Blueprints lus par KEY1 (KEY1-CART-01 § 12.1, avec sa limite).
Lecture MCP exigée avant l'IMPL (ajouts à KEY2-CART-02)
PC: sous-graphe deK2Node_InputKey_14(clic gauche) pendant une scène :LeftMouseInput,OpenLeftMouse,CheckMouseForUI.Room: le code B2p-R (flèches et molette vers la position du couple) : repère, axe Y, variable de position, point d'entrée appelable depuis le C++.- Panneau : celui qu'ouvre « Alt ou clic du milieu bref » (aide
:2051-2052) est-il le « panneau d'action » de K3 et K6, ou un panneau d'aide distinct ?
8c. Résultats de KEY2-CART-02 (établi, KEY2-CART-02.md § 2 à § 5 et § 10)
- K3, panneau d'action :
- en scène, le panneau d'action est
UI/SexAction, basculé par l'événementPC.LeftMouseSexOn(sans paramètre) ; le C++ l'appelle déjà sur un appui bref d'Alt ou du bouton du milieu (LPCameraModeSubsystem.cpp:1265-1300).ActionPanel(A en AZERTY, Q en QWERTY) appelle le même événement, par le mêmeProcessEvent, seulement pendant une scène et hors menu. Aucune modification de Blueprint. - Hors scène,
UI/Actions'ouvre au clic gauche sur le monde (StreetMap_Static.ActualLeftMouseInput). Aucun point d'entrée clavier :ActionPaneln'agit pas hors scène en build 1.
- en scène, le panneau d'action est
- Clic gauche en scène : quand
GI.SexOnest vrai,PCne fait rien du clic gauche (IfThenElse_15, broche vraie non reliée). Seul le C++ (TickCoupleMouse) s'en sert, pour glisser le couple. L'optionArrows onlylibère donc le clic gauche en scène sans modifierPC. - Flèches et molette en scène : lues dans
PC(K2Node_InputAxisEvent_3,_4,_7), pas dansRoom.DownUpet la molette déplacent le couple sur X du monde, de 5 par unité d'axe (SetActorLocation, X borné à [-3131470, 0]).LeftRightle fait tourner (CircleSexPersons).- Il n'existe aucun déplacement en Y, ni de hauteur de la caméra liée à une touche.
CoupleMoveY: ajouté en C++, sur Y du monde par défaut (décision 14 : même règle que le X dePC, pas de 5, appliqué à chaque acteur deGI.SexPersons, seulement quandRoom.bHiddenest vrai et hors menu). Le repère est une constante unique (CoupleMoveSpace: monde ou couple) ; Q12 part à l'utilisateur.CameraHeight: ajouté en C++ ; il agit sur la caméra de scène (SceneCamera), en bornes à fixer à l'essai.Roomborne déjàC2Heightà [-40, 150] pour ses propres commandes (KEY2-CART-02.md§ 5) : la même borne est proposée.- Fichier partagé :
LPCameraModeSubsystem.cppest modifié et non commité par CAM2 (git status). L'IMPL de KEY2 y ajouteCameraHeight,CoupleMoveY, l'optionCoupleDraget l'appel d'ActionPanel: gel ou ordre à fixer par Big Boss avant l'IMPL (boss.md§ 6).
9. Fichiers touchés par l'IMPL (prévision)
| Fichier | Changement | Copie UE |
|---|---|---|
Source/LifePlay/LPKeyboardSubsystem.h / .cpp |
K2 (liste, Apply, Layout), migration Version=2, K5 (souris, molette, modificateur seul, Cmd, avertissement), K6 (sections), libellé d'ActionPanel |
non pour l'écriture ; compilation : jeton |
Config/DefaultInput.ini |
retrait des l. 113, 114, 123, 124 et 121 ; retrait de Z (MoveForward) et Q (MoveRight −1) ; ajout d'ActionPanel = Q, de CameraHeight (G / B) et de CoupleMoveY (V / X) |
non (sous instantané) |
Consommateur d'ActionPanel (C++ ou PC) |
selon KEY2-CART-02 | lecture MCP, puis éventuellement lp-mcp-bp |
10. Preuves exigées (VAL de KEY2)
- Build
LifePlayEditoret Development à code 0, aucun avertissement nouveau (Tools\Build.ps1, lp-validate). - Migration : sur une copie de
LPKeyboard.inicontenant les 4 liaisons retirées, elles disparaissent après la première ouverture,Version=2est écrit et le journal donne le compte ; les autres liaisons sont intactes (diff avant / après). - Apply QWERTY puis AZERTY : le diff de
LPKeyboard.inimontre exactement les 5 liaisons du préréglage changées.- En AZERTY : Z, Q, S et D déplacent ; W n'agit plus ; A ouvre le panneau d'action ; E interagit.
- En QWERTY : W, A, S et D déplacent ; Z n'agit plus ; Q ouvre le panneau d'action.
- En jeu : Ctrl+C ouvre la ville sans changer de caméra ; Ctrl+E ouvre la fiche sans interaction ; Add et Subtract changent la vitesse, le pavé 4 et 6 n'agit que sur les favoris.
- K5 : clic droit, bouton du milieu, Ctrl+clic gauche, molette et Ctrl seul s'enregistrent et agissent ; le clic gauche seul est refusé avec un message.
- K6 : la section s'affiche dans l'ordre du § 8 ; aucun libellé adulte dans le C++ du dépôt public (grep).
- Aucun
Accessed Nonenouveau ; premier lancement sansLPKeyboard.ini: QWERTY, Q ouvre le panneau d'action en scène ; Reset rend QWERTY, ou AZERTY si le joueur l'a choisi.
11. Questions ouvertes (pour l'utilisateur, par Big Boss)
- Q1, préréglages exclusifs : tranchée (décision 5) : exclusifs, AZERTY = Z Q S D, QWERTY = W A S D.
- Q2, K4 : tranchée (décision 6) : une seule touche Interact (E).
- Q3, K3 : tranchée pour AZERTY (décision 5) :
ActionPanel= A en AZERTY. Le cas QWERTY passe en Q9. - Q4, K5 : tranchée (décision 7) : le clic gauche seul est refusé, il n'est accepté qu'avec un modificateur.
- Q5, K6 : tranchée (décision 8) : voir § 8b.
- Q6, doc 27 : tranchée (décision 10) : libellé neutre « Scene » seul, pour le moment.
- Q7, Y / N : tranchée (décision 11) : en dur en build 1 ; remappage en build 2.
- Q8, Tilde de TestScenes : tranchée (décision 13) : Tilde retiré, Insert seul, migration.
- Q9, touche d'action en QWERTY : tranchée (décision 9) : Q.
- Q10, disposition par défaut : tranchée (décision 12) : QWERTY en premier ; Reset garde le choix AZERTY du joueur (§ 4).
- Q11 : tranchée (décision 13) : en « Arrows only », le clic droit garde la rotation du couple.
- Q12 : tranchée (décision 15) : Y du monde ; G / B et V / X.
12. Suite proposée
- Réponses Q1 à Q7.
- KEY2-CART-02 (lecture MCP, lp-mcp) : ouverture du panneau d'action ; gardes
Branchde CityMenu et de CharacterMenu dansPC(effet deSetBlockHotkey). Ajouts de la révision 4 : § 8b, points 1 à 3. - KEY2-IMPL-01 (lp-impl, C++ hors copie UE) : § 4, 5, 7, 8 ; puis K3 après CART-02.
- BUILD et VAL (jeton) : § 10.
Fichiers écrits : ce livrable et KEY2-TACHES.md. À commiter : A Docs/Migration/etat/REL/KEY2/KEY2-SPEC-01.md, A Docs/Migration/etat/REL/KEY2/KEY2-TACHES.md. Journal : sans objet (aucun fichier hors etat\ modifié).