summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBastien Nocera <hadess@hadess.net>2010-11-01 18:58:04 +0000
committerBastien Nocera <hadess@hadess.net>2010-11-01 18:59:35 +0000
commit37806fbb00087e44dd66a19efacd5eba4441bfc9 (patch)
treecd68b6e715ffc7087c16816605d334e9dd7f99a4
parent51ac14b4a8b3e36746fec0b07947036b9c3a2e4a (diff)
downloadgnome-settings-daemon-37806fbb00087e44dd66a19efacd5eba4441bfc9.tar.gz
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
-rw-r--r--plugins/media-keys/acme.h39
-rw-r--r--plugins/media-keys/gsd-media-keys-manager.c10
2 files changed, 29 insertions, 20 deletions
diff --git a/plugins/media-keys/acme.h b/plugins/media-keys/acme.h
index 28acaf88..6f9447cc 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 253d249d..59d734be 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);