diff options
author | Bastien Nocera <hadess@hadess.net> | 2010-11-01 18:58:04 +0000 |
---|---|---|
committer | Bastien Nocera <hadess@hadess.net> | 2010-11-01 18:59:35 +0000 |
commit | 37806fbb00087e44dd66a19efacd5eba4441bfc9 (patch) | |
tree | cd68b6e715ffc7087c16816605d334e9dd7f99a4 | |
parent | 51ac14b4a8b3e36746fec0b07947036b9c3a2e4a (diff) | |
download | gnome-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.h | 39 | ||||
-rw-r--r-- | 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 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); |