How to| 将游戏手柄或其它设备连接到 Mathematica

除了使用键盘或鼠标外,您还可以使用游戏杆、 游戏手柄、 3D 鼠标或任何遵循业界标准人机接口设备规范的设备对 Mathematica 进行控制.

要将一个新的设备连接到 Mathematica,请确保它已插入,并在必要时已经开启. 如果设备附带特殊驱动程序,请确保它们的安装.

任何遵循业界标准人机接口设备规范的设备将立即可供 Mathematica 使用.

所有被 Mathematica 探测到的设备列于 ControllerInformation[] 的输出中. 这里除了一个由 USB 连接的罗技极动战斧游戏手柄(Logitech Dual Action gamepad)外,还有多个内置设备:

In[3]:=
Click for copyable input
Out[3]=

一旦检测到您的设备,Mathematica 即可随时使用它.

    

默认时,游戏手柄及其它控制器可结合诸如 ManipulateGraphics3DMathematica 函数使用. 例如,您可使用一个已连接的游戏手柄来调整 Manipulate 控件或旋转三维图形,而无需另外配置. 如需更多信息,请参阅 How to: 使用内置游戏手柄支持.

在较低层次,Mathematica 允许任何在 ControllerInformation[] 的输出中可见的信息用于 ControllerState[].

在这里,游戏手柄各个控件的状态以规则列表的形式返回:

In[6]:=
Click for copyable input
Out[6]=

该列表中的控件名称,例如 ,直接取自于设备返回的低层信息.

设备的制造商不同,所用的控件名称也往往不同. Mathematica 尽力将一维模拟控件的名称标准化为 ,等等,而将按钮名称标准化为 ,等等.

如要查看 Mathematica 是如何将标准化名称映射到硬件名称上的,请在 ControllerState 中将控制器名称与 一起使用. Short 用于此处是为了使映射仅显示几行:

In[19]:=
Click for copyable input
Out[19]//Short=

在这里,标准化名称 用于列表中,以获得前三个一维模拟轴的当前状态:

In[7]:=
Click for copyable input
Out[7]=

如果将 Dynamic 包在该输入的外面,输出将连续更新,从而使您能够实时查看各轴的状态.

如要获得在 Manipulate 等函数中如何使用这些标准化名称的信息,请参阅 How to: 使用内置游戏手柄支持.

    

如果 ControllerState 不能立刻响应您的控制器,您可能需要调整 ControllerPath 选项. 与 Mathematica 在查找文件时对 $Path 中的目录进行搜索的方式相似,ControllerState 根据 ControllerPath 的设置来搜索可以控制器.

在游戏手柄存在的前提下,ControllerPath 的默认设置是使用游戏手柄:

In[9]:=
Click for copyable input
Out[9]=

因此,您可以省略 ControllerState 的第一个参数 ,并获得相同的结果:

In[18]:=
Click for copyable input
Out[18]=
In[19]:=
Click for copyable input
Out[19]=

如果没有连接游戏手柄,ControllerState 则默认转向其它游戏杆设备、3D 小鼠和包括红外控制器及数字转换器的其它控制器设备.

通过改变出现在 ControllerPath 中设备的次序,可以改变它们被 ControllerState 搜索的次序.

这里,在 ControllerPath 中将内置于某些便携计算机的突然移动传感器(Sudden Motion Sensor)指定为首选项:

In[22]:=
Click for copyable input
Out[22]=
New to Mathematica? Find your learning path »
Have a question? Ask support »