diff options
Diffstat (limited to 'plugins/a11y-keyboard')
| -rw-r--r-- | plugins/a11y-keyboard/msd-a11y-keyboard-manager.c | 28 | 
1 files changed, 23 insertions, 5 deletions
| diff --git a/plugins/a11y-keyboard/msd-a11y-keyboard-manager.c b/plugins/a11y-keyboard/msd-a11y-keyboard-manager.c index 1441ca6..e383ebd 100644 --- a/plugins/a11y-keyboard/msd-a11y-keyboard-manager.c +++ b/plugins/a11y-keyboard/msd-a11y-keyboard-manager.c @@ -81,6 +81,14 @@ struct MsdA11yKeyboardManagerPrivate  #endif /* HAVE_LIBNOTIFY */  }; +/* Keep in sync with the org.mate.accessibility-keyboard.TogglekeysBackend + * enum from the org.mate.accessibility-keyboard schema. */ +typedef enum +{ +        TOGGLEKEYS_BACKEND_XKB, +        TOGGLEKEYS_BACKEND_INTERNAL, +} TogglekeysBackend; +  static void     msd_a11y_keyboard_manager_finalize (GObject *object);  static void     msd_a11y_keyboard_manager_ensure_status_icon (MsdA11yKeyboardManager *manager);  static void     set_server_from_settings (MsdA11yKeyboardManager *manager); @@ -89,6 +97,14 @@ G_DEFINE_TYPE_WITH_PRIVATE (MsdA11yKeyboardManager, msd_a11y_keyboard_manager, G  static gpointer manager_object = NULL; +static gboolean +togglekeys_backend_enabled (MsdA11yKeyboardManager *manager, +                            TogglekeysBackend       backend) +{ +        return (g_settings_get_boolean (manager->priv->settings, "togglekeys-enable") && +                g_settings_get_enum (manager->priv->settings, "togglekeys-backend") == (gint) backend); +} +  static GdkFilterReturn  devicepresence_filter (GdkXEvent *xevent,                         GdkEvent  *event, @@ -369,7 +385,7 @@ set_server_from_settings (MsdA11yKeyboardManager *manager)          }          /* toggle keys */ -        desc->ctrls->ax_options = set_clear (g_settings_get_boolean (manager->priv->settings, "togglekeys-enable"), +        desc->ctrls->ax_options = set_clear (togglekeys_backend_enabled (manager, TOGGLEKEYS_BACKEND_XKB),                                               desc->ctrls->ax_options,                                               XkbAccessXFeedbackMask | XkbAX_IndicatorFBMask); @@ -920,9 +936,11 @@ set_settings_from_server (MsdA11yKeyboardManager *manager)                               "stickykeys-modifier-beep",                               desc->ctrls->ax_options & XkbAX_StickyKeysFBMask); -        changed |= set_bool (settings, -                             "togglekeys-enable", -                             desc->ctrls->ax_options & XkbAX_IndicatorFBMask); +        if (g_settings_get_enum (manager->priv->settings, "togglekeys-backend") == TOGGLEKEYS_BACKEND_XKB) { +                changed |= set_bool (settings, +                                     "togglekeys-enable", +                                     desc->ctrls->ax_options & XkbAX_IndicatorFBMask); +        }          if (!changed && stickykeys_changed ^ slowkeys_changed) {                  /* @@ -1031,7 +1049,7 @@ cb_xkb_event_filter (GdkXEvent              *xevent,                  }          } else if (xev->xany.type == (manager->priv->xkbEventBase + XkbEventCode) &&                     xkbEv->any.xkb_type == XkbIndicatorStateNotify && -                   g_settings_get_boolean (manager->priv->settings, "togglekeys-enable")) { +                   togglekeys_backend_enabled (manager, TOGGLEKEYS_BACKEND_INTERNAL)) {                  GdkDisplay *display = gdk_x11_lookup_xdisplay (xkbEv->any.display);                  gint beep_count;                  gint beep_delay; | 
