LegacyGipGameControllerProvider.SetStandardControllerButtonRemapping Метод

Определение

Изменяет сопоставление кнопок и осей стандартного геймпада для пользователя.

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

Параметры

user
User

Пользователь для повторного сопоставления контроллера.

previous
Boolean

bool

True Значение , если сопоставление должно храниться в неактивном хранилище Previous; false Значение , если сопоставление должно быть применено.

remapping

IMapView<RemappingButtonCategory,Object>

IReadOnlyDictionary<RemappingButtonCategory,Object>

IMapView<RemappingButtonCategory,Platform::Object>

IMapView<RemappingButtonCategory,IInspectable>

Словарь, соответствующий каждому объекту RemappingButtonCategory с данными, которые указывают на повторное сопоставление. Тип данных относится к категории следующим образом:

RemappingButtonCategory Описание данных
ButtonSettings Uint64 состоит из 16 грызет. Каждое перо представляет назначение кнопки. Стандартное назначение — 0xfedcba9876543210
AnalogSettings Объект uint32 со следующими эффектами: 0x1 : переключение триггеров / 0x2 : переключение стиков / 0x4 : инвертирует левый стик / 0x8 : инвертирует правый стик. Стандартное назначение равно 0.
VibrationSettings Объект uint32 со следующими эффектами: 0x01 : отключает вибрацию. Стандартное назначение равно 0.

Примеры

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

Комментарии

Порядок кнопок для ButtonSettings от наиболее значимых к наименее значимым: правый стик, левый палец, правое плечо, левое плечо, правое плечо, DPad right, DPad left, DPad Down, DPad Up, Y, X, B, A, View, Menu, Guide и Bind.

Как правило, предыдущий параметр должен иметь значение false, который будет применять повторное сопоставление. Его также можно использовать для сохранения сопоставления на будущее (например, для сохранения сопоставления по умолчанию перед применением настраиваемого сопоставления, чтобы позднее можно было восстановить сопоставление по умолчанию).

Внимание!

Сопоставление контроллера является системным и постоянным для данного пользователя. Это следует делать только по указанию пользователя.

Применяется к

См. также раздел