Date: Tuesday, November 4, 2014 @ 10:49:57 Author: flexiondotorg Revision: 121793
upgpkg: mate-settings-daemon 1.8.2-3 - Fix a11y keybindings Added: mate-settings-daemon/trunk/add_a11y_settings_plugin.diff mate-settings-daemon/trunk/monitor_gnome_a11y_schema_keys.diff mate-settings-daemon/trunk/move_a11y_keybindings_to_media-keys_plugin.diff mate-settings-daemon/trunk/use_gnome_a11y_schema_to_enable_applications.diff Modified: mate-settings-daemon/trunk/PKGBUILD ---------------------------------------------------+ PKGBUILD | 19 add_a11y_settings_plugin.diff | 571 ++++++++++++++++++++ monitor_gnome_a11y_schema_keys.diff | 13 move_a11y_keybindings_to_media-keys_plugin.diff | 223 +++++++ use_gnome_a11y_schema_to_enable_applications.diff | 13 5 files changed, 836 insertions(+), 3 deletions(-) Modified: PKGBUILD =================================================================== --- PKGBUILD 2014-11-04 09:40:07 UTC (rev 121792) +++ PKGBUILD 2014-11-04 09:49:57 UTC (rev 121793) @@ -3,7 +3,7 @@ pkgbase=mate-settings-daemon pkgname=("${pkgbase}-pulseaudio" "${pkgbase}-gstreamer") pkgver=1.8.2 -pkgrel=2 +pkgrel=3 url="http://mate-desktop.org" arch=('i686' 'x86_64') license=('GPL') @@ -12,9 +12,17 @@ 'nss' 'polkit' 'pulseaudio-alsa') makedepends=('mate-common') source=("http://pub.mate-desktop.org/releases/1.8/${pkgbase}-${pkgver}.tar.xz" - 'use_galculator_first.diff') + 'use_galculator_first.diff' + 'add_a11y_settings_plugin.diff' + 'move_a11y_keybindings_to_media-keys_plugin.diff' + 'use_gnome_a11y_schema_to_enable_applications.diff' + 'monitor_gnome_a11y_schema_keys.diff') sha1sums=('e465eb33b79394150514ad0af201bf32f07fd520' - '916dc6519a7778e97cd8dd18c46363e6c36d389a') + '916dc6519a7778e97cd8dd18c46363e6c36d389a' + '0f8f3548b4cfda4eb8d5472d039b4f9744328e85' + '2dd699e78173421338d498e2c0bacd13549b564b' + '03ff9874630dec061590009b78d9cae3caf81398' + '721590eba34b3c44b07f5ce4c715e3e7dd4df450') install=${pkgbase}.install prepare() { @@ -21,6 +29,11 @@ cd "${srcdir}/${pkgbase}-${pkgver}" # https://github.com/mate-desktop/mate-settings-daemon/commit/163f01a8b527c1ed801f68681fc7d82a54d42b1c patch -Np1 -i "${srcdir}/use_galculator_first.diff" + # https://github.com/mate-desktop/mate-settings-daemon/compare/af56e3974762...4cb2701b4996 + patch -Np1 -i "${srcdir}/add_a11y_settings_plugin.diff" + patch -Np1 -i "${srcdir}/move_a11y_keybindings_to_media-keys_plugin.diff" + patch -Np1 -i "${srcdir}/use_gnome_a11y_schema_to_enable_applications.diff" + patch -Np1 -i "${srcdir}/monitor_gnome_a11y_schema_keys.diff" } build() { Added: add_a11y_settings_plugin.diff =================================================================== --- add_a11y_settings_plugin.diff (rev 0) +++ add_a11y_settings_plugin.diff 2014-11-04 09:49:57 UTC (rev 121793) @@ -0,0 +1,571 @@ +diff --git a/configure.ac b/configure.ac +index 5bdeba9..e7b3adc 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -484,6 +484,7 @@ Makefile + mate-settings-daemon/Makefile + plugins/Makefile + plugins/a11y-keyboard/Makefile ++plugins/a11y-settings/Makefile + plugins/background/Makefile + plugins/clipboard/Makefile + plugins/common/Makefile +diff --git a/data/Makefile.am b/data/Makefile.am +index 008061a..a44c910 100644 +--- a/data/Makefile.am ++++ b/data/Makefile.am +@@ -6,6 +6,7 @@ msd_gschemas_in_in = \ + org.mate.peripherals-smartcard.gschema.xml.in.in \ + org.mate.peripherals-touchpad.gschema.xml.in.in \ + org.mate.SettingsDaemon.plugins.a11y-keyboard.gschema.xml.in.in \ ++ org.mate.SettingsDaemon.plugins.a11y-settings.gschema.xml.in.in \ + org.mate.SettingsDaemon.plugins.background.gschema.xml.in.in \ + org.mate.SettingsDaemon.plugins.clipboard.gschema.xml.in.in \ + org.mate.SettingsDaemon.plugins.datetime.gschema.xml.in.in \ +diff --git a/data/org.mate.SettingsDaemon.plugins.a11y-settings.gschema.xml.in.in b/data/org.mate.SettingsDaemon.plugins.a11y-settings.gschema.xml.in.in +new file mode 100644 +index 0000000..26f97bc +--- /dev/null ++++ b/data/org.mate.SettingsDaemon.plugins.a11y-settings.gschema.xml.in.in +@@ -0,0 +1,14 @@ ++<schemalist> ++ <schema gettext-domain="@GETTEXT_PACKAGE@" id="org.mate.SettingsDaemon.plugins.a11y-settings" path="/org/mate/settings-daemon/plugins/a11y-settings/"> ++ <key name="active" type="b"> ++ <default>false</default> ++ <_summary>Activation of this plugin</_summary> ++ <_description>Whether this plugin would be activated by mate-settings-daemon or not</_description> ++ </key> ++ <key name="priority" type="i"> ++ <default>7</default> ++ <_summary>Priority to use for this plugin</_summary> ++ <_description>Priority to use for this plugin in mate-settings-daemon startup queue</_description> ++ </key> ++ </schema> ++</schemalist> +diff --git a/plugins/Makefile.am b/plugins/Makefile.am +index c7ce7d6..05d04c7 100644 +--- a/plugins/Makefile.am ++++ b/plugins/Makefile.am +@@ -2,6 +2,7 @@ NULL = + + enabled_plugins = \ + a11y-keyboard \ ++ a11y-settings \ + background \ + clipboard \ + datetime \ +diff --git a/plugins/a11y-settings/Makefile.am b/plugins/a11y-settings/Makefile.am +new file mode 100644 +index 0000000..f557b0f +--- /dev/null ++++ b/plugins/a11y-settings/Makefile.am +@@ -0,0 +1,42 @@ ++plugin_name = ally-settings ++ ++plugin_LTLIBRARIES = \ ++ liba11y-settings.la ++ ++liba11y_settings_la_SOURCES = \ ++ msd-a11y-settings-manager.c \ ++ msd-a11y-settings-manager.h \ ++ msd-a11y-settings-plugin.c \ ++ msd-a11y-settings-plugin.h ++ ++liba11y_settings_la_CPPFLAGS = \ ++ -I$(top_srcdir)/mate-settings-daemon \ ++ -DMATE_SETTINGS_LOCALEDIR=\""$(datadir)/locale"\" \ ++ $(AM_CPPFLAGS) ++ ++liba11y_settings_la_CFLAGS = \ ++ $(PLUGIN_CFLAGS) \ ++ $(SETTINGS_PLUGIN_CFLAGS) \ ++ $(AM_CFLAGS) ++ ++liba11y_settings_la_LDFLAGS = \ ++ $(MSD_PLUGIN_LDFLAGS) ++ ++liba11y_settings_la_LIBADD = \ ++ $(SETTINGS_PLUGIN_LIBS) ++ ++plugin_in_files = \ ++ a11y-settings.mate-settings-plugin.in ++ ++plugin_DATA = $(plugin_in_files:.mate-settings-plugin.in=.mate-settings-plugin) ++ ++EXTRA_DIST = \ ++ $(plugin_in_files) ++ ++CLEANFILES = \ ++ $(plugin_DATA) ++ ++DISTCLEANFILES = \ ++ $(plugin_DATA) ++ ++@MSD_INTLTOOL_PLUGIN_RULE@ +diff --git a/plugins/a11y-settings/a11y-settings.mate-settings-plugin.in b/plugins/a11y-settings/a11y-settings.mate-settings-plugin.in +new file mode 100644 +index 0000000..ecdd80d +--- /dev/null ++++ b/plugins/a11y-settings/a11y-settings.mate-settings-plugin.in +@@ -0,0 +1,8 @@ ++[MATE Settings Plugin] ++Module=a11y-settings ++IAge=0 ++_Name=Accessibility settings ++_Description=Accessibility settings plugin ++Authors=Bastien Nocera <had...@hadess.net> ++Copyright=Copyright © 2011 Red Hat Inc. ++Website= +diff --git a/plugins/a11y-settings/msd-a11y-settings-manager.c b/plugins/a11y-settings/msd-a11y-settings-manager.c +new file mode 100644 +index 0000000..45469be +--- /dev/null ++++ b/plugins/a11y-settings/msd-a11y-settings-manager.c +@@ -0,0 +1,192 @@ ++/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*- ++ * ++ * Copyright (C) 2007 William Jon McCann <mcc...@jhu.edu> ++ * ++ * 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, write to the Free Software ++ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. ++ * ++ */ ++ ++#include "config.h" ++ ++#include <sys/types.h> ++#include <sys/wait.h> ++#include <stdlib.h> ++#include <stdio.h> ++#include <unistd.h> ++#include <string.h> ++#include <errno.h> ++ ++#include <locale.h> ++ ++#include <glib.h> ++#include <glib/gi18n.h> ++#include <gdk/gdk.h> ++#include <gdk/gdkx.h> ++#include <gtk/gtk.h> ++ ++#include "mate-settings-profile.h" ++#include "msd-a11y-settings-manager.h" ++ ++#define MSD_A11Y_SETTINGS_MANAGER_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), MSD_TYPE_A11Y_SETTINGS_MANAGER, MsdA11ySettingsManagerPrivate)) ++ ++struct MsdA11ySettingsManagerPrivate ++{ ++ GSettings *interface_settings; ++ GSettings *a11y_apps_settings; ++}; ++ ++enum { ++ PROP_0, ++}; ++ ++static void msd_a11y_settings_manager_class_init (MsdA11ySettingsManagerClass *klass); ++static void msd_a11y_settings_manager_init (MsdA11ySettingsManager *a11y_settings_manager); ++static void msd_a11y_settings_manager_finalize (GObject *object); ++ ++G_DEFINE_TYPE (MsdA11ySettingsManager, msd_a11y_settings_manager, G_TYPE_OBJECT) ++ ++static gpointer manager_object = NULL; ++ ++static void ++apps_settings_changed (GSettings *settings, ++ const char *key, ++ MsdA11ySettingsManager *manager) ++{ ++ gboolean screen_reader, keyboard; ++ ++ if (g_str_equal (key, "screen-reader-enabled") == FALSE && ++ g_str_equal (key, "screen-keyboard-enabled") == FALSE) ++ return; ++ ++ g_debug ("screen reader or OSK enablement changed"); ++ ++ screen_reader = g_settings_get_boolean (manager->priv->a11y_apps_settings, "screen-reader-enabled"); ++ keyboard = g_settings_get_boolean (manager->priv->a11y_apps_settings, "screen-keyboard-enabled"); ++ ++ if (screen_reader || keyboard) { ++ g_debug ("Enabling accessibility, screen reader or OSK enabled"); ++ g_settings_set_boolean (manager->priv->interface_settings, "accessibility", TRUE); ++ } else if (screen_reader == FALSE && keyboard == FALSE) { ++ g_debug ("Disabling accessibility, screen reader and OSK disabled"); ++ g_settings_set_boolean (manager->priv->interface_settings, "accessibility", FALSE); ++ } ++} ++ ++gboolean ++msd_a11y_settings_manager_start (MsdA11ySettingsManager *manager, ++ GError **error) ++{ ++ g_debug ("Starting a11y_settings manager"); ++ mate_settings_profile_start (NULL); ++ ++ manager->priv->interface_settings = g_settings_new ("org.mate.interface"); ++ manager->priv->a11y_apps_settings = g_settings_new ("org.mate.applications-at"); ++ ++ g_signal_connect (G_OBJECT (manager->priv->a11y_apps_settings), "changed", ++ G_CALLBACK (apps_settings_changed), manager); ++ ++ /* If any of the screen reader or on-screen keyboard are enabled, ++ * make sure a11y is enabled for the toolkits. ++ * We don't do the same thing for the reverse so it's possible to ++ * enable AT-SPI for the toolkits without using an a11y app */ ++ if (g_settings_get_boolean (manager->priv->a11y_apps_settings, "screen-keyboard-enabled") || ++ g_settings_get_boolean (manager->priv->a11y_apps_settings, "screen-reader-enabled")) ++ g_settings_set_boolean (manager->priv->interface_settings, "accessibility", TRUE); ++ ++ mate_settings_profile_end (NULL); ++ return TRUE; ++} ++ ++void ++msd_a11y_settings_manager_stop (MsdA11ySettingsManager *manager) ++{ ++ if (manager->priv->interface_settings) { ++ g_object_unref (manager->priv->interface_settings); ++ manager->priv->interface_settings = NULL; ++ } ++ if (manager->priv->a11y_apps_settings) { ++ g_object_unref (manager->priv->a11y_apps_settings); ++ manager->priv->a11y_apps_settings = NULL; ++ } ++ g_debug ("Stopping a11y_settings manager"); ++} ++ ++static GObject * ++msd_a11y_settings_manager_constructor (GType type, ++ guint n_construct_properties, ++ GObjectConstructParam *construct_properties) ++{ ++ MsdA11ySettingsManager *a11y_settings_manager; ++ ++ a11y_settings_manager = MSD_A11Y_SETTINGS_MANAGER (G_OBJECT_CLASS (msd_a11y_settings_manager_parent_class)->constructor (type, ++ n_construct_properties, ++ construct_properties)); ++ ++ return G_OBJECT (a11y_settings_manager); ++} ++ ++static void ++msd_a11y_settings_manager_dispose (GObject *object) ++{ ++ G_OBJECT_CLASS (msd_a11y_settings_manager_parent_class)->dispose (object); ++} ++ ++static void ++msd_a11y_settings_manager_class_init (MsdA11ySettingsManagerClass *klass) ++{ ++ GObjectClass *object_class = G_OBJECT_CLASS (klass); ++ ++ object_class->constructor = msd_a11y_settings_manager_constructor; ++ object_class->dispose = msd_a11y_settings_manager_dispose; ++ object_class->finalize = msd_a11y_settings_manager_finalize; ++ ++ g_type_class_add_private (klass, sizeof (MsdA11ySettingsManagerPrivate)); ++} ++ ++static void ++msd_a11y_settings_manager_init (MsdA11ySettingsManager *manager) ++{ ++ manager->priv = MSD_A11Y_SETTINGS_MANAGER_GET_PRIVATE (manager); ++ ++} ++ ++static void ++msd_a11y_settings_manager_finalize (GObject *object) ++{ ++ MsdA11ySettingsManager *a11y_settings_manager; ++ ++ g_return_if_fail (object != NULL); ++ g_return_if_fail (MSD_IS_A11Y_SETTINGS_MANAGER (object)); ++ ++ a11y_settings_manager = MSD_A11Y_SETTINGS_MANAGER (object); ++ ++ g_return_if_fail (a11y_settings_manager->priv != NULL); ++ ++ G_OBJECT_CLASS (msd_a11y_settings_manager_parent_class)->finalize (object); ++} ++ ++MsdA11ySettingsManager * ++msd_a11y_settings_manager_new (void) ++{ ++ if (manager_object != NULL) { ++ g_object_ref (manager_object); ++ } else { ++ manager_object = g_object_new (MSD_TYPE_A11Y_SETTINGS_MANAGER, NULL); ++ g_object_add_weak_pointer (manager_object, ++ (gpointer *) &manager_object); ++ } ++ ++ return MSD_A11Y_SETTINGS_MANAGER (manager_object); ++} +diff --git a/plugins/a11y-settings/msd-a11y-settings-manager.h b/plugins/a11y-settings/msd-a11y-settings-manager.h +new file mode 100644 +index 0000000..9f6e3f7 +--- /dev/null ++++ b/plugins/a11y-settings/msd-a11y-settings-manager.h +@@ -0,0 +1,57 @@ ++/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*- ++ * ++ * Copyright (C) 2007 William Jon McCann <mcc...@jhu.edu> ++ * ++ * 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, write to the Free Software ++ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. ++ * ++ */ ++ ++#ifndef __MSD_A11Y_SETTINGS_MANAGER_H ++#define __MSD_A11Y_SETTINGS_MANAGER_H ++ ++#include <glib-object.h> ++ ++G_BEGIN_DECLS ++ ++#define MSD_TYPE_A11Y_SETTINGS_MANAGER (msd_a11y_settings_manager_get_type ()) ++#define MSD_A11Y_SETTINGS_MANAGER(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), MSD_TYPE_A11Y_SETTINGS_MANAGER, MsdA11ySettingsManager)) ++#define MSD_A11Y_SETTINGS_MANAGER_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), MSD_TYPE_A11Y_SETTINGS_MANAGER, MsdA11ySettingsManagerClass)) ++#define MSD_IS_A11Y_SETTINGS_MANAGER(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), MSD_TYPE_A11Y_SETTINGS_MANAGER)) ++#define MSD_IS_A11Y_SETTINGS_MANAGER_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), MSD_TYPE_A11Y_SETTINGS_MANAGER)) ++#define MSD_A11Y_SETTINGS_MANAGER_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), MSD_TYPE_A11Y_SETTINGS_MANAGER, MsdA11ySettingsManagerClass)) ++ ++typedef struct MsdA11ySettingsManagerPrivate MsdA11ySettingsManagerPrivate; ++ ++typedef struct ++{ ++ GObject parent; ++ MsdA11ySettingsManagerPrivate *priv; ++} MsdA11ySettingsManager; ++ ++typedef struct ++{ ++ GObjectClass parent_class; ++} MsdA11ySettingsManagerClass; ++ ++GType msd_a11y_settings_manager_get_type (void); ++ ++MsdA11ySettingsManager *msd_a11y_settings_manager_new (void); ++gboolean msd_a11y_settings_manager_start (MsdA11ySettingsManager *manager, ++ GError **error); ++void msd_a11y_settings_manager_stop (MsdA11ySettingsManager *manager); ++ ++G_END_DECLS ++ ++#endif /* __MSD_A11Y_SETTINGS_MANAGER_H */ +diff --git a/plugins/a11y-settings/msd-a11y-settings-plugin.c b/plugins/a11y-settings/msd-a11y-settings-plugin.c +new file mode 100644 +index 0000000..9d206c8 +--- /dev/null ++++ b/plugins/a11y-settings/msd-a11y-settings-plugin.c +@@ -0,0 +1,109 @@ ++/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*- ++ * ++ * Copyright (C) 2007 William Jon McCann <mcc...@jhu.edu> ++ * ++ * 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, 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, write to the Free Software ++ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. ++ * ++ */ ++ ++#include "config.h" ++ ++#include <glib/gi18n-lib.h> ++#include <gmodule.h> ++ ++#include "mate-settings-plugin.h" ++#include "msd-a11y-settings-plugin.h" ++#include "msd-a11y-settings-manager.h" ++ ++struct MsdA11ySettingsPluginPrivate { ++ MsdA11ySettingsManager *manager; ++}; ++ ++#define MSD_A11Y_SETTINGS_PLUGIN_GET_PRIVATE(object) (G_TYPE_INSTANCE_GET_PRIVATE ((object), MSD_TYPE_A11Y_SETTINGS_PLUGIN, MsdA11ySettingsPluginPrivate)) ++ ++MATE_SETTINGS_PLUGIN_REGISTER (MsdA11ySettingsPlugin, msd_a11y_settings_plugin) ++ ++static void ++msd_a11y_settings_plugin_init (MsdA11ySettingsPlugin *plugin) ++{ ++ plugin->priv = MSD_A11Y_SETTINGS_PLUGIN_GET_PRIVATE (plugin); ++ ++ g_debug ("MsdA11ySettingsPlugin initializing"); ++ ++ plugin->priv->manager = msd_a11y_settings_manager_new (); ++} ++ ++static void ++msd_a11y_settings_plugin_finalize (GObject *object) ++{ ++ MsdA11ySettingsPlugin *plugin; ++ ++ g_return_if_fail (object != NULL); ++ g_return_if_fail (MSD_IS_A11Y_SETTINGS_PLUGIN (object)); ++ ++ g_debug ("MsdA11ySettingsPlugin finalizing"); ++ ++ plugin = MSD_A11Y_SETTINGS_PLUGIN (object); ++ ++ g_return_if_fail (plugin->priv != NULL); ++ ++ if (plugin->priv->manager != NULL) { ++ g_object_unref (plugin->priv->manager); ++ } ++ ++ G_OBJECT_CLASS (msd_a11y_settings_plugin_parent_class)->finalize (object); ++} ++ ++static void ++impl_activate (MateSettingsPlugin *plugin) ++{ ++ gboolean res; ++ GError *error; ++ ++ g_debug ("Activating a11y-settings plugin"); ++ ++ error = NULL; ++ res = msd_a11y_settings_manager_start (MSD_A11Y_SETTINGS_PLUGIN (plugin)->priv->manager, &error); ++ if (! res) { ++ g_warning ("Unable to start a11y-settings manager: %s", error->message); ++ g_error_free (error); ++ } ++} ++ ++static void ++impl_deactivate (MateSettingsPlugin *plugin) ++{ ++ g_debug ("Deactivating a11y-settings plugin"); ++ msd_a11y_settings_manager_stop (MSD_A11Y_SETTINGS_PLUGIN (plugin)->priv->manager); ++} ++ ++static void ++msd_a11y_settings_plugin_class_init (MsdA11ySettingsPluginClass *klass) ++{ ++ GObjectClass *object_class = G_OBJECT_CLASS (klass); ++ MateSettingsPluginClass *plugin_class = MATE_SETTINGS_PLUGIN_CLASS (klass); ++ ++ object_class->finalize = msd_a11y_settings_plugin_finalize; ++ ++ plugin_class->activate = impl_activate; ++ plugin_class->deactivate = impl_deactivate; ++ ++ g_type_class_add_private (klass, sizeof (MsdA11ySettingsPluginPrivate)); ++} ++ ++static void ++msd_a11y_settings_plugin_class_finalize (MsdA11ySettingsPluginClass *klass) ++{ ++} +diff --git a/plugins/a11y-settings/msd-a11y-settings-plugin.h b/plugins/a11y-settings/msd-a11y-settings-plugin.h +new file mode 100644 +index 0000000..a19c8a4 +--- /dev/null ++++ b/plugins/a11y-settings/msd-a11y-settings-plugin.h +@@ -0,0 +1,59 @@ ++/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*- ++ * ++ * Copyright (C) 2011 Red Hat, Inc. ++ * ++ * 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, 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, write to the Free Software ++ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. ++ * ++ */ ++ ++#ifndef __MSD_A11Y_SETTINGS_PLUGIN_H__ ++#define __MSD_A11Y_SETTINGS_PLUGIN_H__ ++ ++#include <glib.h> ++#include <glib-object.h> ++#include <gmodule.h> ++ ++#include "mate-settings-plugin.h" ++ ++G_BEGIN_DECLS ++ ++#define MSD_TYPE_A11Y_SETTINGS_PLUGIN (msd_a11y_settings_plugin_get_type ()) ++#define MSD_A11Y_SETTINGS_PLUGIN(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), MSD_TYPE_A11Y_SETTINGS_PLUGIN, MsdA11ySettingsPlugin)) ++#define MSD_A11Y_SETTINGS_PLUGIN_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), MSD_TYPE_A11Y_SETTINGS_PLUGIN, MsdA11ySettingsPluginClass)) ++#define MSD_IS_A11Y_SETTINGS_PLUGIN(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), MSD_TYPE_A11Y_SETTINGS_PLUGIN)) ++#define MSD_IS_A11Y_SETTINGS_PLUGIN_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), MSD_TYPE_A11Y_SETTINGS_PLUGIN)) ++#define MSD_A11Y_SETTINGS_PLUGIN_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), MSD_TYPE_A11Y_SETTINGS_PLUGIN, MsdA11ySettingsPluginClass)) ++ ++typedef struct MsdA11ySettingsPluginPrivate MsdA11ySettingsPluginPrivate; ++ ++typedef struct ++{ ++ MateSettingsPlugin parent; ++ MsdA11ySettingsPluginPrivate *priv; ++} MsdA11ySettingsPlugin; ++ ++typedef struct ++{ ++ MateSettingsPluginClass parent_class; ++} MsdA11ySettingsPluginClass; ++ ++GType msd_a11y_settings_plugin_get_type (void) G_GNUC_CONST; ++ ++/* All the plugins must implement this function */ ++G_MODULE_EXPORT GType register_mate_settings_plugin (GTypeModule *module); ++ ++G_END_DECLS ++ ++#endif /* __MSD_A11Y_SETTINGS_PLUGIN_H__ */ +diff --git a/po/POTFILES.in b/po/POTFILES.in +index f17b5f3..27080da 100644 +--- a/po/POTFILES.in ++++ b/po/POTFILES.in +@@ -6,6 +6,7 @@ data/org.mate.font-rendering.gschema.xml.in.in + data/org.mate.peripherals-smartcard.gschema.xml.in.in + data/org.mate.peripherals-touchpad.gschema.xml.in.in + data/org.mate.SettingsDaemon.plugins.a11y-keyboard.gschema.xml.in.in ++data/org.mate.SettingsDaemon.plugins.a11y-settings.gschema.xml.in.in + data/org.mate.SettingsDaemon.plugins.background.gschema.xml.in.in + data/org.mate.SettingsDaemon.plugins.clipboard.gschema.xml.in.in + data/org.mate.SettingsDaemon.plugins.datetime.gschema.xml.in.in Added: monitor_gnome_a11y_schema_keys.diff =================================================================== --- monitor_gnome_a11y_schema_keys.diff (rev 0) +++ monitor_gnome_a11y_schema_keys.diff 2014-11-04 09:49:57 UTC (rev 121793) @@ -0,0 +1,13 @@ +diff --git a/plugins/a11y-settings/msd-a11y-settings-manager.c b/plugins/a11y-settings/msd-a11y-settings-manager.c +index 45469be..09d7ba7 100644 +--- a/plugins/a11y-settings/msd-a11y-settings-manager.c ++++ b/plugins/a11y-settings/msd-a11y-settings-manager.c +@@ -92,7 +92,7 @@ msd_a11y_settings_manager_start (MsdA11ySettingsManager *manager, + mate_settings_profile_start (NULL); + + manager->priv->interface_settings = g_settings_new ("org.mate.interface"); +- manager->priv->a11y_apps_settings = g_settings_new ("org.mate.applications-at"); ++ manager->priv->a11y_apps_settings = g_settings_new ("org.gnome.desktop.a11y.applications"); + + g_signal_connect (G_OBJECT (manager->priv->a11y_apps_settings), "changed", + G_CALLBACK (apps_settings_changed), manager); Added: move_a11y_keybindings_to_media-keys_plugin.diff =================================================================== --- move_a11y_keybindings_to_media-keys_plugin.diff (rev 0) +++ move_a11y_keybindings_to_media-keys_plugin.diff 2014-11-04 09:49:57 UTC (rev 121793) @@ -0,0 +1,223 @@ +diff --git a/data/50-accessibility.xml.in b/data/50-accessibility.xml.in +index 998ba17..89a9e6b 100644 +--- a/data/50-accessibility.xml.in ++++ b/data/50-accessibility.xml.in +@@ -1,8 +1,8 @@ + <?xml version="1.0" encoding="UTF-8"?> +-<KeyListEntries _name="Accessibility"> ++<KeyListEntries group="system" _name="Accessibility" schema="org.mate.SettingsDaemon.plugins.media-keys"> + +- <KeyListEntry name="/desktop/mate/keybindings/magnifier/binding"/> +- <KeyListEntry name="/desktop/mate/keybindings/screenreader/binding"/> +- <KeyListEntry name="/desktop/mate/keybindings/onscreenkeyboard/binding"/> ++ <KeyListEntry name="magnifier" _description="Toggle magnifier"/> ++ <KeyListEntry name="screenreader" _description="Toggle screen reader"/> ++ <KeyListEntry name="on-screen-keyboard" _description="Toggle on-screen keyboard"/> + + </KeyListEntries> +diff --git a/data/Makefile.am b/data/Makefile.am +index 00bb02d..008061a 100644 +--- a/data/Makefile.am ++++ b/data/Makefile.am +@@ -3,7 +3,6 @@ NULL = + msd_gschemas_in_in = \ + org.mate.applications-at.gschema.xml.in.in \ + org.mate.font-rendering.gschema.xml.in.in \ +- org.mate.keybindings.gschema.xml.in.in \ + org.mate.peripherals-smartcard.gschema.xml.in.in \ + org.mate.peripherals-touchpad.gschema.xml.in.in \ + org.mate.SettingsDaemon.plugins.a11y-keyboard.gschema.xml.in.in \ +@@ -57,9 +56,9 @@ man_MANS = mate-settings-daemon.1 + @INTLTOOL_XML_NOMERGE_RULE@ + + #disabled until we support it +-#xmldir = @MATE_KEYBINDINGS_KEYSDIR@ ++xmldir = @MATE_KEYBINDINGS_KEYSDIR@ + xml_in_files = 50-accessibility.xml.in +-#xml_DATA = $(xml_in_files:.xml.in=.xml) ++xml_DATA = $(xml_in_files:.xml.in=.xml) + + EXTRA_DIST = \ + $(msd_gschemas_in_in) \ +diff --git a/data/org.mate.SettingsDaemon.plugins.media-keys.gschema.xml.in.in b/data/org.mate.SettingsDaemon.plugins.media-keys.gschema.xml.in.in +index f855cfd..3e0ee2c 100644 +--- a/data/org.mate.SettingsDaemon.plugins.media-keys.gschema.xml.in.in ++++ b/data/org.mate.SettingsDaemon.plugins.media-keys.gschema.xml.in.in +@@ -110,5 +110,20 @@ + <_summary>Next track</_summary> + <_description>Binding to skip to next track.</_description> + </key> ++ <key name="magnifier" type="s"> ++ <default>''</default> ++ <_summary>Toggle magnifier</_summary> ++ <_description>Binding to show the screen magnifier</_description> ++ </key> ++ <key name="screenreader" type="s"> ++ <default>''</default> ++ <_summary>Toggle screen reader</_summary> ++ <_description>Binding to start the screen reader</_description> ++ </key> ++ <key name="on-screen-keyboard" type="s"> ++ <default>''</default> ++ <_summary>Toggle on-screen keyboard</_summary> ++ <_description>Binding to show the on-screen keyboard</_description> ++ </key> + </schema> + </schemalist> +diff --git a/data/org.mate.keybindings.gschema.xml.in.in b/data/org.mate.keybindings.gschema.xml.in.in +deleted file mode 100644 +index 9e3aca6..0000000 +--- a/data/org.mate.keybindings.gschema.xml.in.in ++++ /dev/null +@@ -1,58 +0,0 @@ +-<schemalist gettext-domain="@GETTEXT_PACKAGE@"> +- <schema id="org.mate.keybindings" path="/org/mate/desktop/keybindings/"> +- <child name="magnifier" schema="org.mate.keybindings.magnifier"/> +- <child name="screenreader" schema="org.mate.keybindings.screenreader"/> +- <child name="onscreenkeyboard" schema="org.mate.keybindings.onscreenkeyboard"/> +- </schema> +- <schema id="org.mate.keybindings.magnifier" path="/org/mate/desktop/keybindings/magnifier/"> +- <key name="binding" type="s"> +- <default>''</default> +- <_summary>Toggle magnifier</_summary> +- <_description>Binding to toggle the magnifier.</_description> +- </key> +- <key name="name" type="s"> +- <default context="name" l10n="messages">'Toggle magnifier'</default> +- <_summary>The name of the keyboard shortcut to toggle the magnifier</_summary> +- <_description>This is the name of the keyboard shortcut to toggle the magnifier. This name will be shown in the keyboard shortcut preferences dialog.</_description> +- </key> +- <key name="action" type="s"> +- <default>'mate-gsettings-toggle screen-keyboard-enabled'</default> +- <_summary>Toggle magnifier</_summary> +- <_description>Command used to turn the magnifier on or off.</_description> +- </key> +- </schema> +- <schema id="org.mate.keybindings.screenreader" path="/org/mate/desktop/keybindings/screenreader/"> +- <key name="binding" type="s"> +- <default>''</default> +- <_summary>Toggle screen reader</_summary> +- <_description>Binding to toggle the screen reader.</_description> +- </key> +- <key name="name" type="s"> +- <default context="name" l10n="messages">'Toggle screen reader'</default> +- <_summary>The name of the keyboard shortcut to toggle the screen reader</_summary> +- <_description>This is the name of the keyboard shortcut to toggle the screen reader. This name will be shown in the keyboard shortcut preferences dialog.</_description> +- </key> +- <key name="action" type="s"> +- <default>'mate-gsettings-toggle screen-reader-enabled'</default> +- <_summary>Toggle screen reader</_summary> +- <_description>Command used to turn the screen reader on or off.</_description> +- </key> +- </schema> +- <schema id="org.mate.keybindings.onscreenkeyboard" path="/org/mate/desktop/keybindings/onscreenkeyboard/"> +- <key name="name" type="s"> +- <default context="name" l10n="messages">'Toggle on-screen keyboard'</default> +- <_summary>The name of the keyboard shortcut to toggle the on-screen keyboard</_summary> +- <_description>This is the name of the keyboard shortcut to toggle the on-screen keyboard. This name will be shown in the keyboard shortcut preferences dialog.</_description> +- </key> +- <key name="binding" type="s"> +- <default>''</default> +- <_summary>Toggle on-screen keyboard</_summary> +- <_description>Binding to toggle the on-screen keyboard.</_description> +- </key> +- <key name="action" type="s"> +- <default>'mate-gsettings-toggle screen-keyboard-enabled'</default> +- <_summary>Toggle on-screen keyboard</_summary> +- <_description>Command used to turn the on-screen keyboard on or off.</_description> +- </key> +- </schema> +-</schemalist> +diff --git a/plugins/media-keys/acme.h b/plugins/media-keys/acme.h +index 0f87bc6..17ce1ed 100644 +--- a/plugins/media-keys/acme.h ++++ b/plugins/media-keys/acme.h +@@ -45,6 +45,9 @@ enum { + STOP_KEY, + PREVIOUS_KEY, + NEXT_KEY, ++ MAGNIFIER_KEY, ++ SCREENREADER_KEY, ++ ON_SCREEN_KEYBOARD_KEY, + HANDLED_KEYS + }; + +@@ -72,6 +75,9 @@ static struct { + { STOP_KEY, "stop", NULL }, + { PREVIOUS_KEY, "previous", NULL }, + { NEXT_KEY, "next", NULL }, ++ { MAGNIFIER_KEY, "magnifier", NULL, NULL }, ++ { SCREENREADER_KEY, "screenreader", NULL, NULL }, ++ { ON_SCREEN_KEYBOARD_KEY, "on-screen-keyboard", NULL, NULL }, + }; + + #endif /* __ACME_H__ */ +diff --git a/plugins/media-keys/msd-media-keys-manager.c b/plugins/media-keys/msd-media-keys-manager.c +index 1ff0291..f0b0229 100644 +--- a/plugins/media-keys/msd-media-keys-manager.c ++++ b/plugins/media-keys/msd-media-keys-manager.c +@@ -880,6 +880,36 @@ do_multimedia_player_action (MsdMediaKeysManager *manager, + return msd_media_player_key_pressed (manager, key); + } + ++static void ++do_toggle_accessibility_key (const char *key) ++{ ++ GSettings *settings; ++ gboolean state; ++ ++ settings = g_settings_new ("org.mate.applications-at"); ++ state = g_settings_get_boolean (settings, key); ++ g_settings_set_boolean (settings, key, !state); ++ g_object_unref (settings); ++} ++ ++static void ++do_magnifier_action (MsdMediaKeysManager *manager) ++{ ++ do_toggle_accessibility_key ("screen-magnifier-enabled"); ++} ++ ++static void ++do_screenreader_action (MsdMediaKeysManager *manager) ++{ ++ do_toggle_accessibility_key ("screen-reader-enabled"); ++} ++ ++static void ++do_on_screen_keyboard_action (MsdMediaKeysManager *manager) ++{ ++ do_toggle_accessibility_key ("screen-keyboard-enabled"); ++} ++ + static gboolean + do_action (MsdMediaKeysManager *manager, + int type) +@@ -969,6 +999,15 @@ do_action (MsdMediaKeysManager *manager, + case NEXT_KEY: + return do_multimedia_player_action (manager, "Next"); + break; ++ case MAGNIFIER_KEY: ++ do_magnifier_action (manager); ++ break; ++ case SCREENREADER_KEY: ++ do_screenreader_action (manager); ++ break; ++ case ON_SCREEN_KEYBOARD_KEY: ++ do_on_screen_keyboard_action (manager); ++ break; + default: + g_assert_not_reached (); + } +diff --git a/po/POTFILES.in b/po/POTFILES.in +index e7dec6a..f17b5f3 100644 +--- a/po/POTFILES.in ++++ b/po/POTFILES.in +@@ -3,7 +3,6 @@ + data/50-accessibility.xml.in + data/org.mate.applications-at.gschema.xml.in.in + data/org.mate.font-rendering.gschema.xml.in.in +-data/org.mate.keybindings.gschema.xml.in.in + data/org.mate.peripherals-smartcard.gschema.xml.in.in + data/org.mate.peripherals-touchpad.gschema.xml.in.in + data/org.mate.SettingsDaemon.plugins.a11y-keyboard.gschema.xml.in.in Added: use_gnome_a11y_schema_to_enable_applications.diff =================================================================== --- use_gnome_a11y_schema_to_enable_applications.diff (rev 0) +++ use_gnome_a11y_schema_to_enable_applications.diff 2014-11-04 09:49:57 UTC (rev 121793) @@ -0,0 +1,13 @@ +diff --git a/plugins/media-keys/msd-media-keys-manager.c b/plugins/media-keys/msd-media-keys-manager.c +index f0b0229..6feac04 100644 +--- a/plugins/media-keys/msd-media-keys-manager.c ++++ b/plugins/media-keys/msd-media-keys-manager.c +@@ -886,7 +886,7 @@ do_toggle_accessibility_key (const char *key) + GSettings *settings; + gboolean state; + +- settings = g_settings_new ("org.mate.applications-at"); ++ settings = g_settings_new ("org.gnome.desktop.a11y.applications"); + state = g_settings_get_boolean (settings, key); + g_settings_set_boolean (settings, key, !state); + g_object_unref (settings);