LegacyGipGameControllerProvider.SetStandardControllerButtonRemapping 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
为用户更改标准游戏板的按钮和轴映射。
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,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
,这将应用重新映射。 它还可用于保存映射以供以后 (例如,在应用自定义映射之前保存默认映射,以便在以后) 还原默认映射。
注意
控制器映射是系统范围的,对于给定用户而言是永久性的。 这只应在用户的方向上完成。