summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorinfirit <[email protected]>2014-12-13 16:58:52 +0100
committerinfirit <[email protected]>2014-12-13 22:47:07 +0100
commitecd6cb8c49b07e7fe141205c8da677aed1ad3fb1 (patch)
treec05df28e58d4ebcad8f6b460c180e2f1432e3df3
parent5f721f4f9ae4c95cf02e25e988e32b98dd653a87 (diff)
downloadmate-settings-daemon-ecd6cb8c49b07e7fe141205c8da677aed1ad3fb1.tar.bz2
mate-settings-daemon-ecd6cb8c49b07e7fe141205c8da677aed1ad3fb1.tar.xz
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. Taken from GSD commit: 37806fbb00087e44dd66a19efacd5eba4441bfc9 From: Bastien Nocera <[email protected]>
-rw-r--r--plugins/media-keys/acme.h39
-rw-r--r--plugins/media-keys/msd-media-keys-manager.c10
2 files changed, 28 insertions, 21 deletions
diff --git a/plugins/media-keys/acme.h b/plugins/media-keys/acme.h
index 17ce1ed..e7fddf7 100644
--- a/plugins/media-keys/acme.h
+++ b/plugins/media-keys/acme.h
@@ -54,27 +54,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 },
- { POWER_KEY, "power", 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 },
+ { POWER_KEY, "power", 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 },
{ MAGNIFIER_KEY, "magnifier", NULL, NULL },
{ SCREENREADER_KEY, "screenreader", NULL, NULL },
{ ON_SCREEN_KEYBOARD_KEY, "on-screen-keyboard", NULL, NULL },
diff --git a/plugins/media-keys/msd-media-keys-manager.c b/plugins/media-keys/msd-media-keys-manager.c
index 7d4245e..0680818 100644
--- a/plugins/media-keys/msd-media-keys-manager.c
+++ b/plugins/media-keys/msd-media-keys-manager.c
@@ -286,6 +286,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 (settings,
keys[i].settings_key);
@@ -339,8 +342,11 @@ static void init_kbd(MsdMediaKeysManager* manager)
manager);
g_free (signal_name);
- 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))
{