Condividi tramite


LegacyGipGameControllerProvider.GetStandardControllerButtonRemapping Metodo

Definizione

Recupera il pulsante e il mapping dell'asse di un gamepad standard per un utente.

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)

Parametri

user
User

L'utente per ottenere i mapping del controller per.

previous
Boolean

bool

True se il mapping deve essere letto dall'archivio precedente inattivo; false se il mapping attivo deve essere letto.

Restituisce

Dizionario che corrisponde a ogni remappingButtonCategory ai dati che specifica il mapping. Il tipo di dati è specifico della categoria come indicato di seguito:

RemappingButtonCategory Descrizione dei dati
ButtonSettings Uint64 composto da 16 nibbles. Ogni nibble rappresenta l'assegnazione di un pulsante. L'assegnazione standard è 0xfedcba9876543210
AnalogicSettings Un oggetto uint32 con gli effetti seguenti: 0x1 : scambi attiva 0x2 : scambia le levette personale 0x4 : inverte la 0x8 del pollice sinistro : inverte il pollice destro. L'assegnazione standard è 0.
VibrazioniSettings Uint32 con gli effetti seguenti: 0x01 : Disabilita la vibrazione. L'assegnazione standard è 0.

Esempio

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);
}

Commenti

L'ordine dei pulsanti per ButtonSettings dal più significativo al minimo significativo è: Pollice destro, Pollice sinistro, Spalla destra, Spalla sinistra, DPad Destro, DPad Sinistro, DPad Down, DPad Up, Y, X, B, A, View, Menu, Guide e Bind.

In genere, il parametro precedente deve essere false, che leggerà il mapping del controller corrente. Può essere usato anche per leggere un mapping salvato per un secondo momento, ad esempio per leggere un mapping salvato per ripristinare uno stato precedente.

Attenzione

Il mapping del controller è a livello di sistema e persistente per l'utente specificato. Questa operazione deve essere eseguita solo in base alla direzione dell'utente.

Si applica a

Vedi anche