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 如果映射应存储在非活动的上一个存储中,则为 ; false 如果应应用映射,则为 。

remapping

IMapView<RemappingButtonCategory,Object>

IReadOnlyDictionary<RemappingButtonCategory,Object>

IMapView<RemappingButtonCategory,Platform::Object>

IMapView<RemappingButtonCategory,IInspectable>

将每个 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,这将应用重新映射。 它还可用于保存映射以供以后 (例如,在应用自定义映射之前保存默认映射,以便在以后) 还原默认映射。

注意

控制器映射是系统范围的,对于给定用户而言是永久性的。 这只应在用户的方向上完成。

适用于

另请参阅