[gnome-settings-daemon] media-keys: Add ability to hard-code keys



commit 37806fbb00087e44dd66a19efacd5eba4441bfc9
Author: Bastien Nocera <hadess hadess net>
Date:   Mon Nov 1 18:58:04 2010 +0000

    media-keys: Add ability to hard-code keys
    
    This would be used for keys that we don't want to export
    to the user-interface, such as some display or touchpad keys.
    
    See bug 623223

 plugins/media-keys/acme.h                   |   39 ++++++++++++++-------------
 plugins/media-keys/gsd-media-keys-manager.c |   10 ++++++-
 2 files changed, 29 insertions(+), 20 deletions(-)
---
diff --git a/plugins/media-keys/acme.h b/plugins/media-keys/acme.h
index 28acaf8..6f9447c 100644
--- a/plugins/media-keys/acme.h
+++ b/plugins/media-keys/acme.h
@@ -51,27 +51,28 @@ enum {
 static struct {
         int key_type;
         const char *settings_key;
+        const char *hard_coded;
         Key *key;
 } keys[HANDLED_KEYS] = {
-        { TOUCHPAD_KEY, "touchpad", NULL },
-        { MUTE_KEY, "volume-mute",NULL },
-        { VOLUME_DOWN_KEY, "volume-down", NULL },
-        { VOLUME_UP_KEY, "volume-up", NULL },
-        { LOGOUT_KEY, "logout", NULL },
-        { EJECT_KEY, "eject", NULL },
-        { HOME_KEY, "home", NULL },
-        { MEDIA_KEY, "media", NULL },
-        { CALCULATOR_KEY, "calculator", NULL },
-        { SEARCH_KEY, "search", NULL },
-        { EMAIL_KEY, "email", NULL },
-        { SCREENSAVER_KEY, "screensaver", NULL },
-        { HELP_KEY, "help", NULL },
-        { WWW_KEY, "www", NULL },
-        { PLAY_KEY, "play", NULL },
-        { PAUSE_KEY, "pause", NULL },
-        { STOP_KEY, "stop", NULL },
-        { PREVIOUS_KEY, "previous", NULL },
-        { NEXT_KEY, "next", NULL },
+        { TOUCHPAD_KEY, "touchpad", NULL, NULL },
+        { MUTE_KEY, "volume-mute",NULL, NULL },
+        { VOLUME_DOWN_KEY, "volume-down", NULL, NULL },
+        { VOLUME_UP_KEY, "volume-up", NULL, NULL },
+        { LOGOUT_KEY, "logout", NULL, NULL },
+        { EJECT_KEY, "eject", NULL, NULL },
+        { HOME_KEY, "home", NULL, NULL },
+        { MEDIA_KEY, "media", NULL, NULL },
+        { CALCULATOR_KEY, "calculator", NULL, NULL },
+        { SEARCH_KEY, "search", NULL, NULL },
+        { EMAIL_KEY, "email", NULL, NULL },
+        { SCREENSAVER_KEY, "screensaver", NULL, NULL },
+        { HELP_KEY, "help", NULL, NULL },
+        { WWW_KEY, "www", NULL, NULL },
+        { PLAY_KEY, "play", NULL, NULL },
+        { PAUSE_KEY, "pause", NULL, NULL },
+        { STOP_KEY, "stop", NULL, NULL },
+        { PREVIOUS_KEY, "previous", NULL, NULL },
+        { NEXT_KEY, "next", NULL, NULL },
 };
 
 #endif /* __ACME_H__ */
diff --git a/plugins/media-keys/gsd-media-keys-manager.c b/plugins/media-keys/gsd-media-keys-manager.c
index 253d249..59d734b 100644
--- a/plugins/media-keys/gsd-media-keys-manager.c
+++ b/plugins/media-keys/gsd-media-keys-manager.c
@@ -295,6 +295,9 @@ update_kbd_cb (GSettings           *settings,
                         g_free (keys[i].key);
                         keys[i].key = NULL;
 
+			/* We can't have a change in a hard-coded key */
+			g_assert (keys[i].settings_key != NULL);
+
                         tmp = g_settings_get_string (manager->priv->settings, keys[i].settings_key);
                         if (is_valid_shortcut (tmp) == FALSE) {
                                 g_free (tmp);
@@ -338,7 +341,12 @@ init_kbd (GsdMediaKeysManager *manager)
                 char *tmp;
                 Key  *key;
 
-                tmp = g_settings_get_string (manager->priv->settings, keys[i].settings_key);
+		if (keys[i].settings_key != NULL) {
+			tmp = g_settings_get_string (manager->priv->settings, keys[i].settings_key);
+		} else {
+			tmp = g_strdup (keys[i].hard_coded);
+		}
+
                 if (!is_valid_shortcut (tmp)) {
                         g_debug ("Not a valid shortcut: '%s'", tmp);
                         g_free (tmp);



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]