libei 0.5 is now available. libei is a library to send Emulated Input (EI) to a matching Emulated Input Server (EIS) which can receive those events with libeis, also part of this project.
libei uses GitLab releases, for tarballs please see: https://gitlab.freedesktop.org/libinput/libei/-/releases/0.5 Notable changes since 0.4.1: - the previously protobuf-based ad-hoc protocol has changed to custom format defined in the protocol.xml file. This protocol is heavily influenced by the Wayland protocol but not binary compatible. The protocol is not yet stable. - new and prettier documentation, primarily aimed at the protocol. See https://libinput.pages.freedesktop.org/libei/ - ei_get_version() has been removed, with the protocol having per-interface versions this is no longer useful - ei_device_start_emulating() now takes a sequence number - Support for properties has been removed. The use-case for these was a bit unclear anyway and the few things they could have been used for are catered for by the portal. - libreis has been removed. The use-case for this was a bit unclear and it didn't provide anything the portals can't do. This is a development snapshot and neither API nor ABI should be considered stable. Anyone using libei or libeis must keep both in sync, there are no accommodations made for libei/libeis from different versions and the wire protocol may break at any time. Please see the documentation here: https://libinput.pages.freedesktop.org/libei/ The git shortlog is below: Jonas Ã…dahl (4): protocol: Make integer explicitly sized demos: Print timestamp protocol: Add support for 64 bit integers on the wire protocol: Make timestamps a single 64 bit argument Peter Hutterer (273): meson.build: add override_dependencies for all our libraries gitlab CI: drop the reference to the forced container rebuild gitlab CI: drop the container clean stage gitlab CI: compress the file inclusion a bit gitlab CI: switch the ci-fairy job to the fdo ci-fairy image gitlab CI: move default_artefacts to the default build template gitlab CI: replace meson-build.sh with a more generic one gitlab-ci: add one more explanatory comment Format python files with black util-time: fix the us2ms function ei: re-order a few arguments to match the order in the protocol Add a gitignore file for the subprojects directory ei: fix a typo test: fix a test case's behavior eis: don't allow connecting a disconnected client test: fix compiler warning about possible loss of precision meson.build: switch the source file lists to use files() meson.build: switch the src include dir to the proper meson way meson.build: use proper include handling for the proto dir brei: drop the explicit src in a #include statement meson.build: move tests to test/meson.build proto: drop the varint values, replace with fixed size ones proto: drop the Packet message, replace with 4 byte prefix Purge libreis from the repo Purge the properties from the protocol Add a sequence number to START_EMULATING test: fix pytest loading liboeffis.so tools: add a comment to the demo server tools: cleanup our clients in the eis demo server tools: whitespace fix in the demo server util: add a object getter helper for fields as refs util: add macros to declare getters and setters util: undo accidental rename from source->is_active to is_sender meson.build: alphabetical sort of the source files Remove the public API to query the client version number Add some extra getters for the context and the eis_client ei: divide the headers up across multiple files eis: divide the headers up across multiple files eis: don't send stop_emulating for a sender device test: drop a bunch of unused imports CI: move the package list to the config.yml file CI: the check-commit and check-merge-request should use the ci-fairy image CI: use the ci-fairy image and a venv for the black job CI: add a python linter job with Ruff CI: fix typo in the package list util: rename xvasprintf to xvaprintf ei: implement ei_device_get_width/height test: set the minimum bits for our test devices eis: don't EINVAL if a coordinate is outside the region util: add msleep() tools: copy the default log handler to the eis demo server libeis: make eis_client_get_context() part of the public API eis: use eis_client_get_context instead of parent util: add some mask helpers util: mmap with MAP_PRIVATE instead of MAP_SHARED ei: rename ei_set_connection to ei_set_socket Add ei/eis getters for the device id ei-device: use the setter declaration macros util-io: add a few helper functions to iobuf Drop protobuf in favour of a custom protocol protocol: rename the ei core interface to ei_connection protocol: add a sync request and the ei_callback interface protocol: add a ei_connection_setup interface eis: add a reason to the disconnect message protocol: add an interface version announcement to the connection setup Add the ei_callback interface versions protocol: add a seat interface eis: make sure our connection setup has the right version too eis: update libeis-client to use the declare macros protocol: check any incoming/outgoing messages for versions protocol: move the seat bind to the seat object brei: pass the proto object through to send_message protocol: add the ei_device interface protocol: move start/stop emulating into the device protocol: move the frame event into the device interface eis: switch to a goto out approach protocol: move pointer/keyboard/touch into separate interfaces protocol: move the keymap into the keyboard interface protocol: make the connection setup the zero object with a proper handover protocol: document the protocol better ei: remove now-unused function brei: remove some obsolete functions scanner: add enum verification checks protocol: require the "since" attribute for all messages brei: add a brei context object protocol: rename the touch capability to touchscreen protocol: add the "bitmask" enum type and check for it scanner: switch to a two-run parsing of the XML file eis: destroy the eis_connection immediately after sending disconnect scanner: add the camel_name property to our messages eis: don't send seat events unless the client supports ei_seat scanner: parse the type="destructor" attribute on requests/events protocol: rename the interface request to interface_version protocol: rename type to context_type protocol: mark the disconnected event as destructor protocol: mark the various destroyed events as destructors protocol: complete documentation for the protocol XML file scanner: pass the component through as well scanner: make the invalid type message a bit easier to identify protocol: add ei_connection.invalid_object scanner: handle since tags in enum values eis: only allow the available caps to bind to a seat eis: drop the seat when the client requests it protocol: fix a typo proto: add a ping/pong request Split the ping/pong request into its own interface eis: drop the device->id now that it's all protocol-wrapped eis: immediately disconnect a client without the ei_connection interface eis: make ei_connection/callback/pingpong required interfaces proto: if the target object no longer exists, don't send events/requests eis: require ei_seat and ei_devices scanner: drop the Target class, push to templates Move the C proto templates to the src directory meson.build: drop the protocol version ei: remove unused server_version and client_version fields proto: switch connection_setup.version to mirror interface_version requests ei: handle server-sent interface versions correctly eis: send out the ei_callback interface version after setup.Done scanner: rename to ei-scanner scanner: add the "camel" jinja filter scanner: expand the help description scanner: drop the Argument.argtype in favour of DBus-type bindings proto: document what a "protocol violation" means scanner: detect duplicates in the XML file eis: pass the disconnect reason around when disconnecting a client Add a brei-proto.h generated header file brei: add the brei_result object and bubble it up as error case Remove unused macro proto: add a bunch of error reasons for debugging ei: better protocol checking for invalid messages ei: reject a device with capabilities unknown to us eis: add eis_client_disconnect_with_reason ei: remove some indirection from device events ei: error out if we're in the wrong device state for emulating eis: error out if we're in the wrong state to start/stop emulating eis: remove some indirection from the device event handling ei: make more ei_queue* functions semi-public for consistency brei: change the various errors to PROTOCOL Replace remaining errno-based errors to proper brei_results protocol: a few more minor comments protocol: change the context type enum to start at 1 Add serial numbers to the protocol scanner: pass the Enum to the Entry class scanner: comments and some more type annotations scanner: don't allow incoming/outgoing for modes other than ei/eis scanner: slightly clean up the XML error handling scanner: rename run to run_counter scanner: separate the parser from the actual protocol scanner: factor out the protocol type mapping to be global scanner: rename to as_c_arg and c_type for the c-specific functions protocol: correct some comments protocol: add serial numbers to the various destroy events doc: add generated BREI documentation scanner: parse the descriptions as well scanner: fix a few black complaints CI: explicitly add the ei-scanner to the Python Black run protocol: improve a comment util: add iobuf_prepend() proto: switch to use the Wayland message header scanner: fix mypy errors scanner: use the proper SAXException class scanner: parse the copyright tag protocol: more explanations protocol: change type=bitmask to use the wayland protocol's bitfield=true meson: hook up a dtd check via xmllint proto: add a serial number to the modifiers event protocol: rename "type" arguments and events test: add a framework for doing protocol tests directly CI: run pytest as separate job scanner: allow for cross-referencing enums proto: drop the seat caps and cross-reference device caps instead proto: rename connection_setup.done to .finish proto: fix wrong references to ei_callback in the pingpong interface proto: improve the documentation proto: shift the capabilities down by one test: remove unused python import test: fix a ruff warning - f-string without placeholder test: strip all trailing zeroes from the protocol strings proto: rename ei_connection_setup to ei_handshake protocol: more clarifications editorconfig: add XML protocol: split the handshake version negotiation from the other interfaces ei: correct arguments to the invalid object log message Change the ei_device_capability values to match the protocol test: simplify results handling in the python tests Switch object ids to use the object_id_t typedef Remove now-obsolete proto files Remove obsolete declaration ei: remove obsolete device->id util: add a strlen0 helper function brei: factor out header size for the unit tests brei: abstract string handling in a struct proto: switch object ids to 64 bits proto: split up message length and opcode again brei: use memcpy for the 64bit protocol copy eis: remove now-unused macro Check incoming ids for validity test: distinguish better between stderr/stdout of the subprocess Ignore the dispatcher where an interface implementation is missing eis: don't send a disconnected event when the client requests disconnect test: throw an exception if sock.connect fails test: up the timeout for dispatch meson.build: add black and ruff checks to the test suite CI: explicitly add ei-proto to the ruff check test: run pytest with xdist where available test: group 4 bytes at a time in our hexlify function test: log all function calls to interfaces client: drop seats when destroying the client protocol: fix two cross-references scanner: raise SystemExit instead of calling sys.exit scanner: drop duplicate import scanner: add ability to pass extra data to the jinja templates src: pass the headerfile as jinja extra data proto: make the documentation an extractable set of XML tags scanner: allow '-' for loading a template from stdin scanner: add a filter to escape ei protocol names doc: add the templates and a script to generate hugo markdown Generate the protocol documentation in gitlab pages proto: clarify that the ei_seat capabilities depend on ei_device tools: fix a debug message in the demo client tools: add touchscreen support to the eis-demo-server tools: add touch support to the ei-demo-client meson: split into separate meson.build files for src/tools meson: move the "build this?" checks into the subdirs proto: more documentation improvements proto: give a rough protocol overview as part of the docs meson: fix a typo test: fix the LD_LIBRARY_PATH to liboeffis CI: always run the tests Merge branch 'main' into wip/drop-protobuf meson: make the header files variables to use within other meson files doc: move the API documentation into its own directory doc: drop the doxygen protocol generation meson: hook up the protocol documentation via meson doc: split protocol and api builds into separate meson options CI: fix the doxygen path scanner: expand the regex to search for protocol names protocol: more protocol documentation proto: fix references to ei_handshake.interface_version doc/proto: sort pages by occurrence in the protocol file doc/proto: add the generator script to the input files doc/proto: add some basic index pages doc/proto: put a standard blurb in for the destructor-type requests proto: add the context-type attribute to events and requests doc/proto: remove the embedded docs from the proto, use static pages instead doc/proto: fix a bug with the pages script doc/proto: remove now unused files doc/proto: mirror the required directory structure doc/proto: add a page describing the libraries doc/proto: add a link to the git repo and issues page doc/proto: add a page for the ei-scanner CI: bump to the latest ci templates Remove empty trailing newlines from all files Add a pre-commit hook CI: add new workflow rules doc/proto: address a few documentation issues meson: drop version requirement to 0.56 so we can build on Bullseye proto: skip the bitmask check if on old python versions test: skip the oeffis tests if we don't have dbusmock 0.28.5 CI: add a debian bullseye job test: drop the default timeouts to 2 test: fix the exception check for the missing eiproto module test: if we fail to load liboeffis.so, skip the rest of the pytests proto: replace pointer/keyboard/touchscreen with a generic "interface" event test: add test for receiving the device interfaces test: add a test for pointer vs abs pointer receiving scanner: use mangle_name for the interface name scanner: add the protocol name so we can compile some #defines test: use an enum iterator to loop through the interface names scanner: look up interfaces by protocol name scanner: auto-mangle the interface name when accessed scanner: add a validator for Interface.mode libei 0.5 Salman Malik (3): src/meson.build: Switch shared_library => library ei-scanner: Adjust annotation for list config: Make memfd_create optional
signature.asc
Description: PGP signature