evfwd is a new tool for forwarding evdev input events from one Linux host to another, typically through an ssh connection.
The reason I am posting this here is that my initial motivation for creating the tool was gaming related: I wanted to be able to use my laptop’s keyboard and gamepad on my Steam Deck.
The tool works by serializing /dev/input/… events on one hosts and then injecting them via /dev/uinput on another. You have to arrange the pipe between the two ends, typically using ssh:
evfwd /dev/input/somedevice | ssh somehost evfwd -s
See the readme for more details.
This blog entry was recently posted over on !linux_gaming@lemmy.ml. https://blogs.gnome.org/alicem/2024/10/24/steam-deck-hid-and-libmanette-adventures/
It details how the controller on the Deck works. Maybe it can help you.
Thanks. I tried to make sense of it and experimented a bit with making the same ioctl’s mentioned but couldn’t get it to work. I either didn’t get it right or it’s something else.
Maybe I will take another look later but for now my workaround is to just fire up Baba Is You which idles at a low cpu use and then run evfwd with the grab option so that Baba no longer gets the input.