Implement native InputCapture with private EIS receiver transport

Add consent, zones and outside-edge barriers, connection-scoped leases, bounded input queues and keyboard/pointer forwarding. Restore local input on release, locking, topology or keymap changes, receiver loss and emergency escape. Preserve held-key state and distinguish finger stops from absent scroll axes.

Validation: independent review cleared; 5 native InputCapture unit tests; 32 portal tests; official D-Bus contract checks on a private bus; real installed libei receiver interoperability test. Live physical barrier and consent interaction remain to be checked in a desktop session.
This commit is contained in:
Samuel Onoja committed 2026-09-30 04:51:08 +01:00
1 parent baca852ee9
commit d26e1511d1
22 files changed
+2349 -11

No files matched your search

Generated
+14
View File
@@ -4886,6 +4886,18 @@ version = "0.8.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d6f6ff9a378485b298a5286656da665ba74413d36db0979633275d2e708145d4"
[[package]]
name = "reis"
version = "0.7.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4b967ec6489a42067a20724f11987bb96178ea796873cbe1afd25fb93ee6f85f"
dependencies = [
"calloop 0.14.4",
"enumflags2",
"log",
"rustix 1.1.5",
]
[[package]]
name = "renderdoc-sys"
version = "1.1.0"
@@ -7415,6 +7427,7 @@ checksum = "2fb433233f2df9344722454bc7e96465c9d03bff9d77c248f9e7523fe79585b5"
name = "xdg-desktop-portal-ferese"
version = "0.1.0"
dependencies = [
"calloop 0.14.4",
"dirs",
"ferese-config",
"ferese-ipc",
@@ -7429,6 +7442,7 @@ dependencies = [
"memmap2 0.9.11",
"pipewire",
"png 0.18.1",
"reis",
"serde",
"serde_json",
"tempfile",