本指南是 游戏控制器 指南的扩展。Apple
macOS 同时支持 MFi 控制器和“经典”HID 控制器。要区分它们,请在处理输入事件时检查 object.driver 属性(其值为 "HID"
或 "MFi"
)。
iOS 和 tvOS 仅 支持 MFi 控制器。
如果您正在创建一个支持 MFi 游戏控制器的应用程序,我们建议您遵循 Apple 的指南,从这份 清单 开始。
MFi 设备可以符合 device.MFiProfile 报告的三种配置文件之一。这些配置文件定义了设备的按键布局
“游戏手柄”
“扩展游戏手柄”
“微型游戏手柄”
“方向游戏手柄”
如果 device.MFiProfile 为 "gamepad"
,请检查以下 keyName 值以识别特定控件
控件/输入 | keyName | |
---|---|---|
方向键“上” | up |
|
方向键“下” | down |
|
方向键“左” | left |
|
方向键“右” | right |
|
按钮“A” | buttonA |
|
按钮“B” | buttonB |
|
按钮“X” | buttonX |
|
按钮“Y” | buttonY |
|
左肩键 (1) | leftShoulderButton1 |
|
右肩键 (1) | rightShoulderButton1 |
|
暂停按钮 | menu |
如果 device.MFiProfile 为 "extendedGamepad"
,则控制器将具有额外的 keyName 或 axis 值。请注意,触发器可以作为按键和轴来处理。
控件/输入 | keyName | 轴 |
---|---|---|
左摇杆水平轴 | leftX |
|
左摇杆垂直轴 | leftY |
|
右摇杆水平轴 | rightX |
|
右摇杆垂直轴 | rightY |
|
左肩键 (2) | leftShoulderButton2 |
|
右肩键 (2) | rightShoulderButton2 |
|
左触发器 | leftShoulderButton2 |
leftTrigger |
右触发器 | rightShoulderButton2 |
rightTrigger |
这些是 Apple TV 遥控器的特殊 MFi 配置文件。如果 device.MFiProfile 的值为 "microGamepad"
,则为初代 Siri Apple TV 遥控器;如果 device.MFiProfile 的值为 "directionalGamepad"
,则为二代 Siri 遥控器。控制器将具有以下 keyName 和 axis 值
控件/输入 | keyName | 轴 |
---|---|---|
触控板上的水平滑动 | x |
|
触控板上的垂直滑动 | y |
|
在触控板上向上滑动/轻扫 | up |
|
在触控板上向下滑动/轻扫 | down |
|
在触控板上向左滑动/轻扫 | left |
|
在触控板上向右滑动/轻扫 | right |
|
按下触控板 | buttonA |
|
暂停/播放按钮 | buttonX |
|
轻点触控板 | buttonZ |
|
快速点击菜单按钮 | menu |
Apple TV 遥控器将生成 加速度计 事件。
Apple TV 遥控器具有触控板而不是摇杆。默认情况下,每次用户触摸触控板时,它都会创建一个以初始点击位置为中心的虚拟操摇杆“窗口”和一个 relativeTouch 事件。但是,如果您要跟踪触摸的绝对位置,可以将 device.reportsAbsoluteDpadValues 设置为 true
。
如果您的应用程序可以在横向和纵向两种方向上使用,我们建议您将 device.allowsRotation 设置为 true
。此设置将自动翻转轴,以使它们在