How to| 将游戏手柄或其它设备连接到 Mathematica
除了使用键盘或鼠标外,您还可以使用游戏杆、 游戏手柄、 3D 鼠标或任何遵循业界标准人机接口设备规范的设备对 Mathematica 进行控制.
要将一个新的设备连接到 Mathematica,请确保它已插入,并在必要时已经开启. 如果设备附带特殊驱动程序,请确保它们的安装.
任何遵循业界标准人机接口设备规范的设备将立即可供 Mathematica 使用.
所有被 Mathematica 探测到的设备列于 ControllerInformation[] 的输出中. 这里除了一个由 USB 连接的罗技极动战斧游戏手柄(Logitech Dual Action gamepad)外,还有多个内置设备:
| In[3]:= |
| Out[3]= | ![]() |
一旦检测到您的设备,Mathematica 即可随时使用它.
默认时,游戏手柄及其它控制器可结合诸如 Manipulate 和 Graphics3D 等 Mathematica 函数使用. 例如,您可使用一个已连接的游戏手柄来调整 Manipulate 控件或旋转三维图形,而无需另外配置. 如需更多信息,请参阅 How to: 使用内置游戏手柄支持.
在较低层次,Mathematica 允许任何在 ControllerInformation[] 的输出中可见的信息用于 ControllerState[].
| In[6]:= |
| Out[6]= | ![]() |
设备的制造商不同,所用的控件名称也往往不同. Mathematica 尽力将一维模拟控件的名称标准化为
、
、
、
,等等,而将按钮名称标准化为
、
,等等.
如要查看 Mathematica 是如何将标准化名称映射到硬件名称上的,请在 ControllerState 中将控制器名称与
一起使用. Short 用于此处是为了使映射仅显示几行:
| In[19]:= |
Out[19]//Short= | |
![]() | |
在这里,标准化名称
、
和
用于列表中,以获得前三个一维模拟轴的当前状态:
| In[7]:= |
| Out[7]= |
如果将 Dynamic 包在该输入的外面,输出将连续更新,从而使您能够实时查看各轴的状态.
如要获得在 Manipulate 等函数中如何使用这些标准化名称的信息,请参阅 How to: 使用内置游戏手柄支持.
如果 ControllerState 不能立刻响应您的控制器,您可能需要调整 ControllerPath 选项. 与 Mathematica 在查找文件时对 $Path 中的目录进行搜索的方式相似,ControllerState 根据 ControllerPath 的设置来搜索可以控制器.
在游戏手柄存在的前提下,ControllerPath 的默认设置是使用游戏手柄:
| In[9]:= |
| Out[9]= |
因此,您可以省略 ControllerState 的第一个参数
,并获得相同的结果:
| In[18]:= |
| Out[18]= |
| In[19]:= |
| Out[19]= |
如果没有连接游戏手柄,ControllerState 则默认转向其它游戏杆设备、3D 小鼠和包括红外控制器及数字转换器的其它控制器设备.
通过改变出现在 ControllerPath 中设备的次序,可以改变它们被 ControllerState 搜索的次序.
这里,在 ControllerPath 中将内置于某些便携计算机的突然移动传感器(Sudden Motion Sensor)指定为首选项:
| In[22]:= |
| Out[22]= |



