跳转至内容

Wiimote

来自 ArchWiki

本文将介绍在 Linux 下使用 Wiimote 进行通用操作所需的基本步骤。对于某些步骤,本文不会深入讲解,因为已有许多指南可供参考。

前提条件

  • 蓝牙
  • 一个 Wii Remote

Wiimote 通过 蓝牙 连接。这必须已经配置并运行,无需本指南的帮助。您需要一个 Wiimote,这可以包括(但不是必需)Nunchuk 和 Classic Controller 附件。

一旦 Wiimote 通过蓝牙连接,设备应该就可以开始工作了,因为 Linux 内核驱动程序自 3.1 版本以来就已支持 Wiimote,而 Arch Linux 中的 bluez 包也包含了所需的 wiimote 插件。

连接 Wiimote

请参阅 XWiimote#Connect the Wii Remote

红外线源

可能的红外线源包括:

  • 任天堂 Wii 传感器条
  • 无线传感器条 - 查看 eBay!
  • 普通灯泡
  • 小蜡烛(距离应约为 30 厘米)
  • 自制传感器条 ([1])

输入设备

X11

XWiimote 提供了一个 X11 输入驱动程序,用于将 Wiimote 作为桌面输入设备使用。详情请参阅 XWiimote#X.Org Input Driver

cwiid

注意 此方法基于已不再进行上游开发的软件。您应该改用 Linux 内核驱动程序和 uinputXWiimote

Wiimote 可以通过 wminput(1)(来自 cwiidAUR 包)作为鼠标等常规输入设备运行。此包包含用户空间驱动程序、库和程序,是 Wiimote 基本使用所必需的。

首先,您需要确保加载了 uinput 模块

# modprobe uinput

现在您应该在 /dev/uinput 中看到一个设备。要永久使用,请 将 uinput 添加到 mkinitcpio.conf 的 MODULES 中

cwiid 现在应该允许您扫描您的 Wiimote。运行以下命令,然后按 Wiimote 上的 12 按钮

$ bluetoothctl scan on
Scanning ...
       MAC_address       Nintendo RVL-CNT-01

一旦检测到您的 Wiimote,您可以通过运行 wmgui(1)[死链 2025-11-17—HTTP 404] 并通过该界面测试各种按钮和传感器来测试它是否正常工作。

如果您**没有红外线源**,只需运行

$ wminput -w

您现在可以通过向前、向后或向侧面倾斜 Wiimote 来控制指针。

如果您**有红外线源**,请运行

$ wminput -c ir_ptr -w

配置

默认的配置文件位于 /etc/cwiid/wminput/。它们是您在 ~/.cwiid/wminput/usr/local/etc/cwiid/wminput 中自定义设置的良好起点。通用语法为:

Wiimote_button = keyboard_key

Wiimote_button 的所有可能值可以在 cwiid/wminput.list 中找到。keyboard_key 的可能值是 按键代码,位于 /usr/include/linux/input-event-codes.h

无法打开 uinput

如果 wminput 给出此错误,导致您无法使用 Wiimote,请创建一个 udev 规则,内容如下 [2]

KERNEL=="uinput", GROUP="wheel", MODE="0660"

之后重新启动系统。另请参阅 wminput(1) § DESCRIPTION 中关于 uinputudev 规则。

或者,将 uinput 添加到 MODULES 数组中,位于 mkinitcpio.conf

MODULES=(uinput ...)

之后 重新生成 initramfs 并重新启动系统。

参见