Données de Registre pour les contrôleurs de jeu
Notes
Cette rubrique s’adresse aux fabricants de contrôleurs de jeu compatibles Windows 10 et ne s’applique pas à la majorité des développeurs.
L’espace de noms Windows.Gaming.Input permet aux fournisseurs de matériel indépendants d’ajouter des données au registre du PC, ce qui permet à leurs appareils d’apparaître en tant que Gamepads, RacingWheels, ArcadeSticks, FlightSticks et UINavigationControllers le cas échéant. Tous les IVS doivent ajouter ces données pour leurs contrôleurs compatibles. Ce faisant, tous les jeux UWP (et tous les jeux de bureau qui utilisent l’API WinRT) seront en mesure de prendre en charge votre contrôleur de jeu.
Schéma de mappage
Les mappages pour un appareil avec l’ID du fournisseur (VID) VVVV, l’ID de produit (PID) PPPP, la page d’utilisation UUUU et l’ID d’utilisation XXXX, seront lus à partir de cet emplacement dans le registre :
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\GameInput\Devices\VVVVPPPPUUUUXXXX
Le tableau ci-dessous décrit les valeurs attendues sous l’emplacement racine de l’appareil :
Nom | Type | Requis ? | Informations |
---|---|---|---|
Désactivé | DWORD | Non |
Indique que cet appareil particulier doit être désactivé.
|
Description | REG_SZ | Non | Brève description de l’appareil. |
Le programme d’installation de votre appareil doit ajouter ces données au Registre (via le programme d’installation ou un fichier INF).
Les sous-clés sous l’emplacement racine de l’appareil sont détaillées dans les sections suivantes.
Boîtier de commande
Le tableau ci-dessous répertorie les sous-clés obligatoires et facultatives sous la sous-clé Gamepad :
Sous-clé | Requis ? | Informations |
---|---|---|
Menu | Oui | Voir Mappage de boutons |
Affichage | Oui | |
Un | Oui | |
B | Oui | |
X | Oui | |
O | Oui | |
LeftShoulder | Oui | |
RightShoulder | Oui | |
LeftThumbstickButton | Oui | |
RightThumbstickButton | Oui | |
DPadUp | Oui | |
DPadDown | Oui | |
DPadLeft | Oui | |
DPadRight | Oui | |
Pagaie1 | Non | |
Pagaie2 | Non | |
Pagaie3 | Non | |
Pagaie4 | Non | |
LeftTrigger | Oui | Consultez Mappage d’axes |
RightTrigger | Oui | |
LeftThumbstickX | Oui | |
LeftThumbstickY | Oui | |
RightThumbstickX | Oui | |
RightThumbstickY | Oui |
Notes
Si vous ajoutez votre manette de jeu en tant que gamepad pris en charge, nous vous recommandons vivement de l’ajouter également en tant qu’interface utilisateur prise en charge UINavigationController.
RacingWheel
Le tableau ci-dessous répertorie les sous-clés obligatoires et facultatives sous la sous-clé RacingWheel :
Sous-clé | Requis ? | Informations |
---|---|---|
PreviousGear | Oui | Voir Mappage de boutons |
NextGear | Oui | |
DPadUp | Non | |
DPadDown | Non | |
DPadLeft | Non | |
DPadRight | Non | |
Button1 | Non | |
Button2 | Non | |
Button3 | Non | |
Bouton4 | Non | |
Bouton5 | Non | |
Bouton6 | Non | |
Bouton 7 | Non | |
Button8 | Non | |
Button9 | Non | |
Bouton10 | Non | |
Bouton11 | Non | |
Bouton12 | Non | |
Bouton13 | Non | |
Bouton14 | Non | |
Bouton15 | Non | |
Bouton16 | Non | |
FirstGear | Non | |
SecondGear | Non | |
ThirdGear | Non | |
FourthGear | Non | |
FifthGear | Non | |
SixthGear | Non | |
SeventhGear | Non | |
ReverseGear | Non | |
Roulette | Oui | Voir Mappage d’axes |
Limitation | Oui | |
Frein | Oui | |
Embrayage | Non | |
Handbrake | Non | |
MaxWheelAngle | Oui | Voir Mappage des propriétés |
ArcadeStick
Le tableau ci-dessous répertorie les sous-clés obligatoires et facultatives sous la sous-clé ArcadeStick :
Sous-clé | Requis ? | Informations |
---|---|---|
Action 1 | Oui | Voir Mappage de boutons |
Action2 | Oui | |
Action3 | Oui | |
Action4 | Oui | |
Action5 | Oui | |
Action6 | Oui | |
Spécial1 | Oui | |
Spécial2 | Oui | |
Hold-up | Oui | |
StickDown | Oui | |
StickLeft | Oui | |
StickRight | Oui |
FlightStick
Le tableau ci-dessous répertorie les sous-clés obligatoires et facultatives sous la sous-clé FlightStick :
Sous-clé | Requis ? | Informations |
---|---|---|
FirePrimary | Oui | Voir Mappage de boutons |
FireSecondary | Oui | |
Rouleau | Oui | Voir Mappage d’axes |
Inclinaison | Oui | |
Lacet | Oui | |
Limitation | Oui | |
HatSwitch | Oui | Voir Mappage des commutateurs |
UINavigation
Le tableau ci-dessous répertorie les sous-clés obligatoires et facultatives sous la sous-clé UINavigation :
Sous-clé | Requis ? | Informations |
---|---|---|
Menu | Oui | Voir Mappage de boutons |
Affichage | Oui | |
Accepter | Oui | |
Annuler | Oui | |
PrimaryUp | Oui | |
PrimaryDown | Oui | |
PrimaryLeft | Oui | |
PrimaryRight | Oui | |
Context1 (Contexte 1) | Non | |
Context2 (Contexte 2) | Non | |
Context3 (Contexte 3) | Non | |
Context4 (Contexte 4) | Non | |
Pg préc | Non | |
Pg suiv | Non | |
PageLeft | Non | |
PageRight | Non | |
ScrollUp (Faire défiler vers le haut) | Non | |
ScrollDown (Faire défiler vers le bas) | Non | |
ScrollLeft (Faire défiler vers la gauche) | Non | |
ScrollRight (Faire défiler vers la droite) | Non | |
SecondaryUp | Non | |
SecondaryDown | Non | |
SecondaryLeft | Non | |
SecondaryRight | Non |
Pour plus d’informations sur les contrôleurs de navigation de l’interface utilisateur et les commandes ci-dessus, consultez Contrôleur de navigation de l’interface utilisateur.
Keys
Les sections suivantes expliquent le contenu de chacune des sous-clés sous les touches Gamepad, RacingWheel, ArcadeStick, FlightStick et UINavigation .
Mappage de boutons
Le tableau ci-dessous répertorie les valeurs nécessaires pour mapper un bouton. Par exemple, si vous appuyez sur DPadUp sur le contrôleur de jeu, le mappage pour DPadUp doit contenir la valeur ButtonIndex (La source est Button). Si DPadUp doit être mappé à partir d’une position de commutateur, le mappage DPadUp doit contenir les valeurs SwitchIndex et SwitchPosition (La source est Switch).
Source | Nom de la valeur | Type de valeur | Requis ? | Informations sur la valeur |
---|---|---|---|---|
Bouton | ButtonIndex | DWORD | Oui | Index dans le tableau de boutons RawGameController . |
Axe | AxisIndex | DWORD | Oui | Index dans le tableau d’axes RawGameController . |
Inverser : | DWORD | Non | Indique que la valeur de l’axe doit être inversée avant l’application des facteurs Threshold Percent et DebouncePercent . | |
ThresholdPercent | DWORD | Oui | Indique la position de l’axe à laquelle la valeur du bouton mappé passe entre les états pressé et libéré. La plage de valeurs valide est comprise entre 0 et 100. Le bouton est considéré comme enfoncé si la valeur de l’axe est supérieure ou égale à cette valeur. | |
DebouncePercent | DWORD | Oui |
Définit la taille d’une fenêtre autour de la valeur ThresholdPercent , qui est utilisée pour décaper l’état du bouton signalé. La plage de valeurs valide est comprise entre 0 et 100. Les transitions d’état de bouton ne peuvent se produire que lorsque la valeur de l’axe franchit les limites supérieures ou inférieures de la fenêtre de débouchage. Par exemple, un SeuilPercent de 50 et un DebouncePercent de 10 aboutit à des limites de débounce à 45 % et 55 % des valeurs de l’axe de plage complète. Le bouton ne peut pas passer à l’état enfoncé tant que la valeur de l’axe n’a pas atteint 55 % ou plus, et il ne peut pas revenir à l’état libéré tant que la valeur de l’axe n’a pas atteint 45 % ou moins. Les limites de la fenêtre debounce calculée sont limitées entre 0 % et 100 %. Par exemple, un seuil de 5 % et une fenêtre de débounce de 20 % feraient en sorte que les limites de la fenêtre debounce tombent à 0 % et 15 %. L’état du bouton pour les valeurs d’axe de 0 % et 100 % est toujours signalé comme libéré et appuyé, respectivement, quelles que soient les valeurs de seuil et de débounce. |
|
Commutateur | SwitchIndex | DWORD | Oui | Index dans le tableau de commutateurs RawGameController . |
SwitchPosition | REG_SZ | Oui |
Indique la position du commutateur qui provoquera le signalement du bouton mappé. Les valeurs de position peuvent être l’une des chaînes suivantes :
|
|
IncludeAdjacent | DWORD | Non | Indique que les positions de commutateur adjacentes entraînent également le fait que le bouton mappé signale qu’il est en cours d’appui. |
Mappage d’axes
Le tableau ci-dessous répertorie les valeurs nécessaires pour mapper un axe :
Source | Nom de la valeur | Type de valeur | Requis ? | Informations sur la valeur | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Bouton | MaxValueButtonIndex | DWORD | Oui |
Index dans le tableau de boutons RawGameController qui est traduit en valeur d’axe unidirectionnel mappé.
|
|||||||||||||||
MinValueButtonIndex | DWORD | Non |
Indique que l’axe mappé est bidirectionnel. Les valeurs de MaxButton et MinButton sont combinées en un seul axe bidirectionnel, comme indiqué ci-dessous.
|
||||||||||||||||
Axe | AxisIndex | DWORD | Oui | Index dans le tableau d’axes RawGameController . | |||||||||||||||
Inverser : | DWORD | Non | Indique que la valeur de l’axe mappé doit être inversée avant d’être retournée. | ||||||||||||||||
Commutateur | SwitchIndex | DWORD | Oui | Index dans le tableau de commutateurs RawGameController . | |||||||||||||||
MaxValueSwitchPosition | REG_SZ | Oui |
Une des chaînes suivantes :
Il indique la position du commutateur qui entraîne le signalement de la valeur de l’axe mappé sous la forme 1.0. La direction opposée de MaxValueSwitchPosition est traitée comme 0.0. Par exemple, si MaxValueSwitchPosition a la valeur Up, la traduction de la valeur de l’axe s’affiche ci-dessous :
|
||||||||||||||||
IncludeAdjacent | DWORD | Non |
Indique que les positions de commutateur adjacentes entraînent également le signalement 1.0 de l’axe mappé. Dans l’exemple ci-dessus, si IncludeAdjacent est défini, la traduction d’axe s’effectue comme suit :
|
Mappage de commutateurs
Les positions de commutateur peuvent être mappées à partir d’un ensemble de boutons dans le tableau de boutons du RawGameController ou d’un index dans le tableau de commutateurs. Les positions de commutateur ne peuvent pas être mappées à partir d’axes.
Source | Nom de la valeur | Type de valeur | Informations sur la valeur | ||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Bouton | ButtonCount | DWORD | 2, 4 ou 8 | ||||||||||||||||||||||||||
SwitchKind | REG_SZ | TwoWay, FourWay ou EightWay | |||||||||||||||||||||||||||
UpButtonIndex | DWORD | Voir *Valeurs ButtonIndex | |||||||||||||||||||||||||||
DownButtonIndex | DWORD | ||||||||||||||||||||||||||||
LeftButtonIndex | DWORD | ||||||||||||||||||||||||||||
RightButtonIndex | DWORD | ||||||||||||||||||||||||||||
UpRightButtonIndex | DWORD | ||||||||||||||||||||||||||||
DownRightButtonIndex | DWORD | ||||||||||||||||||||||||||||
DownLeftButtonIndex | DWORD | ||||||||||||||||||||||||||||
UpLeftButtonIndex | DWORD | ||||||||||||||||||||||||||||
Axe | SwitchKind | REG_SZ | TwoWay, FourWay ou EightWay | ||||||||||||||||||||||||||
XAxisIndex | DWORD | YAxisIndex est toujours présent. XAxisIndex n’est présent que lorsque SwitchKind est FourWay ou EightWay. | |||||||||||||||||||||||||||
YAxisIndex | DWORD | ||||||||||||||||||||||||||||
XDeadZonePercent | DWORD | Indiquez la taille de la zone morte autour de la position centrale des axes. | |||||||||||||||||||||||||||
YDeadZonePercent | DWORD | ||||||||||||||||||||||||||||
XDebouncePercent | DWORD | Définissez la taille des fenêtres autour des limites supérieures et inférieures de zone morte, qui sont utilisées pour déboguer l’état de commutateur signalé. | |||||||||||||||||||||||||||
YDebouncePercent | DWORD | ||||||||||||||||||||||||||||
XInvert | DWORD | Indiquez que les valeurs d’axe correspondantes doivent être inversées avant que les calculs de la zone morte et de la fenêtre de débouchage ne soient appliqués. | |||||||||||||||||||||||||||
YInvert | DWORD | ||||||||||||||||||||||||||||
Commutateur | SwitchIndex | DWORD | Index dans le tableau de commutateurs RawGameController . | ||||||||||||||||||||||||||
Inverser : | DWORD | Indique que le commutateur signale ses positions dans un ordre inverse dans le sens des aiguilles d’une montre, plutôt que dans l’ordre par défaut dans le sens des aiguilles d’une montre. | |||||||||||||||||||||||||||
PositionBias | DWORD |
Déplace le point de départ de la façon dont les positions sont signalées par le montant spécifié. PositionBias est toujours compté dans le sens des aiguilles d’une montre à partir du point de départ d’origine et est appliqué avant que l’ordre des valeurs ne soit inversé. Par exemple, un commutateur qui signale des positions commençant par DownRight dans le sens inverse des aiguilles d’une montre peut être normalisé en définissant l’indicateur Invert et en spécifiant une PositionBias de 5 :
|
*Valeurs ButtonIndex
*L’index des valeurs ButtonIndex dans le tableau de boutons de RawGameController :
ButtonCount | SwitchKind | RequiredMappings |
---|---|---|
2 | TwoWay |
|
4 | FourWay |
|
4 | EightWay |
|
8 | EightWay |
|
Mappage des propriétés
Il s’agit de valeurs de mappage statiques pour différents types de mappage.
Mappage | Nom de la valeur | Type de valeur | Informations sur la valeur |
---|---|---|---|
RacingWheel | MaxWheelAngle | DWORD | Indique l’angle de roue physique maximal pris en charge par la roue dans une seule direction. Par exemple, une roue avec une rotation possible de -90 degrés à 90 degrés spécifierait 90. |
Étiquettes
Les étiquettes doivent être présentes sous la clé Étiquettes sous la racine de l’appareil. Les étiquettes peuvent avoir 3 sous-clés : Boutons, Axes et Commutateurs.
Libellé des boutons
La touche Boutons mappe chacune des positions de bouton dans le tableau de boutons de RawGameController à une chaîne. Chaque chaîne est mappée en interne à la valeur d’énumération GameControllerButtonLabel correspondante. Par exemple, si un boîtier de commande a dix boutons et que l’ordre dans lequel RawGameController analyse les boutons et les présente dans le rapport des boutons est le suivant :
Menu, // Index 0
View, // Index 1
LeftStickButton, // Index 2
RightStickButton, // Index 3
LetterA, // Index 4
LetterB, // Index 5
LetterX, // Index 6
LetterY, // Index 7
LeftBumper, // Index 8
RightBumper // Index 9
Les étiquettes doivent apparaître dans cet ordre sous la touche Boutons :
Nom | Valeur (type : REG_SZ) |
---|---|
Button0 | Menu |
Button1 | Affichage |
Button2 | LeftStickButton |
Button3 | RightStickButton |
Bouton4 | Lettera |
Bouton5 | LetterB |
Bouton6 | LetterX |
Bouton 7 | LETTERY |
Button8 | LeftBumper |
Button9 | RightBumper |
Étiquettes d’axe
La touche Axes mappe chacune des positions d’axe dans le tableau d’axes de RawGameController à l’une des étiquettes répertoriées dans GameControllerButtonLabel Enum , tout comme les étiquettes de bouton. Consultez l’exemple dans Étiquettes de bouton.
Changer d’étiquettes
La touche Commutateurs mappe les positions des commutateurs aux étiquettes. Les valeurs suivent cette convention de nommage : pour étiqueter une position d’un commutateur dont l’index est x dans le tableau de commutateurs de RawGameController, ajoutez ces valeurs sous la sous-clé Commutateurs :
- SwitchxUp
- SwitchxUpRight
- SwitchxRight
- SwitchxDownRight
- SwitchxDown
- SwitchxDownLeft
- SwitchxUpLeft
- SwitchxLeft
Le tableau suivant montre un exemple d’ensemble d’étiquettes pour les positions de basculement d’un commutateur à 4 voies qui s’affiche à l’index 0 dans RawGameController :
Nom | Valeur (type : REG_SZ) |
---|---|
Switch0Up | XboxUp |
Switch0Right | XboxRight |
Switch0Down | XboxDown |
Switch0Left | XboxLeft |
Exemple de fichier de Registre
Pour montrer comment tous ces mappages et valeurs se réunissent, voici un exemple de fichier de registre pour un RacingWheel générique :
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\GameInput\Devices\1234567800010004]
"Description" = "Example Wheel Device"
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\GameInput\Devices\1234567800010004\Labels\Buttons]
"Button0" = "LetterA"
"Button1" = "LetterB"
"Button2" = "LetterX"
"Button3" = "LetterY"
"Button6" = "Menu"
"Button7" = "View"
"Button8" = "RightStickButton"
"Button9" = "LeftStickButton"
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\GameInput\Devices\1234567800010004\Labels\Switches]
"Switch0Down" = "Down"
"Switch0Left" = "Left"
"Switch0Right" = "Right"
"Switch0Up" = "Up"
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\GameInput\Devices\1234567800010004\RacingWheel]
"MaxWheelAngle" = dword:000001c2
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\GameInput\Devices\1234567800010004\RacingWheel\Brake]
"AxisIndex" = dword:00000002
"Invert" = dword:00000001
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\GameInput\Devices\1234567800010004\RacingWheel\Button1]
"ButtonIndex" = dword:00000000
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\GameInput\Devices\1234567800010004\RacingWheel\Button2]
"ButtonIndex" = dword:00000001
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\GameInput\Devices\1234567800010004\RacingWheel\Button3]
"ButtonIndex" = dword:00000002
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\GameInput\Devices\1234567800010004\RacingWheel\Button4]
"ButtonIndex" = dword:00000003
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\GameInput\Devices\1234567800010004\RacingWheel\Button5]
"ButtonIndex" = dword:00000009
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\GameInput\Devices\1234567800010004\RacingWheel\Button6]
"ButtonIndex" = dword:00000008
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\GameInput\Devices\1234567800010004\RacingWheel\Button7]
"ButtonIndex" = dword:00000007
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\GameInput\Devices\1234567800010004\RacingWheel\Button8]
"ButtonIndex" = dword:00000006
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\GameInput\Devices\1234567800010004\RacingWheel\Clutch]
"AxisIndex" = dword:00000003
"Invert" = dword:00000001
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\GameInput\Devices\1234567800010004\RacingWheel\DPadDown]
"IncludeAdjacent" = dword:00000001
"SwitchIndex" = dword:00000000
"SwitchPosition" = "Down"
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\GameInput\Devices\1234567800010004\RacingWheel\DPadLeft]
"IncludeAdjacent" = dword:00000001
"SwitchIndex" = dword:00000000
"SwitchPosition" = "Left"
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\GameInput\Devices\1234567800010004\RacingWheel\DPadRight]
"IncludeAdjacent" = dword:00000001
"SwitchIndex" = dword:00000000
"SwitchPosition" = "Right"
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\GameInput\Devices\1234567800010004\RacingWheel\DPadUp]
"IncludeAdjacent" = dword:00000001
"SwitchIndex" = dword:00000000
"SwitchPosition" = "Up"
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\GameInput\Devices\1234567800010004\RacingWheel\FifthGear]
"ButtonIndex" = dword:00000010
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\GameInput\Devices\1234567800010004\RacingWheel\FirstGear]
"ButtonIndex" = dword:0000000c
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\GameInput\Devices\1234567800010004\RacingWheel\FourthGear]
"ButtonIndex" = dword:0000000f
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\GameInput\Devices\1234567800010004\RacingWheel\NextGear]
"ButtonIndex" = dword:00000004
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\GameInput\Devices\1234567800010004\RacingWheel\PreviousGear]
"ButtonIndex" = dword:00000005
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\GameInput\Devices\1234567800010004\RacingWheel\ReverseGear]
"ButtonIndex" = dword:0000000b
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\GameInput\Devices\1234567800010004\RacingWheel\SecondGear]
"ButtonIndex" = dword:0000000d
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\GameInput\Devices\1234567800010004\RacingWheel\SixthGear]
"ButtonIndex" = dword:00000011
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\GameInput\Devices\1234567800010004\RacingWheel\ThirdGear]
"ButtonIndex" = dword:0000000e
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\GameInput\Devices\1234567800010004\RacingWheel\Throttle]
"AxisIndex" = dword:00000001
"Invert" = dword:00000001
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\GameInput\Devices\1234567800010004\RacingWheel\Wheel]
"AxisIndex" = dword:00000000
"Invert" = dword:00000000
Voir aussi
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour