Compartilhar via


LegacyGipGameControllerProvider.SetStandardControllerButtonRemapping Método

Definição

Altera o mapeamento de botão e eixo de um gamepad padrão para um usuário.

public:
 virtual void SetStandardControllerButtonRemapping(User ^ user, bool previous, IMapView<RemappingButtonCategory, Platform::Object ^> ^ remapping) = SetStandardControllerButtonRemapping;
void SetStandardControllerButtonRemapping(User const& user, bool const& previous, IMapView<RemappingButtonCategory, IInspectable const&> const& remapping);
public void SetStandardControllerButtonRemapping(User user, bool previous, IReadOnlyDictionary<RemappingButtonCategory,object> remapping);
function setStandardControllerButtonRemapping(user, previous, remapping)
Public Sub SetStandardControllerButtonRemapping (user As User, previous As Boolean, remapping As IReadOnlyDictionary(Of RemappingButtonCategory, Object))

Parâmetros

user
User

O usuário para o qual remapear o controlador.

previous
Boolean

bool

True se o mapeamento deve ser armazenado no repositório anterior inativo; false se o mapeamento deve ser aplicado.

remapping

IMapView<RemappingButtonCategory,Object>

IReadOnlyDictionary<RemappingButtonCategory,Object>

IMapView<RemappingButtonCategory,Platform::Object>

IMapView<RemappingButtonCategory,IInspectable>

Um dicionário que corresponde a cada RemappingButtonCategory aos dados que especificam o remapeamento. O tipo de dados é específico para a categoria da seguinte maneira:

RemappingButtonCategory Descrição dos dados
BotõesConfigurações Um uint64 composto por 16 mordiscos. Cada mordisca representa a atribuição de um botão. A atribuição padrão é 0xfedcba9876543210
AnalogSettings Um uint32 com os seguintes efeitos: 0x1 : troca gatilhos/0x2 : troca os polegares/0x4 : inverte o botão esquerdo/0x8 : inverte o polegar direito. A atribuição padrão é 0.
VibrationSettings Um uint32 com os seguintes efeitos: 0x01 : desabilita a vibração. A atribuição padrão é 0.

Exemplos

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

Comentários

A ordem dos botões para ButtonSettings do mais significativo para o menos significativo é: Polegar Direito, Polegar Esquerdo, Ombro Direito, Ombro Esquerdo, DPad Direito, DPad Esquerdo, DPad Para Baixo, DPad Para Cima, Y, X, B, A, Exibição, Menu, Guia e Associação.

Normalmente, o parâmetro anterior deve ser false, que aplicará o remapeamento. Ele também pode ser usado para salvar um mapeamento para mais tarde (por exemplo, para salvar o mapeamento padrão antes de aplicar um mapeamento personalizado, para que o mapeamento padrão possa ser restaurado posteriormente).

Cuidado

O mapeamento do controlador é de todo o sistema e persistente para o usuário especificado. Isso só deve ser feito na direção do usuário.

Aplica-se a

Confira também