LegacyGipGameControllerProvider.GetStandardControllerButtonRemapping Метод

Определение

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

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)

Параметры

user
User

Пользователь, для который требуется получить сопоставления контроллера.

previous
Boolean

bool

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

Возвращаемое значение

Словарь, соответствующий каждой категории 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, левый DPad, левый DPad, DPad Down, DPad Up, Y, X, B, A, View, Menu, Guide и Bind.

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

Внимание!

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

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

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