This allows submission of fake input events to control the X server from tests.
The basic architecture is simple. Upon startup, the driver creates two fifo files, one for reading and another for writing at pre-configured paths. The controlling process would send events to the driver which would itself then call corresponding
xf86Post*Event with appropriate parameters.
The controlling process can send a synchronization event which causes the driver to wait until previous input events have been processed. For this purpose the driver uses this new API in X server: xorg/xserver!510 (merged).
Currently we uses two pipes for bidirectional communication. A better idea would be to use a domain socket, but as initial implementation two pipes looked simpler.