# KEY2-DIAG-03 : 51 puis 50 actions dans le fichier de touches (essai COMMUN-20) Fiche KEY2-DIAG-03 — Niveau N3 — Modèle prévu opus (Medium) | utilisé Opus 5.5 — Session « Medium · KEY2 » — Skills : sk-protocol. Date : 2026-10-20. Ordre de Big Boss `local_104ff22d` (« sans urgence »). Lecture seule : journaux et fichier de touches de la build COM20, code de `LPKeyboardSubsystem.cpp` ; aucune écriture hors de ce livrable. ## 1. Constat (établi) Journal du premier lancement : `D:\Game\LifePlay_Build_5.8_Development_COM20\Windows\LifePlay\Saved\Logs\LifePlay-backup-2026.10.20-15.10.23.log`. | Ligne | Heure (UTC) | Message | |---|---|---| | 877-878 | 15:05:56 | fichier absent, création : 51 actions, 17 axes | | 999-1000 | 15:06:13 | 51 actions, 17 axes ; « disposition AZERTY appliquee » | | 1003 | 15:09:01 | **50** actions, 17 axes | | 1006 | 15:09:47 | 50 actions, 17 axes | Au relancement : « 50 actions et 17 axes relus » (`etat\BOSS\COMMUN-20\COMMUN-20_session_1710.log:878`). ## 2. Action perdue (établi) J'ai comparé les liaisons d'actions de `Config/DefaultInput.ini` (51) à celles du fichier du joueur, `…\COM20\Windows\LifePlay\Saved\Config\Windows\LPKeyboard.ini` (50), après avoir retiré les modificateurs faux : - **seule absente : `Favorite7` sur `NumPadSeven`**. Favorite7 garde `Seven`. - `ActionPanel` Q → A : attendu, c'est le préréglage AZERTY. - `inventory` et `recommended` en minuscules : casse d'origine de l'ancien nom (FName), sans effet. FName et FString se comparent sans tenir compte de la casse. Côté axes (17 de part et d'autre) : `LeftRight −1 (Left)` est passé en **dernière** position du fichier (l. 68), alors que les autres axes gardent l'ordre d'origine. Cette liaison a donc été retirée, puis rajoutée. ## 3. Cause (établie par le code ; touche exacte estimée) Le cas COMMUN-20.3 consistait à changer une flèche, puis à la remettre. Lecture : 1. **15:09:01** : « Change » sur la flèche gauche (`LeftRight −1`, ligne « Map Left » ou « Couple Left »), puis appui sur une touche déjà liée à Favorite7, très probablement **pavé 7** (estimé : c'est la seule action qui manque). `CommitKey` (`LPKeyboardSubsystem.cpp:973`, message `:1037`) : - retire l'ancienne liaison (`Left`) ; - **retire la même touche de toute autre action**, Favorite7 / NumPadSeven, et l'annonce dans la ligne d'état (« … saved. Removed from: Favorite 7. ») ; - ajoute la nouvelle. Résultat : 51 → 50 actions, 17 axes. 2. **15:09:47** : « Change » sur la même flèche, puis `Left` : la flèche revient (ajoutée en fin de liste), mais **rien ne rend pavé 7 à Favorite7**. Résultat : 50 actions, 17 axes. Ce n'est pas la double place des flèches (option A) : les deux lignes de l'affichage portent la même liaison, et une écriture reste une écriture. C'est la règle de conflit de `CommitKey`, voulue par la SPEC (KEY2-SPEC-01 § 2, « retire la même touche des autres actions … et l'annonce »), qui n'a pas de retour arrière. ## 4. Correctif proposé (aucune IMPL sans GO ; `LPKeyboardSubsystem.cpp` seul) | Option | Effet | Coût | |---|---|---| | **(1) Confirmation, recommandé** | si la touche est déjà prise ailleurs, `CommitKey` n'écrit rien. Il affiche « NumPad 7 is used by Favorite 7. Press it again to replace, Escape to cancel. » ; un second appui sur la même touche confirme | environ 25 lignes (état « touche en attente de confirmation », remis à zéro par Échap ou par une autre touche) | | (2) Échange | la touche prise passe à la nouvelle action, et l'ancienne touche de celle-ci va à l'action qui l'avait (pavé 7 ↔ Left) | environ 20 lignes ; surprend quand l'ancienne touche était vide (Add) ou entre en conflit à son tour | | (3) Rien, documenter | comportement actuel : retrait annoncé ; Reset rend tout | 0 | Avec (1), le cas de COMMUN-20.3 n'aurait rien perdu : le premier appui sur pavé 7 aurait seulement averti. Preuve exigée : Change d'une flèche, appui sur une touche prise. On attend le message et 51 actions inchangées ; Échap annule. Un second appui confirme : 50 actions et « Removed from » ; Reset rend 51. ## 5. Pour le joueur de COMMUN-20 Pour retrouver pavé 7 sur Favorite 7 : Reset dans le menu Clavier, puis Apply AZERTY. Ou bien Add sur Favorite 7, puis pavé 7. Fichiers écrits : ce livrable. À commiter : A `Docs/Migration/etat/REL/KEY2/KEY2-DIAG-03.md`. Aucun git qui écrit.