Peter Hutterer
bf88b34918
Split the ei_pointer interface up into its components
...
Split the ei_pointer protocol interface into ei_pointer,
ei_pointer_absolute, ei_scroll and ei_button.
This gets rid of the slightly awkward pointer vs pointer absolute
handling. Those were two different capabilities but tied to the same
interface.
Plus it paves the way for devices that are keyboards with scroll
buttons, etc.
2023-05-02 05:53:25 +00:00
Peter Hutterer
a157cbfa42
Rename an internal struct to scroll_state
...
To avoid future name clashes.
2023-05-02 05:53:25 +00:00
Peter Hutterer
6215eecfbd
test: fix a debug log typo
2023-04-27 15:22:07 +10:00
Peter Hutterer
d21726965b
doc: move the sentinel attribute to unconfuse doxygen
...
The compiler doesn't care, doxygen apprently does.
2023-04-27 14:42:25 +10:00
Peter Hutterer
97a7a3e360
doc: fix two obsolete API comments
2023-04-27 14:42:22 +10:00
Peter Hutterer
53f4564019
meson: require the python modules that the scanner requires
...
The scanner uses attr and jinja2, so let's make sure we have them.
2023-04-26 14:25:21 +10:00
Peter Hutterer
f6cd949472
test: cast the varargs to the right data size
...
Fixes the test suite issues on 32 bit. Only needed for the 64 bit
arguments, but let's do the 32 bit as well for solidarity and
readability.
Fixes #30
2023-04-26 12:18:58 +10:00
Peter Hutterer
9c5c3c890f
ei: de-duplicate ei_seat_unbind_capability
...
ei_seat_unbind_capabilities does the same, so let's use that.
2023-04-14 10:52:39 +10:00
Peter Hutterer
cf74cfeb1e
ei: fix ei_seat_unbind_capabilities
...
Simplify the code a little but more importantly: if we get down to zero
capabilities close the devices - just like we do in
ei_seat_unbind_capability.
2023-04-14 10:51:40 +10:00
Peter Hutterer
1a4764d99b
libei 0.5
2023-04-06 14:19:22 +10:00
Peter Hutterer
f15736e809
scanner: add a validator for Interface.mode
...
Not really needed since we currently have an assert in create but this
makes the code more obvious.
2023-04-06 14:01:07 +10:00
Peter Hutterer
3546a443a9
scanner: auto-mangle the interface name when accessed
...
Now that we only have one place where we need to mangle the name, let's
make this a property of the Interface instead.
2023-04-06 14:00:44 +10:00
Peter Hutterer
cfd2980ae4
scanner: look up interfaces by protocol name
...
Now that we have it, let's use it instead having to mangle names.
2023-04-06 13:57:20 +10:00
Peter Hutterer
24680aef2e
test: use an enum iterator to loop through the interface names
2023-04-06 13:57:20 +10:00
Peter Hutterer
5aad9fd777
scanner: add the protocol name so we can compile some #defines
...
The protocol name on an interface is a fixed string that is part of
the ABI since it's used in a few messages (e.g.
ei_handshake.interface_version). To avoid typos, let's expose that
string in the scanner and #define it in the generated sources.
2023-04-06 13:57:20 +10:00
Peter Hutterer
fa07430683
scanner: use mangle_name for the interface name
2023-04-06 13:57:20 +10:00
Peter Hutterer
99b36ba652
test: add a test for pointer vs abs pointer receiving
2023-04-06 13:57:20 +10:00
Peter Hutterer
7f7880d953
test: add test for receiving the device interfaces
2023-04-06 13:57:20 +10:00
Peter Hutterer
5b1b5aec1a
proto: replace pointer/keyboard/touchscreen with a generic "interface" event
...
Since these events are merely notifications of a single object, we can make
this more generic. This allows us to introduce future capabilities without
having to bump the seat.
2023-04-06 13:57:18 +10:00
Peter Hutterer
4b77664dc1
test: if we fail to load liboeffis.so, skip the rest of the pytests
...
This gives us a nicer behavior when (semi-intentionally) running pytest
in the source directory.
2023-04-06 12:04:51 +10:00
Peter Hutterer
6179c91580
test: fix the exception check for the missing eiproto module
...
When running pytest from the source directory we get a
ModuleNotFoundError, not an ImportError.
2023-04-06 12:04:35 +10:00
Peter Hutterer
0aa8bab9c0
test: drop the default timeouts to 2
...
There's no need to wait any longer.
2023-04-05 14:22:31 +10:00
Salman Malik
a438e46e18
config: Make memfd_create optional
...
`memfd_create` doesn't seem to be supported on
all platforms (e.g. ubuntu 18 has trouble with it).
Even though, I was able to substitute `memfd_create`
with a direct system call, I was not able to get
the `MFD_CLOXEC` flag (from fcntl.h) working cleanly
(there were redefinitions/conflicts for other
structures when trying to use <linux/*> headers).
Making it optional for time being till we have
figured out how to make it work broadly.
2023-03-28 11:24:06 +00:00
Salman Malik
8b7fb73bfd
ei-scanner: Adjust annotation for list
...
Otherwise Python complains about:
TypeError: 'type' object is not subscriptable
2023-03-25 23:00:41 +00:00
Peter Hutterer
5332124abf
CI: add a debian bullseye job
2023-03-19 07:56:09 +00:00
Peter Hutterer
74ed569fe0
test: skip the oeffis tests if we don't have dbusmock 0.28.5
2023-03-19 07:56:09 +00:00
Peter Hutterer
bba921329d
proto: skip the bitmask check if on old python versions
...
int.bit_count() requires Python 3.10, so let's skip it where not
available.
2023-03-19 07:56:09 +00:00
Peter Hutterer
a95c9e1799
meson: drop version requirement to 0.56 so we can build on Bullseye
...
Looks like the only more recent meson feature we use is for
'exclude_suites' in the valgrind test setup. We can just skip that.
2023-03-19 07:56:09 +00:00
Peter Hutterer
c5aa2c0b60
doc/proto: address a few documentation issues
...
A few clarifications as suggested by Benjamin Tissoires.
2023-03-17 14:03:32 +10:00
Salman Malik
150ac5b4ac
src/meson.build: Switch shared_library => library
...
This is the recommendation from meson documentation. The default
option is still to create a shared library but doing it this
way gives users an opportunity to create either a shared, static
or both type of libraries by setting up the meson build appropriately.
Here is the result with the default setup:
$ meson setup . _build
$ meson compile -C _build
$ find _build | egrep "(\.so|\.a)$"
_build/subprojects/munit/libmunit.so
_build/test/libunittest.a
_build/test/libeierpecken.a
_build/src/libei.so
_build/src/liboeffis.so
_build/src/libutil.a
_build/src/libeis.so
And here it is with the overridden flag:
_build/subprojects/munit/libmunit.a
_build/test/libunittest.a
_build/test/libeierpecken.a
_build/src/libei.a
_build/src/libeis.a
_build/src/liboeffis.a
_build/src/libutil.a
$ meson setup . _build --default-library=static
$ meson compile -C _build
$ find _build | egrep "(\.so|\.a)$"
2023-03-15 00:47:15 +00:00
Peter Hutterer
1bc04bffa8
CI: add new workflow rules
...
Required for pipelines to run after some infrastructure changes, see
See https://gitlab.freedesktop.org/freedesktop/freedesktop/-/issues/438
2023-03-15 09:47:14 +10:00
Peter Hutterer
e6cb6b1998
Add a pre-commit hook
...
Moving my local hooks into a pre-commit hook set that others can find
useful too:
- remove trailing whitespaces and newlines
- don't allow commits to the "main" branch
- python black and python ruff (same args as in the CI)
2023-03-13 08:52:08 +10:00
Peter Hutterer
8954d96227
Remove empty trailing newlines from all files
2023-03-13 08:52:08 +10:00
Peter Hutterer
940f2778a9
CI: bump to the latest ci templates
...
This version includes a fix for ci-fairy to handle the trailing newlines
in a more predictable manner.
2023-03-13 08:51:52 +10:00
Peter Hutterer
37f4351a67
doc/proto: add a page for the ei-scanner
...
In case someone is actually planning to use that one
2023-03-10 14:25:59 +10:00
Peter Hutterer
d44de4e73e
doc/proto: add a link to the git repo and issues page
2023-03-09 14:49:03 +10:00
Peter Hutterer
e8765f3042
doc/proto: add a page describing the libraries
...
Now that the API doc is behind a link, let's make it a bit more
prominent to find.
2023-03-09 14:28:30 +10:00
Peter Hutterer
2665224461
doc/proto: mirror the required directory structure
...
Might as well make this easier for us locally.
2023-03-09 14:28:30 +10:00
Peter Hutterer
3bcece1923
doc/proto: remove now unused files
...
Obsolete since 5258a559eb :
doc/proto: remove the embedded docs from the proto, use static pages instead
2023-03-09 13:43:43 +10:00
Peter Hutterer
6b7424e821
doc/proto: fix a bug with the pages script
...
Removing the chapter pages means the directory no longer exists, so we
manually have to mkdir it.
2023-03-08 16:07:00 +10:00
Peter Hutterer
5258a559eb
doc/proto: remove the embedded docs from the proto, use static pages instead
2023-03-08 11:09:58 +10:00
Peter Hutterer
56004836b9
proto: add the context-type attribute to events and requests
...
This allows us to mark/filter requests and events that are only
available on a given context type.
2023-03-08 09:01:03 +10:00
Peter Hutterer
fb5b607c13
doc/proto: put a standard blurb in for the destructor-type requests
...
Should eventually have a separate protocol documentation section for
this and point to it, but this will do for now.
2023-03-07 19:29:27 +10:00
Peter Hutterer
59ab84669f
doc/proto: add some basic index pages
...
Better than the placeholders...
2023-03-07 19:22:00 +10:00
Peter Hutterer
ef430fceb0
doc/proto: add the generator script to the input files
...
So meson tracks the dependency better
2023-03-07 19:07:46 +10:00
Peter Hutterer
f97aa73c7c
doc/proto: sort pages by occurrence in the protocol file
2023-03-07 19:05:52 +10:00
Peter Hutterer
f4f6dabbe2
proto: fix references to ei_handshake.interface_version
2023-03-07 18:58:58 +10:00
Peter Hutterer
3b30c38a39
protocol: more protocol documentation
2023-03-07 15:26:36 +10:00
Peter Hutterer
b05b256fd8
scanner: expand the regex to search for protocol names
...
This now finds nested ei_foo.bar.baz too (though it includes the
trailing full stop, if any).
2023-03-07 15:26:36 +10:00
Peter Hutterer
4ac13ac7a7
CI: fix the doxygen path
...
Adding the mkdir means we copy into that directory.
2023-03-07 15:26:36 +10:00