LegacyGipGameControllerProvider.SetStandardControllerButtonRemapping Método
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Cambia el botón y la asignación de ejes de un controlador para juegos estándar para un usuario.
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
Usuario para el que se va a reasignar el controlador.
- previous
-
Boolean
bool
True
si la asignación debe almacenarse en el almacén anterior inactivo; false
si se debe aplicar la asignación.
- remapping
-
IMapView<RemappingButtonCategory,Platform::Object>
IMapView<RemappingButtonCategory,IInspectable>
Diccionario que coincide con cada RemappingButtonCategory con los datos que especifican la reasignación. El tipo de datos es específico de la categoría de la siguiente manera:
RemappingButtonCategory | Descripción de los datos |
---|---|
ButtonsSettings | Un uint64 compuesto por 16 nibbles. Cada nibble representa la asignación de un botón. La asignación estándar es 0xfedcba9876543210 |
AnalogSettings | Un uint32 con los siguientes efectos: 0x1 : intercambia desencadenadores / 0x2 : intercambia sticks de pulgar / 0x4 : invierte el stick pulgar izquierdo / 0x8 : invierte el stick digital derecho. La asignación estándar es 0. |
VibrationSettings | Uint32 con los siguientes efectos: 0x01 : deshabilita la vibración. La asignación estándar es 0. |
Ejemplos
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);
}
Comentarios
El orden de los botones para ButtonSettings de lo más significativo al menos significativo es: Pulgar derecho, Stick pulgar izquierdo, Hombro derecho, Hombro izquierdo, DPad Derecha, DPad Izquierda, DPad Abajo, DPad Up, Y, X, B, A, Ver, Menú, Guía y Enlazar.
Normalmente, el parámetro anterior debe ser false
, que aplicará la reasignación. También se puede usar para guardar una asignación para más adelante (por ejemplo, para guardar la asignación predeterminada antes de aplicar una asignación personalizada, de modo que la asignación predeterminada se pueda restaurar más adelante).
Precaución
La asignación de controladores es en todo el sistema y es persistente para el usuario determinado. Esto solo debe hacerse en la dirección del usuario.