The evdevhook2 package contains an evdev-based Cemuhook UDP server. Plenty of video game console emulators optionally use a Cemuhook UDP server to retrieve motion data from video game controllers that have gryo sensors. For some controllers, this is required as SDL or Steam Input may map the pitch, yaw, or roll incorrectly, or simply not at all.
The main Cemuhook UDP server has been depricated since Cemu now has its own methods of handling input properly. Many emulators still want the server, despite this deprecation, so this is a modern solution to the problem.
GLib, libevdev, libgee, and Vala
Install evdevhook2 by running the following commands:
mkdir build &&
cd build &&
meson setup --prefix=/usr \
--buildtype=release \
.. &&
ninja
Now, as the root user:
ninja install &&
mv -v /usr/share/doc/evdevhook2{,-1.0.2}
--buildtype=release:
Specify a buildtype suitable for stable releases of the package, as
the default may produce unoptimized binaries.
mv -v /usr/share/doc/evdevhook2{,-1.0.2}: This command makes the documentation directory versioned to be consistent with the other documentation directories.
Now that evdevhook2 is installed, a normal run of the installed server should suffice, typically. You may wish to configure the server. If so, install it as an unprivileged user:
mkdir -pv ~/.config/evdevhook2 &&
cp -v /usr/share/doc/evdevhook2-1.0.2/ExampleConfig.ini \
~/.config/evdevhook2/config.ini
Edit it as you see fit. However, the server won't pick it up unless you pass the path to it as an argument. That means it doesn't matter too much where the configuration file is installed to as long is it can be read from.
To start the evdevhook2 server whenever the system is booted,
install and enable the following Systemd unit as the root user:
cat > /usr/lib/systemd/system/evdevhook2.service << "EOF" &&
[Unit]
Description=evdevhook2 Cemuhook UDP server
[Service]
Type=exec
ExecStart=/usr/bin/evdevhook2
[Install]
WantedBy=multi-user.target
EOF
systemctl enable evdevhook2