summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFlorian Müllner <fmuellner@gnome.org>2012-12-03 00:04:46 +0100
committerFlorian Müllner <fmuellner@gnome.org>2012-12-05 09:42:20 +0100
commitc183e4f4537b806b15c346798e1f5c11fef37cae (patch)
tree01283345133f64f715a2b2b2a889f22b6af9fa5e
parentc7c715ee073b94074752baed7fe3a59944672f61 (diff)
downloadgnome-settings-daemon-shell-keygrab.tar.gz
media-keys: Pass appropriate GrabModes to grab_key_unsafe()shell-keygrab
-rw-r--r--plugins/media-keys/gsd-media-keys-manager.c5
-rw-r--r--plugins/media-keys/shortcuts-list.h127
2 files changed, 73 insertions, 59 deletions
diff --git a/plugins/media-keys/gsd-media-keys-manager.c b/plugins/media-keys/gsd-media-keys-manager.c
index f95d1180..af9d8d20 100644
--- a/plugins/media-keys/gsd-media-keys-manager.c
+++ b/plugins/media-keys/gsd-media-keys-manager.c
@@ -117,6 +117,7 @@ typedef struct {
typedef struct {
MediaKeyType key_type;
+ GsdKeygrabModes modes;
const char *settings_key;
const char *hard_coded;
char *custom_path;
@@ -411,7 +412,7 @@ grab_media_key (MediaKey *key,
return need_flush;
}
- grab_key_unsafe (key->key, GSD_KEYGRAB_NORMAL, ~0, manager->priv->screens);
+ grab_key_unsafe (key->key, GSD_KEYGRAB_NORMAL, key->modes, manager->priv->screens);
g_free (tmp);
@@ -487,6 +488,7 @@ media_key_new_for_path (GsdMediaKeysManager *manager,
key = g_new0 (MediaKey, 1);
key->key_type = CUSTOM_KEY;
+ key->modes = GSD_KEYGRAB_MODE_NORMAL | GSD_KEYGRAB_MODE_OVERVIEW;
key->custom_path = g_strdup (path);
key->custom_command = command;
@@ -614,6 +616,7 @@ add_key (GsdMediaKeysManager *manager, guint i)
key->key_type = media_keys[i].key_type;
key->settings_key = media_keys[i].settings_key;
key->hard_coded = media_keys[i].hard_coded;
+ key->modes = media_keys[i].modes;
g_ptr_array_add (manager->priv->keys, key);
diff --git a/plugins/media-keys/shortcuts-list.h b/plugins/media-keys/shortcuts-list.h
index a16d0e77..07b8c90d 100644
--- a/plugins/media-keys/shortcuts-list.h
+++ b/plugins/media-keys/shortcuts-list.h
@@ -85,72 +85,83 @@ typedef enum {
CUSTOM_KEY
} MediaKeyType;
+
+#define ALL_MODES ~0
+#define WINDOW_MODES (GSD_KEYGRAB_MODE_NORMAL | GSD_KEYGRAB_MODE_OVERVIEW)
+#define SCREENSAVER_MODES ALL_MODES & ~(GSD_KEYGRAB_MODE_LOCK_SCREEN | \
+ GSD_KEYGRAB_MODE_UNLOCK_SCREEN)
+
static struct {
MediaKeyType key_type;
const char *settings_key;
const char *hard_coded;
+ GsdKeygrabModes modes;
} media_keys[] = {
- { TOUCHPAD_KEY, NULL, "XF86TouchpadToggle" },
- { TOUCHPAD_ON_KEY, NULL, "XF86TouchpadOn" },
- { TOUCHPAD_OFF_KEY, NULL, "XF86TouchpadOff" },
- { MUTE_KEY, "volume-mute", NULL },
- { VOLUME_DOWN_KEY, "volume-down", NULL },
- { VOLUME_UP_KEY, "volume-up", NULL },
- { MUTE_QUIET_KEY, NULL, "<Alt>XF86AudioMute" },
- { VOLUME_DOWN_QUIET_KEY, NULL, "<Alt>XF86AudioLowerVolume" },
- { VOLUME_UP_QUIET_KEY, NULL, "<Alt>XF86AudioRaiseVolume" },
- { 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 },
- { SCREENSAVER_KEY, NULL, "XF86ScreenSaver" },
- { HELP_KEY, "help", NULL },
- { SCREENSHOT_KEY, "screenshot", NULL },
- { WINDOW_SCREENSHOT_KEY, "window-screenshot", NULL },
- { AREA_SCREENSHOT_KEY, "area-screenshot", NULL },
- { SCREENSHOT_CLIP_KEY, "screenshot-clip", NULL },
- { WINDOW_SCREENSHOT_CLIP_KEY, "window-screenshot-clip", NULL },
- { AREA_SCREENSHOT_CLIP_KEY, "area-screenshot-clip", 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 },
- { REWIND_KEY, NULL, "XF86AudioRewind" },
- { FORWARD_KEY, NULL, "XF86AudioForward" },
- { REPEAT_KEY, NULL, "XF86AudioRepeat" },
- { RANDOM_KEY, NULL, "XF86AudioRandomPlay"},
- { VIDEO_OUT_KEY, NULL, "<Super>p" },
+ { TOUCHPAD_KEY, NULL, "XF86TouchpadToggle", ALL_MODES },
+ { TOUCHPAD_ON_KEY, NULL, "XF86TouchpadOn", ALL_MODES },
+ { TOUCHPAD_OFF_KEY, NULL, "XF86TouchpadOff", ALL_MODES },
+ { MUTE_KEY, "volume-mute", NULL, ALL_MODES },
+ { VOLUME_DOWN_KEY, "volume-down", NULL, ALL_MODES },
+ { VOLUME_UP_KEY, "volume-up", NULL, ALL_MODES },
+ { MUTE_QUIET_KEY, NULL, "<Alt>XF86AudioMute", ALL_MODES },
+ { VOLUME_DOWN_QUIET_KEY, NULL, "<Alt>XF86AudioLowerVolume", ALL_MODES },
+ { VOLUME_UP_QUIET_KEY, NULL, "<Alt>XF86AudioRaiseVolume", ALL_MODES },
+ { LOGOUT_KEY, "logout", NULL, WINDOW_MODES },
+ { EJECT_KEY, "eject", NULL, ALL_MODES },
+ { HOME_KEY, "home", NULL, WINDOW_MODES },
+ { MEDIA_KEY, "media", NULL, WINDOW_MODES },
+ { CALCULATOR_KEY, "calculator", NULL, WINDOW_MODES },
+ { SEARCH_KEY, "search", NULL, WINDOW_MODES },
+ { EMAIL_KEY, "email", NULL, WINDOW_MODES },
+ { SCREENSAVER_KEY, "screensaver", NULL, SCREENSAVER_MODES },
+ { SCREENSAVER_KEY, NULL, "XF86ScreenSaver", SCREENSAVER_MODES },
+ { HELP_KEY, "help", NULL, WINDOW_MODES },
+ { SCREENSHOT_KEY, "screenshot", NULL, ALL_MODES },
+ { WINDOW_SCREENSHOT_KEY, "window-screenshot", NULL, GSD_KEYGRAB_MODE_NORMAL },
+ { AREA_SCREENSHOT_KEY, "area-screenshot", NULL, ALL_MODES },
+ { SCREENSHOT_CLIP_KEY, "screenshot-clip", NULL, ALL_MODES },
+ { WINDOW_SCREENSHOT_CLIP_KEY, "window-screenshot-clip", NULL, GSD_KEYGRAB_MODE_NORMAL },
+ { AREA_SCREENSHOT_CLIP_KEY, "area-screenshot-clip", NULL, ALL_MODES },
+ { WWW_KEY, "www", NULL, WINDOW_MODES },
+ { PLAY_KEY, "play", NULL, ALL_MODES },
+ { PAUSE_KEY, "pause", NULL, ALL_MODES },
+ { STOP_KEY, "stop", NULL, ALL_MODES },
+ { PREVIOUS_KEY, "previous", NULL, ALL_MODES },
+ { NEXT_KEY, "next", NULL, ALL_MODES },
+ { REWIND_KEY, NULL, "XF86AudioRewind", ALL_MODES },
+ { FORWARD_KEY, NULL, "XF86AudioForward", ALL_MODES },
+ { REPEAT_KEY, NULL, "XF86AudioRepeat", ALL_MODES },
+ { RANDOM_KEY, NULL, "XF86AudioRandomPlay", ALL_MODES },
+ { VIDEO_OUT_KEY, NULL, "<Super>p", ALL_MODES },
/* Key code of the XF86Display key (Fn-F7 on Thinkpads, Fn-F4 on HP machines, etc.) */
- { VIDEO_OUT_KEY, NULL, "XF86Display" },
+ { VIDEO_OUT_KEY, NULL, "XF86Display", ALL_MODES },
/* Key code of the XF86RotateWindows key (present on some tablets) */
- { ROTATE_VIDEO_KEY, NULL, "XF86RotateWindows" },
- { MAGNIFIER_KEY, "magnifier", NULL },
- { SCREENREADER_KEY, "screenreader", NULL },
- { ON_SCREEN_KEYBOARD_KEY, "on-screen-keyboard", NULL },
- { INCREASE_TEXT_KEY, "increase-text-size", NULL },
- { DECREASE_TEXT_KEY, "decrease-text-size", NULL },
- { TOGGLE_CONTRAST_KEY, "toggle-contrast", NULL },
- { MAGNIFIER_ZOOM_IN_KEY, "magnifier-zoom-in", NULL },
- { MAGNIFIER_ZOOM_OUT_KEY, "magnifier-zoom-out", NULL },
- { POWER_KEY, NULL, "XF86PowerOff" },
+ { ROTATE_VIDEO_KEY, NULL, "XF86RotateWindows", GSD_KEYGRAB_MODE_NORMAL },
+ { MAGNIFIER_KEY, "magnifier", NULL, ALL_MODES },
+ { SCREENREADER_KEY, "screenreader", NULL, ALL_MODES },
+ { ON_SCREEN_KEYBOARD_KEY, "on-screen-keyboard", NULL, ALL_MODES },
+ { INCREASE_TEXT_KEY, "increase-text-size", NULL, ALL_MODES },
+ { DECREASE_TEXT_KEY, "decrease-text-size", NULL, ALL_MODES },
+ { TOGGLE_CONTRAST_KEY, "toggle-contrast", NULL, ALL_MODES },
+ { MAGNIFIER_ZOOM_IN_KEY, "magnifier-zoom-in", NULL, ALL_MODES },
+ { MAGNIFIER_ZOOM_OUT_KEY, "magnifier-zoom-out", NULL, ALL_MODES },
+ { POWER_KEY, NULL, "XF86PowerOff", WINDOW_MODES },
/* the kernel / Xorg names really are like this... */
- { SLEEP_KEY, NULL, "XF86Suspend" },
- { SUSPEND_KEY, NULL, "XF86Sleep" },
- { HIBERNATE_KEY, NULL, "XF86Hibernate" },
- { SCREEN_BRIGHTNESS_UP_KEY, NULL, "XF86MonBrightnessUp" },
- { SCREEN_BRIGHTNESS_DOWN_KEY, NULL, "XF86MonBrightnessDown" },
- { KEYBOARD_BRIGHTNESS_UP_KEY, NULL, "XF86KbdBrightnessUp" },
- { KEYBOARD_BRIGHTNESS_DOWN_KEY, NULL, "XF86KbdBrightnessDown" },
- { KEYBOARD_BRIGHTNESS_TOGGLE_KEY, NULL, "XF86KbdLightOnOff" },
- { SWITCH_INPUT_SOURCE_KEY, "switch-input-source", NULL },
- { SWITCH_INPUT_SOURCE_BACKWARD_KEY, "switch-input-source-backward", NULL },
- { BATTERY_KEY, NULL, "XF86Battery" },
+ { SLEEP_KEY, NULL, "XF86Suspend", ALL_MODES },
+ { SUSPEND_KEY, NULL, "XF86Sleep", ALL_MODES },
+ { HIBERNATE_KEY, NULL, "XF86Hibernate", ALL_MODES },
+ { SCREEN_BRIGHTNESS_UP_KEY, NULL, "XF86MonBrightnessUp", ALL_MODES },
+ { SCREEN_BRIGHTNESS_DOWN_KEY, NULL, "XF86MonBrightnessDown", ALL_MODES },
+ { KEYBOARD_BRIGHTNESS_UP_KEY, NULL, "XF86KbdBrightnessUp", ALL_MODES },
+ { KEYBOARD_BRIGHTNESS_DOWN_KEY, NULL, "XF86KbdBrightnessDown", ALL_MODES },
+ { KEYBOARD_BRIGHTNESS_TOGGLE_KEY, NULL, "XF86KbdLightOnOff", ALL_MODES },
+ { SWITCH_INPUT_SOURCE_KEY, "switch-input-source", NULL, ALL_MODES },
+ { SWITCH_INPUT_SOURCE_BACKWARD_KEY, "switch-input-source-backward", NULL, ALL_MODES },
+ { BATTERY_KEY, NULL, "XF86Battery", WINDOW_MODES },
};
+#undef ALL_MODES
+#undef WINDOW_MODES
+#undef SCREENSAVER_MODES
+
#endif /* __ACME_H__ */