I am running Pop_OS! and want to set up an old WiiMote I have lying around as a mouse. I have a USB-sensor bar, and I don’t have any issues connecting the remote to the computer, and the inputs seems to register just fine when running xwiishow 1 after the remote is connected. I am also able to use it perfectly fine as a WiiMote in the Dolphin emulator.

Now, I want it to function as a mouse, and being a fairly new Linux user, this is where I get confused. I am not entirely sure what I need to have happen in order to make this work, but I realize there must be some translation of the IR-sensor data and some way for Pop_OS! to understand that this should be a mouse.

When searching for it, a lot of different names are thrown around, so I am not entirely sure what I should be looking for. However, from the ArchWiki (https://wiki.archlinux.org/title/Wiimote) it seems I have three choices:

  1. MoltenGamepad (https://github.com/jgeumlek/MoltenGamepad), but this seems to only handle button presses? This is also something I would like, i.e. mapping buttons to Pause/Play media. But it is not the only thing I want, and mouse movement + clicks is higher in priority.

  2. An X11 input driver - this I have tried to install according to the instructions on their GitHub-page (https://github.com/xwiimote/xf86-input-xwiimote), but failed to do so. The last commit to this project was back in 2014. The ArchWiki states:

“xf86-input-xwiimote has support for mouse-emulation via IR using the Option “MotionSource” “ir””

… which is what I want, but then also directly underneath:

"There is currently no user-space application that enables mouse-emulation with the IR-sensor. If you need that, you should consider using the no longer supported cwiid approach. However, the xwiimote tools are under heavy development and will soon support IR mouse-emulation, too. "

… which confuses me.

  1. cwiid is also listed as an approach on the ArchWiki, but they also say that it should not be used since it is discontinued.

I’m sure the main issue here is a knowledge gap on my part, so if there is a solution that seems obvious to any of you, I would greatly appreciate the help in both getting this to work and in understanding my system better.