Partager via


LegacyGipGameControllerProvider.GetStandardControllerButtonRemapping Méthode

Définition

Récupère le mappage de bouton et d’axe d’un boîtier de commande standard pour un utilisateur.

public:
 virtual IMapView<RemappingButtonCategory, Platform::Object ^> ^ GetStandardControllerButtonRemapping(User ^ user, bool previous) = GetStandardControllerButtonRemapping;
IMapView<RemappingButtonCategory, IInspectable const&> GetStandardControllerButtonRemapping(User const& user, bool const& previous);
public IReadOnlyDictionary<RemappingButtonCategory,object> GetStandardControllerButtonRemapping(User user, bool previous);
function getStandardControllerButtonRemapping(user, previous)
Public Function GetStandardControllerButtonRemapping (user As User, previous As Boolean) As IReadOnlyDictionary(Of RemappingButtonCategory, Object)

Paramètres

user
User

Utilisateur pour lequel obtenir des mappages de contrôleurs.

previous
Boolean

bool

True si le mappage doit être lu à partir du magasin précédent inactif ; false si le mappage actif doit être lu.

Retours

Dictionnaire correspondant à chaque RemappingButtonCategory aux données qui spécifient le remapping. Le type de données est spécifique à la catégorie comme suit :

RemappingButtonCategory Description des données
ButtonsSettings Un uint64 composé de 16 grbbles. Chaque nibble représente l’affectation d’un bouton. L’affectation standard est 0xfedcba9876543210
AnalogSettings Uint32 avec les effets suivants : 0x1 : Permutations déclenche 0x2 : Permuter les manettes 0x4 : inverse la manette gauche 0x8 : inverse la manette droite. L’affectation standard est 0.
VibrationSettings Uint32 avec les effets suivants : 0x01 : Désactive les vibrations. L’affectation standard est 0.

Exemples

void RemapButtons(IGameController controller, IGameControllerProvider controllerProvider)
{
    LegacyGipGameControllerProvider legacyGipGameControllerProvider =
        LegacyGipGameControllerProvider.FromGameControllerProvider(controllerProvider);

    // Retrieve all current remappings set for standard controllers
    IReadOnlyDictionary<RemappingButtonCategory, object> currentMappings =
        legacyGipGameControllerProvider.GetStandardControllerButtonRemapping(
            controller.User, false);

    // Swap two of the buttons
    Dictionary<RemappingButtonCategory, object> remaps =
        new Dictionary<RemappingButtonCategory, object>();

    // Duplicates are not allowed. Swap two of the buttons
    UInt64 currentButtonMappings =
       (UInt64)currentMappings[RemappingButtonCategory.ButtonSettings];

    // Isolate the buttons we want to remap
    UInt64 lastButton = (currentButtonMappings & 0xf000000000000000);
    UInt64 secondLastButton = currentButtonMappings & 0x0f00000000000000;

    // Swap their positions
    UInt64 newMapping = (lastButton >> 4) | (secondLastButton << 4);

    // Recombine with the original mappings
    UInt64 newButtonMappings = (currentButtonMappings & 0x00ffffffffffffff) | newMapping;

    // Add the new button remappings to the mapping dictionary
    remaps.Add(RemappingButtonCategory.ButtonSettings, newButtonMappings);

    // Update controller mapping
    legacyGipGameControllerProvider.SetStandardControllerButtonRemapping(
        controller.User, false, newButtonMappings);
}

Remarques

L’ordre des boutons pour ButtonSettings du plus significatif au moins significatif est le suivant : Pouce droit, Pouce gauche, Épaule droite, Épaule gauche, DPad Droite, DPad Gauche, DPad Vers le bas, DPad haut, Y, X, B, A, Affichage, Menu, Guide et Liaison.

En règle générale, le paramètre précédent doit être false, qui lira le mappage de contrôleur actuel. Il peut également être utilisé pour lire un mappage qui a été enregistré ultérieurement (par exemple, pour lire un mappage enregistré afin de restaurer un état précédent).

Attention

Le mappage de contrôleur est persistant à l’échelle du système pour l’utilisateur donné. Cette opération ne doit être effectuée qu’à la direction de l’utilisateur.

S’applique à

Voir aussi