input-capture: Hook up capturing of events to active session

This adds the actual input capturing rerouting that takes events and
first hands them to the input capture session, would it be active.
Events are right now not actually processed in any way, but will
eventually be passed to a libei client using libeis.

A key binding for allowing cancelling the capture session is added
(defaults to <Super><Shift>Escape) to avoid getting stuck in case the client
doesn't even terminate the session.

The added test case makes sure that the pointer moves again after
pressing the keybinding.

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/2628>
This commit is contained in:
Jonas Ådahl
2022-04-27 10:50:43 +02:00
committed by Carlos Garnacho
parent e5a35e8802
commit 2fb3bdf774
18 changed files with 1445 additions and 19 deletions

View File

@ -24,6 +24,7 @@
#include <glib-object.h>
#include "backends/meta-input-capture.h"
#include "backends/meta-viewport-info.h"
#include "meta/meta-remote-access-controller.h"
#define META_TYPE_INPUT_CAPTURE_SESSION (meta_input_capture_session_get_type ())
@ -39,4 +40,9 @@ G_DECLARE_FINAL_TYPE (MetaInputCaptureSessionHandle,
char *meta_input_capture_session_get_object_path (MetaInputCaptureSession *session);
gboolean meta_input_capture_session_process_event (MetaInputCaptureSession *session,
const ClutterEvent *event);
void meta_input_capture_session_notify_cancelled (MetaInputCaptureSession *session);
#endif /* META_INPUT_CAPTURE_SESSION_H */