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
, который будет считывать текущее сопоставление контроллера. Его также можно использовать для чтения сопоставления, сохраненного на потом (например, для чтения сохраненного сопоставления для восстановления предыдущего состояния).
Внимание!
Сопоставление контроллера является системным и постоянным для данного пользователя. Это следует делать только по указанию пользователя.