Add DeviceRegions to replace the pointer/touch ranges
On top of !45 (merged)
This is required for supporting synergy/barrier and similar clients. Replacing the touch and pointer range we now have server-defined rectangular regions that specify the active zones for this device.
For example, a dual-monitor EIS server would create two touch devices with one region each for the respective monitors - libei-generated touches would thus fall on the right area of the monitor. Or just one device with one region if the second screen should be inaccessible.
A relative device may have multiple regions since it can reach all screens in the layout.
This leaks the screen layout to libei but that is necessary for the functionality to work. A libei client may need to control devices through absolute coordinates and it needs to know where screen transitions from one to the next screen happen:
+-----------++----------------+
| || |
| B||Q |
| |+----------------+
| |
| A|P
+-----------+
In the above example, position P is unreachable and a client that controls input on both screens must know that it cannot transition from A to P but it can transition from B to Q.
Needs a documentation review and test cases, but right now I'm just trying to get the poc to work. cc @jadahl