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

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

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

任何遵循业界标准人机接口设备(HID)规范的设备将立即可供 Wolfram 系统使用.

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

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

    

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

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

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

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

设备的制造商不同,所用的控件名称也往往不同. Wolfram 系统尽力将一维模拟控件的名称标准化为 "X""Y""X2""Y2",等等,而将按钮名称标准化为 "B1""B2",等等.

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

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

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

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

    

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

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

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

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

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

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