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