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 数据描述
ButtonsSettings 由 16 个小食组成的 uint64。 每个小指代表按钮的分配。 标准分配是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 向上、Y、X、B、A、视图、菜单、指南和绑定。

通常, 上一 个参数应为 false,它将读取当前控制器映射。 它还可用于读取为以后保存的映射 (例如,读取保存的映射以) 还原以前的状态。

注意

控制器映射是系统范围的,对于给定用户而言是永久性的。 这只能在用户的指导下完成。

适用于

另请参阅