Input Server Notes

Input is handled by an input "demultiplexer" that we refer to as the "input server", which is responsible for directing input to the various VMs (including the UIVM, which presents the user interface used to start/stop VMs). You can find it on GitHub:

 https://github.com/OpenXT/input

In particular, the input server monitors udev for new event devices

 https://github.com/OpenXT/input/blob/master/input.c#L2951

and chooses whether to parse their event data:

 https://github.com/OpenXT/input/blob/master/input.c#L2768

I would suggest taking a look at the input server's output-- if you see an event device that works under evtest, it seems likely that one of two things is happening:

  • Your device looks like a device that won't work for input, so the input server is rejecting it in consider_device; or
  • Your device is producing evdev events that the input server can't handle. You can read through the parsing logic in that input.c file.