LegacyGipGameControllerProvider.SetStandardControllerButtonRemapping Método
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
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,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.