diff --git a/src/backends/meta-input-settings-dummy.c b/src/backends/meta-input-settings-dummy.c
new file mode 100644
index 000000000..ff980423c
--- /dev/null
+++ b/src/backends/meta-input-settings-dummy.c
@@ -0,0 +1,295 @@
+/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
+
+/*
+ * Copyright 2021 Canonical, Ltd.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, see .
+ *
+ * Author: Marco Trevisan
+ */
+
+#include "backends/meta-input-settings-dummy.h"
+
+G_DEFINE_TYPE (MetaInputSettingsDummy,
+ meta_input_settings_dummy,
+ META_TYPE_INPUT_SETTINGS)
+
+static void
+meta_input_settings_dummy_set_send_events (MetaInputSettings *settings,
+ ClutterInputDevice *device,
+ GDesktopDeviceSendEvents mode)
+{
+}
+
+static void
+meta_input_settings_dummy_set_matrix (MetaInputSettings *settings,
+ ClutterInputDevice *device,
+ gfloat matrix[6])
+{
+}
+
+static void
+meta_input_settings_dummy_set_speed (MetaInputSettings *settings,
+ ClutterInputDevice *device,
+ gdouble speed)
+{
+}
+
+static void
+meta_input_settings_dummy_set_left_handed (MetaInputSettings *settings,
+ ClutterInputDevice *device,
+ gboolean enabled)
+{
+}
+
+static void
+meta_input_settings_dummy_set_tap_enabled (MetaInputSettings *settings,
+ ClutterInputDevice *device,
+ gboolean enabled)
+{
+}
+
+static void
+meta_input_settings_dummy_set_tap_button_map (MetaInputSettings *settings,
+ ClutterInputDevice *device,
+ GDesktopTouchpadTapButtonMap mode)
+{
+}
+
+static void
+meta_input_settings_dummy_set_tap_and_drag_enabled (MetaInputSettings *settings,
+ ClutterInputDevice *device,
+ gboolean enabled)
+{
+}
+
+static void
+meta_input_settings_dummy_set_tap_and_drag_lock_enabled (MetaInputSettings *settings,
+ ClutterInputDevice *device,
+ gboolean enabled)
+{
+}
+
+static void
+meta_input_settings_dummy_set_disable_while_typing (MetaInputSettings *settings,
+ ClutterInputDevice *device,
+ gboolean enabled)
+{
+}
+
+static void
+meta_input_settings_dummy_set_invert_scroll (MetaInputSettings *settings,
+ ClutterInputDevice *device,
+ gboolean inverted)
+{
+}
+
+static void
+meta_input_settings_dummy_set_edge_scroll (MetaInputSettings *settings,
+ ClutterInputDevice *device,
+ gboolean enabled)
+{
+}
+
+static void
+meta_input_settings_dummy_set_two_finger_scroll (MetaInputSettings *settings,
+ ClutterInputDevice *device,
+ gboolean enabled)
+{
+}
+
+static void
+meta_input_settings_dummy_set_scroll_button (MetaInputSettings *settings,
+ ClutterInputDevice *device,
+ guint button,
+ gboolean button_lock)
+{
+}
+
+
+static void
+meta_input_settings_dummy_set_click_method (MetaInputSettings *settings,
+ ClutterInputDevice *device,
+ GDesktopTouchpadClickMethod mode)
+{
+}
+
+
+static void
+meta_input_settings_dummy_set_keyboard_repeat (MetaInputSettings *settings,
+ gboolean repeat,
+ guint delay,
+ guint interval)
+{
+}
+
+
+static void
+meta_input_settings_dummy_set_tablet_mapping (MetaInputSettings *settings,
+ ClutterInputDevice *device,
+ GDesktopTabletMapping mapping)
+{
+}
+
+static void
+meta_input_settings_dummy_set_tablet_aspect_ratio (MetaInputSettings *settings,
+ ClutterInputDevice *device,
+ double ratio)
+{
+}
+
+static void
+meta_input_settings_dummy_set_tablet_area (MetaInputSettings *settings,
+ ClutterInputDevice *device,
+ gdouble padding_left,
+ gdouble padding_right,
+ gdouble padding_top,
+ gdouble padding_bottom)
+{
+}
+
+
+static void
+meta_input_settings_dummy_set_mouse_accel_profile (MetaInputSettings *settings,
+ ClutterInputDevice *device,
+ GDesktopPointerAccelProfile profile)
+{
+}
+
+static void
+meta_input_settings_dummy_set_trackball_accel_profile (MetaInputSettings *settings,
+ ClutterInputDevice *device,
+ GDesktopPointerAccelProfile profile)
+{
+}
+
+
+static void
+meta_input_settings_dummy_set_stylus_pressure (MetaInputSettings *settings,
+ ClutterInputDevice *device,
+ ClutterInputDeviceTool *tool,
+ const gint32 curve[4])
+{
+}
+
+static void
+meta_input_settings_dummy_set_stylus_button_map (MetaInputSettings *settings,
+ ClutterInputDevice *device,
+ ClutterInputDeviceTool *tool,
+ GDesktopStylusButtonAction primary,
+ GDesktopStylusButtonAction secondary,
+ GDesktopStylusButtonAction tertiary)
+{
+}
+
+
+static void
+meta_input_settings_dummy_set_mouse_middle_click_emulation (MetaInputSettings *settings,
+ ClutterInputDevice *device,
+ gboolean enabled)
+{
+}
+
+static void
+meta_input_settings_dummy_set_touchpad_middle_click_emulation (MetaInputSettings *settings,
+ ClutterInputDevice *device,
+ gboolean enabled)
+{
+}
+
+static void
+meta_input_settings_dummy_set_trackball_middle_click_emulation (MetaInputSettings *settings,
+ ClutterInputDevice *device,
+ gboolean enabled)
+{
+}
+
+static gboolean
+meta_input_settings_dummy_has_two_finger_scroll (MetaInputSettings *settings,
+ ClutterInputDevice *device)
+{
+ return FALSE;
+}
+static gboolean
+meta_input_settings_dummy_is_trackball_device (MetaInputSettings *settings,
+ ClutterInputDevice *device)
+{
+ return FALSE;
+}
+
+static void
+meta_input_settings_dummy_init (MetaInputSettingsDummy *input_settings)
+{
+}
+
+static void
+meta_input_settings_dummy_class_init (MetaInputSettingsDummyClass *klass)
+{
+ MetaInputSettingsClass *input_settings_class = META_INPUT_SETTINGS_CLASS (klass);
+
+ input_settings_class->set_send_events =
+ meta_input_settings_dummy_set_send_events;
+ input_settings_class->set_matrix =
+ meta_input_settings_dummy_set_matrix;
+ input_settings_class->set_speed =
+ meta_input_settings_dummy_set_speed;
+ input_settings_class->set_left_handed =
+ meta_input_settings_dummy_set_left_handed;
+ input_settings_class->set_tap_enabled =
+ meta_input_settings_dummy_set_tap_enabled;
+ input_settings_class->set_tap_button_map =
+ meta_input_settings_dummy_set_tap_button_map;
+ input_settings_class->set_tap_and_drag_enabled =
+ meta_input_settings_dummy_set_tap_and_drag_enabled;
+ input_settings_class->set_tap_and_drag_lock_enabled =
+ meta_input_settings_dummy_set_tap_and_drag_lock_enabled;
+ input_settings_class->set_disable_while_typing =
+ meta_input_settings_dummy_set_disable_while_typing;
+ input_settings_class->set_invert_scroll =
+ meta_input_settings_dummy_set_invert_scroll;
+ input_settings_class->set_edge_scroll =
+ meta_input_settings_dummy_set_edge_scroll;
+ input_settings_class->set_two_finger_scroll =
+ meta_input_settings_dummy_set_two_finger_scroll;
+ input_settings_class->set_scroll_button =
+ meta_input_settings_dummy_set_scroll_button;
+ input_settings_class->set_click_method =
+ meta_input_settings_dummy_set_click_method;
+ input_settings_class->set_keyboard_repeat =
+ meta_input_settings_dummy_set_keyboard_repeat;
+ input_settings_class->set_tablet_mapping =
+ meta_input_settings_dummy_set_tablet_mapping;
+ input_settings_class->set_tablet_aspect_ratio =
+ meta_input_settings_dummy_set_tablet_aspect_ratio;
+ input_settings_class->set_tablet_area =
+ meta_input_settings_dummy_set_tablet_area;
+ input_settings_class->set_mouse_accel_profile =
+ meta_input_settings_dummy_set_mouse_accel_profile;
+ input_settings_class->set_trackball_accel_profile =
+ meta_input_settings_dummy_set_trackball_accel_profile;
+ input_settings_class->set_stylus_pressure =
+ meta_input_settings_dummy_set_stylus_pressure;
+ input_settings_class->set_stylus_button_map =
+ meta_input_settings_dummy_set_stylus_button_map;
+ input_settings_class->set_mouse_middle_click_emulation =
+ meta_input_settings_dummy_set_mouse_middle_click_emulation;
+ input_settings_class->set_touchpad_middle_click_emulation =
+ meta_input_settings_dummy_set_touchpad_middle_click_emulation;
+ input_settings_class->set_trackball_middle_click_emulation =
+ meta_input_settings_dummy_set_trackball_middle_click_emulation;
+ input_settings_class->has_two_finger_scroll =
+ meta_input_settings_dummy_has_two_finger_scroll;
+ input_settings_class->is_trackball_device =
+ meta_input_settings_dummy_is_trackball_device;
+}
diff --git a/src/backends/meta-input-settings-dummy.h b/src/backends/meta-input-settings-dummy.h
new file mode 100644
index 000000000..9d91dc15d
--- /dev/null
+++ b/src/backends/meta-input-settings-dummy.h
@@ -0,0 +1,34 @@
+/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
+
+/*
+ * Copyright 2021 Canonical, Ltd.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, see .
+ *
+ * Author: Marco Trevisan
+ */
+
+#pragma once
+
+#include "backends/meta-input-settings-private.h"
+
+#define META_TYPE_INPUT_SETTINGS_DUMMY (meta_input_settings_dummy_get_type ())
+
+G_DECLARE_DERIVABLE_TYPE (MetaInputSettingsDummy, meta_input_settings_dummy,
+ META, INPUT_SETTINGS_DUMMY, MetaInputSettings);
+
+struct _MetaInputSettingsDummyClass
+{
+ MetaInputSettingsClass parent_class;
+};
diff --git a/src/backends/x11/nested/meta-backend-x11-nested.c b/src/backends/x11/nested/meta-backend-x11-nested.c
index 425ddcb1a..0b8c3053a 100644
--- a/src/backends/x11/nested/meta-backend-x11-nested.c
+++ b/src/backends/x11/nested/meta-backend-x11-nested.c
@@ -21,6 +21,7 @@
#include "backends/x11/nested/meta-backend-x11-nested.h"
+#include "backends/meta-input-settings-dummy.h"
#include "backends/meta-monitor-manager-dummy.h"
#include "backends/x11/nested/meta-backend-x11-nested.h"
#include "backends/x11/nested/meta-cursor-renderer-x11-nested.h"
@@ -32,6 +33,7 @@ typedef struct _MetaBackendX11NestedPrivate
{
MetaGpu *gpu;
MetaCursorRenderer *cursor_renderer;
+ MetaInputSettings *input_settings;
} MetaBackendX11NestedPrivate;
static GInitableIface *initable_parent_iface;
@@ -86,7 +88,22 @@ meta_backend_x11_nested_get_cursor_renderer (MetaBackend *backend,
static MetaInputSettings *
meta_backend_x11_nested_get_input_settings (MetaBackend *backend)
{
- return NULL;
+ MetaBackendX11Nested *backend_x11_nested = META_BACKEND_X11_NESTED (backend);
+ MetaBackendX11NestedPrivate *priv =
+ meta_backend_x11_nested_get_instance_private (backend_x11_nested);
+
+ if (!priv->input_settings)
+ {
+ ClutterSeat *seat;
+
+ seat = clutter_backend_get_default_seat (clutter_get_default_backend ());
+ priv->input_settings =
+ g_object_new (META_TYPE_INPUT_SETTINGS_DUMMY,
+ "seat", seat,
+ NULL);
+ }
+
+ return priv->input_settings;
}
static void
@@ -271,6 +288,18 @@ meta_backend_x11_nested_constructed (GObject *object)
backend_x11_nested_class->init_gpus (backend_x11_nested);
}
+static void
+meta_backend_x11_nested_dispose (GObject *object)
+{
+ MetaBackendX11Nested *backend_x11_nested = META_BACKEND_X11_NESTED (object);
+ MetaBackendX11NestedPrivate *priv =
+ meta_backend_x11_nested_get_instance_private (backend_x11_nested);
+
+ g_clear_object (&priv->input_settings);
+
+ G_OBJECT_CLASS (meta_backend_x11_nested_parent_class)->dispose (object);
+}
+
static void
meta_backend_x11_nested_init (MetaBackendX11Nested *backend_x11_nested)
{
@@ -284,6 +313,7 @@ meta_backend_x11_nested_class_init (MetaBackendX11NestedClass *klass)
MetaBackendX11Class *backend_x11_class = META_BACKEND_X11_CLASS (klass);
object_class->constructed = meta_backend_x11_nested_constructed;
+ object_class->dispose = meta_backend_x11_nested_dispose;
backend_class->post_init = meta_backend_x11_nested_post_init;
backend_class->create_renderer = meta_backend_x11_nested_create_renderer;
diff --git a/src/meson.build b/src/meson.build
index 4b015e620..7ed0bfca0 100644
--- a/src/meson.build
+++ b/src/meson.build
@@ -196,6 +196,8 @@ mutter_sources = [
'backends/meta-input-mapper-private.h',
'backends/meta-input-settings.c',
'backends/meta-input-settings-private.h',
+ 'backends/meta-input-settings-dummy.c',
+ 'backends/meta-input-settings-dummy.h',
'backends/meta-keymap-utils.c',
'backends/meta-keymap-utils.h',
'backends/meta-logical-monitor.c',