Some protocol notes
Some questions I had regarding the protocol when I wrote my implementation:
In several places, events are referred to as requests, probably due to copy-paste.
Clients are not required to send ei_callback versions but servers are required to send ei_callback versions.
The ping event says that
The ping event asks the client to emit the 'done' event
on the provided ei_callback object.
but the actual interface is ei_pingpong.
The protocol says that
The EIS implementation should not process changes to the device state
until the ei_device.frame event. For example, pressing and releasing
a key within the same frame is a logical noop.
but also
It is a client bug to send more than one key request for the same key
within the same ei_device.frame.
The protocol says that
The physical scale denotes a constant factor that needs to be applied to
any relative movement on this region for that movement to match the same
*physical* movement on another region.
but it is not clear if the client must multiply or divide by the scale.
The protocol says that
It is an EIS implementation bug to advertise the absolute pointer capability
on a device_type.virtual device without advertising an ei_region for this device.
but it seems that the same should apply to ei_touchscreen.
The interface event says that
This event may be sent for the
- "ei_pointer" interface if the device has the
ei_device.capabilities.pointer capability
but there is no such enum.
The protocol says that
Pausing a device resets the logical state of the device to neutral.
This includes:
- any buttons or keys logically down are released
- [...]
- any touches logically down are released
but the client has no way to know which buttons and touches are down in the first place if it is a sender.
The protocol says that
Interface for pointer motion requests and events. This interface
is available on devices with the ei_device.capability pointer.
but, as above, this enum no longer exists.
The protocol says that
<request name="motion_relative" since="1" context-type="sender">
<description summary="Relative motion request">
[...]
It is a client bug to send this request on a device without
the ei_device.capabilities.pointer capability.
but the protocol is strongly typed.
The protocol says
This event is only sent for devices with an ei_keyboard.keymap.
but the keymap event is mandatory.
There is no way to cancel a touch interaction.