Wiimote
本文将介绍在 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
uinput 或 XWiimote。Wiimote 可以通过 wminput(1)(来自 cwiidAUR 包)作为鼠标等常规输入设备运行。此包包含用户空间驱动程序、库和程序,是 Wiimote 基本使用所必需的。
首先,您需要确保加载了 uinput 模块
# modprobe uinput
现在您应该在 /dev/uinput 中看到一个设备。要永久使用,请 将 uinput 添加到 mkinitcpio.conf 的 MODULES 中。
cwiid 现在应该允许您扫描您的 Wiimote。运行以下命令,然后按 Wiimote 上的 1 和 2 按钮
$ 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 中关于 uinput 的 udev 规则。
或者,将 uinput 添加到 MODULES 数组中,位于 mkinitcpio.conf
MODULES=(uinput ...)
之后 重新生成 initramfs 并重新启动系统。