[mate-settings-daemon] 01/01: Add patches to fix accessibility key bindings for Orca and Onboard.

Martin Wimpress flexiondotorg-guest at moszumanska.debian.org
Wed Jan 14 12:44:59 UTC 2015


This is an automated email from the git hooks/post-receive script.

flexiondotorg-guest pushed a commit to branch master
in repository mate-settings-daemon.

commit b80a66058265183917bed75a8493082f546db2a7
Author: Martin Wimpress <code at flexion.org>
Date:   Wed Jan 14 12:44:33 2015 +0000

    Add patches to fix accessibility key bindings for Orca and Onboard.
---
 .../0010_move_a11y_keybindings_to_media_keys.patch | 239 +++++++++
 debian/patches/0011_add_a11y_settings_plugin.patch | 597 +++++++++++++++++++++
 ..._gnome_a11y_schema_to_enable_applications.patch |  24 +
 .../patches/0013_monitor_gnome_schema_keys.patch   |  22 +
 debian/patches/series                              |   4 +
 5 files changed, 886 insertions(+)

diff --git a/debian/patches/0010_move_a11y_keybindings_to_media_keys.patch b/debian/patches/0010_move_a11y_keybindings_to_media_keys.patch
new file mode 100644
index 0000000..bc7e88d
--- /dev/null
+++ b/debian/patches/0010_move_a11y_keybindings_to_media_keys.patch
@@ -0,0 +1,239 @@
+From b8e3a26d0975cb43cb5a315bceaf581f6ea2a5a8 Mon Sep 17 00:00:00 2001
+From: infirit <infirit at gmail.com>
+Date: Sun, 2 Nov 2014 15:04:36 +0100
+Subject: [PATCH] a11y-keybindings: Move to media-keys plugin
+
+---
+ data/50-accessibility.xml.in                       |  8 +--
+ data/Makefile.am                                   |  5 +-
+ ...ingsDaemon.plugins.media-keys.gschema.xml.in.in | 15 ++++++
+ data/org.mate.keybindings.gschema.xml.in.in        | 58 ----------------------
+ plugins/media-keys/acme.h                          |  6 +++
+ plugins/media-keys/msd-media-keys-manager.c        | 39 +++++++++++++++
+ po/POTFILES.in                                     |  1 -
+ 7 files changed, 66 insertions(+), 66 deletions(-)
+ delete mode 100644 data/org.mate.keybindings.gschema.xml.in.in
+
+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
diff --git a/debian/patches/0011_add_a11y_settings_plugin.patch b/debian/patches/0011_add_a11y_settings_plugin.patch
new file mode 100644
index 0000000..c95c63c
--- /dev/null
+++ b/debian/patches/0011_add_a11y_settings_plugin.patch
@@ -0,0 +1,597 @@
+From b42e0ce69a7f232d4c29de284bd0b3ca4a38555d Mon Sep 17 00:00:00 2001
+From: infirit <infirit at gmail.com>
+Date: Sun, 2 Nov 2014 17:36:33 +0100
+Subject: [PATCH] Add a11y-settings plugin
+
+---
+ configure.ac                                       |   1 +
+ data/Makefile.am                                   |   1 +
+ ...sDaemon.plugins.a11y-settings.gschema.xml.in.in |  14 ++
+ plugins/Makefile.am                                |   1 +
+ plugins/a11y-settings/Makefile.am                  |  42 +++++
+ .../a11y-settings.mate-settings-plugin.in          |   8 +
+ plugins/a11y-settings/msd-a11y-settings-manager.c  | 192 +++++++++++++++++++++
+ plugins/a11y-settings/msd-a11y-settings-manager.h  |  57 ++++++
+ plugins/a11y-settings/msd-a11y-settings-plugin.c   | 109 ++++++++++++
+ plugins/a11y-settings/msd-a11y-settings-plugin.h   |  59 +++++++
+ po/POTFILES.in                                     |   1 +
+ 11 files changed, 485 insertions(+)
+ create mode 100644 data/org.mate.SettingsDaemon.plugins.a11y-settings.gschema.xml.in.in
+ create mode 100644 plugins/a11y-settings/Makefile.am
+ create mode 100644 plugins/a11y-settings/a11y-settings.mate-settings-plugin.in
+ create mode 100644 plugins/a11y-settings/msd-a11y-settings-manager.c
+ create mode 100644 plugins/a11y-settings/msd-a11y-settings-manager.h
+ create mode 100644 plugins/a11y-settings/msd-a11y-settings-plugin.c
+ create mode 100644 plugins/a11y-settings/msd-a11y-settings-plugin.h
+
+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)
++
++ at 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 <hadess at 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 <mccann at 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 <mccann at 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 <mccann at 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
diff --git a/debian/patches/0012_use_gnome_a11y_schema_to_enable_applications.patch b/debian/patches/0012_use_gnome_a11y_schema_to_enable_applications.patch
new file mode 100644
index 0000000..05c33c2
--- /dev/null
+++ b/debian/patches/0012_use_gnome_a11y_schema_to_enable_applications.patch
@@ -0,0 +1,24 @@
+From d0f277bf02655db7e35946b82176a1b5ffe6819b Mon Sep 17 00:00:00 2001
+From: infirit <infirit at gmail.com>
+Date: Mon, 3 Nov 2014 10:26:22 +0100
+Subject: [PATCH] a11y: Use gnome a11y schema to enable applications
+
+For example when we toggle screen-reader-enable in the gnome schema
+orca will turn on and off even under MATE.
+---
+ plugins/media-keys/msd-media-keys-manager.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+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);
diff --git a/debian/patches/0013_monitor_gnome_schema_keys.patch b/debian/patches/0013_monitor_gnome_schema_keys.patch
new file mode 100644
index 0000000..098694f
--- /dev/null
+++ b/debian/patches/0013_monitor_gnome_schema_keys.patch
@@ -0,0 +1,22 @@
+From 4cb2701b4996045171c4ba67400be0f528d76505 Mon Sep 17 00:00:00 2001
+From: infirit <infirit at gmail.com>
+Date: Mon, 3 Nov 2014 10:30:35 +0100
+Subject: [PATCH] a11y-settings: Monitor gnome schema keys instead of MATE's
+
+---
+ plugins/a11y-settings/msd-a11y-settings-manager.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+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);
diff --git a/debian/patches/series b/debian/patches/series
index 560fb51..3e0ffbc 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -1,2 +1,6 @@
 0001_prefer-gcalculator-for-media-keys.patch
+0010_move_a11y_keybindings_to_media_keys.patch
+0011_add_a11y_settings_plugin.patch
+0012_use_gnome_a11y_schema_to_enable_applications.patch
+0013_monitor_gnome_schema_keys.patch
 

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-mate/mate-settings-daemon.git



More information about the pkg-mate-commits mailing list