> It will help in cases where syncing modifiers keys is complicated: > * not working leds for modifiers keys > * different keyboard layout on the guest side > --- > src/spice-gtk-session.c | 30 ++++++++++++++++++++++++++++++ > 1 file changed, 30 insertions(+) > > diff --git a/src/spice-gtk-session.c b/src/spice-gtk-session.c > index 27623f0..bbcbeeb 100644 > --- a/src/spice-gtk-session.c > +++ b/src/spice-gtk-session.c > @@ -65,6 +65,7 @@ struct _SpiceGtkSessionPrivate { > gboolean pointer_grabbed; > gboolean keyboard_has_focus; > gboolean mouse_has_pointer; > + gboolean sync_modifiers; > }; > > /** > @@ -118,6 +119,7 @@ enum { > PROP_AUTO_CLIPBOARD, > PROP_AUTO_USBREDIR, > PROP_POINTER_GRABBED, > + PROP_SYNC_MODIFIERS, > }; > > static guint32 get_keyboard_lock_modifiers(void) > @@ -185,6 +187,11 @@ static void > spice_gtk_session_sync_keyboard_modifiers_for_channel(SpiceGtkSessio > > g_return_if_fail(SPICE_IS_INPUTS_CHANNEL(inputs)); > > + if (SPICE_IS_GTK_SESSION(self) && !self->priv->sync_modifiers) { > + SPICE_DEBUG("Syncing modifiers is disabled"); > + return; > + } > + > g_object_get(inputs, "key-modifiers", &guest_modifiers, NULL); > client_modifiers = get_keyboard_lock_modifiers(); > > @@ -332,6 +339,9 @@ static void spice_gtk_session_get_property(GObject > *gobject, > case PROP_POINTER_GRABBED: > g_value_set_boolean(value, s->pointer_grabbed); > break; > + case PROP_SYNC_MODIFIERS: > + g_value_set_boolean(value, s->sync_modifiers); > + break; > default: > G_OBJECT_WARN_INVALID_PROPERTY_ID(gobject, prop_id, pspec); > break; > @@ -379,6 +389,9 @@ static void spice_gtk_session_set_property(GObject > *gobject, > } > break; > } > + case PROP_SYNC_MODIFIERS: > + s->sync_modifiers = g_value_get_boolean(value); > + break; > default: > G_OBJECT_WARN_INVALID_PROPERTY_ID(gobject, prop_id, pspec); > break; > @@ -467,6 +480,23 @@ static void > spice_gtk_session_class_init(SpiceGtkSessionClass *klass) > G_PARAM_READABLE | > G_PARAM_STATIC_STRINGS)); > > + /** > + * SpiceGtkSession:sync-modifiers: > + * > + * Automatically sync modifiers (Caps, Num and Scroll locks) with the > guest. > + * > + * Since: 0.32 > + **/ > + g_object_class_install_property > + (gobject_class, PROP_SYNC_MODIFIERS, > + g_param_spec_boolean("sync-modifiers", > + "Sync modifiers", > + "Automatically sync modifiers", > + TRUE, > + G_PARAM_READWRITE | > + G_PARAM_CONSTRUCT | > + G_PARAM_STATIC_STRINGS)); > + > g_type_class_add_private(klass, sizeof(SpiceGtkSessionPrivate)); > } > > -- > 2.8.2 > Looks good! I'll try it tomorrow. Frediano _______________________________________________ Spice-devel mailing list Spice-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/spice-devel