如何连接一个Wiimote用于 Fedora 下的远程控制目的?
(实际上,它是第 3 方 Wiimote 克隆,就像亚马逊上售价 15 美元的产品一样)
答案1
Fedora 19 足够新,安装的蓝牙堆栈默认带有 Wiimote 支持。您可以像任何其他蓝牙设备一样直接连接 Wiimote。
基本配对
如果一切正常,则不需要 pin。在配对过程结束时,可以选择 Wiimote 作为蓝牙小程序中的输入设备。
根据硬件的不同,一开始可能需要进行几次尝试(使用电池盒内的重置按钮) - 一种方法是:在计算机“看到”蓝牙硬件后,单击“连接”并立即按设备上的“重置”。
蓝牙符号和/或上下文菜单显示配对成功。
只有几个按钮可以工作(上/下/左/右键,鼠标右键单击和空格 - 就是这样)。
因此,我们必须配置某种映射。
所需的依赖项
# yum install \
git gcc strace strace autoconf automake libtool systemd-devel ncurses-devel
xorg-x11-util-macros xorg-x11-proto-devel xorg-x11-server-devel
(strace 并不是绝对必要的,但在运行 xwiimote 时检查权限被拒绝的问题很有用)
xwiimote
xwiimote 存储库包含与 bluetooth-daemon-plugin 和一些相关工具交互的基本用户空间库。
不幸的是,这个软件还没有为 Fedora 打包。
因此,我们必须编译它:
$ git clone https://github.com/dvdhrm/xwiimote.git
$ cd xwiimote
$ ./autogen.sh
$ ./configure --prefix=$HOME/local/xwiimote
$ make
$ make install
一些硬件测试
$ ./xwiishow list
Listing connected Wii Remote devices:
Found device #1: /sys/devices/pci0000:00/0000:00:1a.1/usb4/4-2/4-2:1.0/bluetooth/hci0/hci0:11/0001:0002:0023.0032
End of device list
=> 配对成功,我们必须修复权限以进行进一步测试:
# chown root:juser /sys/devices/pci0000:00/0000:00:1a.1/usb4/4-2/4-2:1.0/bluetooth/hci0/hci0:11/0001:0002:0023.0032/leds/*/brightness
# chmod g+w /sys/devices/pci0000:00/0000:00:1a.1/usb4/4-2/4-2:1.0/bluetooth/hci0/hci0:11/0001:0002:0023.0032/leds/*/brightness
$ xinput --list
[..]
↳ Nintendo Wii Remote Accelerometer id=9 [slave keyboard (3)]
↳ Nintendo Wii Remote IR id=10 [slave keyboard (3)]
↳ Nintendo Wii Remote id=11 [slave keyboard (3)]
↳ Nintendo Wii Remote Extension id=12 [slave keyboard (3)]
↳ Nintendo Wii Remote Motion+ id=13 [slave keyboard (3)]
[..]
=> 一些更多的权限调整:
# chown root:juser /dev/input/event1[0123] /dev/input/event9
# chmod g+w /dev/input/event1[0123] /dev/input/event9
(xiimote 存储库还包含用于连接权限设置的示例 udev 规则,但它们仅对于像 xwiishow 那样的直接访问是必需的)
启动 ncurses 界面来测试按钮、传感器、校准等:
$ ./xwiishow 1
(其中 1 是第一个设备)
真实 Xorg 设置
Fedora/Fusion 软件包存储库中还没有提供 xinput2 模块。
$ cd ..
$ git clone https://github.com/dvdhrm/xf86-input-xwiimote.git
$ cd xf86-input-xwiimote
$ ./autogen.sh
$ PKG_CONFIG_PATH=$HOME/local/xwiimote/lib/pkgconfig ./configure --prefix=$HOME/local/xwiimote LDFLAGS="-L$HOME/local/xwiimote/lib -Wl,-R$HOME/local/xwiimote/lib"
$ make
$ make install
验证运行时路径设置:
$ ldd /home/gms/local/xwiimote/lib/xorg/modules/input/xwiimote_drv.so
(不应显示“未找到”消息)
更改系统范围的 Xorg 配置:
# cd /etc/X11/xorg.conf.d
# ln -s /home/juser/src/xf86-input-xwiimote/60-xorg-xwiimote.conf
# cd /usr/lib64/xorg/modules/input/
# ln -s /home/juser/local/xwiimote/lib/xorg/modules/input/xwiimote_drv.so
注销并重新启动 X。
通过 X 命令行工具进行验证xev
:所有按钮现在都应该发送真实的键代码。
例如,对于我的硬件,默认值是:输入、左/右/上/下、空格、1、2、esc、音量 +/-
(这是相当合理的默认值)
杂项
廉价的 Wiimote 克隆版还带有“双节棍”扩展,该扩展无法与 xiishow - YMMV 一起使用。