summaryrefslogtreecommitdiff
path: root/plugins/media-keys
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/media-keys')
-rw-r--r--plugins/media-keys/acme.h6
-rw-r--r--plugins/media-keys/msd-media-keys-manager.c39
2 files changed, 45 insertions, 0 deletions
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 ();
}