libei: la capa de transporte para entrada emulada llega a los portales XDG

Fuentes: libei integrations in the XDG RemoteDesktop and InputCapture portals

libei es una biblioteca que actúa como capa de transporte para eventos lógicos de entrada en sistemas Linux, a diferencia de libinput, que se sitúa sobre el hardware. Mientras libinput interpreta señales del firmware o del kernel para convertirlas en eventos lógicos, libei se limita a entregar esos eventos ya formados al servidor EIS (Emulated Input Server), normalmente implementado por el compositor, sin reinterpretarlos. Admite dos modos: emisor, cuando un cliente envía eventos al EIS (emulación de entrada), y receptor, cuando los recibe desde el EIS (captura de entrada). Su diseño otorga al EIS el control sobre qué dispositivos están disponibles, cuándo pueden emitir eventos y bajo qué condiciones, replicando el modelo por el cual el compositor gobierna los dispositivos físicos en Wayland.

Desde su propuesta inicial, libei se ha integrado en los portales XDG Remote Desktop y XDG Input Capture a partir de la versión 1.17 (mediados de 2023), donde el portal gestiona la negociación inicial y libei transporta los eventos entre procesos. Más recientemente se añadió soporte de persistencia de sesión —disponible desde la versión 1.21.0 de los portales y trabajo principal de Jonas Ådahl— para que el usuario no tenga que autorizar el acceso en cada conexión.

Esta arquitectura permite que cualquier cliente que use los portales XDG funcione con cualquier compositor compatible, sin APIs específicas de GNOME o KDE. Un caso concreto es Xwayland: desde la versión 23.2.0 traduce las peticiones XTEST (el protocolo histórico de emulación de entrada en X) a eventos libei, gestiona el permiso a través del portal Remote Desktop y los reenvía, lo que hace que clientes X antiguos puedan enviar eventos de puntero y teclado sin saberlo, con la ventaja de que el usuario puede bloquear la operación y obtener información sobre el origen de los eventos. Próximos trabajos se centrarán en envío de texto, gestos y soporte de tabletas.