summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBenjamin Berg <bberg@redhat.com>2019-05-13 22:09:58 +0200
committerBenjamin Berg <bberg@redhat.com>2019-05-27 16:48:25 +0200
commit121a6f89917898b8d05db2e1933dd0ad59c26768 (patch)
tree71752fd14ea4f545eed9f621619a54cdd4e957d8
parent28684f88ef9d36e91450c72aa7babd54aa7d459d (diff)
downloadgnome-settings-daemon-121a6f89917898b8d05db2e1933dd0ad59c26768.tar.gz
media-keys: Move all keyboard bindings into settings
This creates new "X-static" binding entries in the configuration store which store all the previously hard-coded keys. The effect is that it is possible for users to override the behaviour, with the caveat that newly added keybindings will not be picked up for that key.
-rw-r--r--data/org.gnome.settings-daemon.plugins.media-keys.gschema.xml.in422
-rw-r--r--plugins/media-keys/gsd-media-keys-manager.c33
-rw-r--r--plugins/media-keys/shortcuts-list.h133
3 files changed, 485 insertions, 103 deletions
diff --git a/data/org.gnome.settings-daemon.plugins.media-keys.gschema.xml.in b/data/org.gnome.settings-daemon.plugins.media-keys.gschema.xml.in
index 619cdd40..36c29ee4 100644
--- a/data/org.gnome.settings-daemon.plugins.media-keys.gschema.xml.in
+++ b/data/org.gnome.settings-daemon.plugins.media-keys.gschema.xml.in
@@ -185,52 +185,52 @@
<description>List of custom keybindings</description>
</key>
<key name="calculator" type="as">
- <default>['', 'XF86Calculator']</default>
+ <default>['']</default>
<summary>Launch calculator</summary>
<description>Binding to launch the calculator.</description>
</key>
<key name="control-center" type="as">
- <default>['', 'XF86Tools']</default>
+ <default>['']</default>
<summary>Launch settings</summary>
<description>Binding to launch GNOME settings.</description>
</key>
<key name="email" type="as">
- <default>['', 'XF86Mail']</default>
+ <default>['']</default>
<summary>Launch email client</summary>
<description>Binding to launch the email client.</description>
</key>
<key name="eject" type="as">
- <default>['', 'XF86Eject']</default>
+ <default>['']</default>
<summary>Eject</summary>
<description>Binding to eject an optical disc.</description>
</key>
<key name="help" type="as">
- <default>['']</default>
+ <default>['', '&lt;Super&gt;F1']</default>
<summary>Launch help browser</summary>
<description>Binding to launch the help browser.</description>
</key>
<key name="home" type="as">
- <default>['', 'XF86Explorer']</default>
+ <default>['']</default>
<summary>Home folder</summary>
<description>Binding to open the Home folder.</description>
</key>
<key name="media" type="as">
- <default>['', 'XF86AudioMedia']</default>
+ <default>['']</default>
<summary>Launch media player</summary>
<description>Binding to launch the media player.</description>
</key>
<key name="next" type="as">
- <default>['', 'XF86AudioNext']</default>
+ <default>['']</default>
<summary>Next track</summary>
<description>Binding to skip to next track.</description>
</key>
<key name="pause" type="as">
- <default>['', 'XF86AudioPause']</default>
+ <default>['']</default>
<summary>Pause playback</summary>
<description>Binding to pause playback.</description>
</key>
<key name="play" type="as">
- <default>['', 'XF86AudioPlay']</default>
+ <default>['']</default>
<summary>Play (or play/pause)</summary>
<description>Binding to start playback (or toggle play/pause).</description>
</key>
@@ -240,7 +240,7 @@
<description>Binding to log out.</description>
</key>
<key name="previous" type="as">
- <default>['', 'XF86AudioPrev']</default>
+ <default>['']</default>
<summary>Previous track</summary>
<description>Binding to skip to previous track.</description>
</key>
@@ -250,32 +250,64 @@
<description>Binding to lock the screen.</description>
</key>
<key name="search" type="as">
- <default>['XF86Search']</default>
+ <default>['']</default>
<summary>Search</summary>
<description>Binding to launch the search tool.</description>
</key>
<key name="stop" type="as">
- <default>['', 'XF86AudioStop']</default>
+ <default>['']</default>
<summary>Stop playback</summary>
<description>Binding to stop playback.</description>
</key>
+
+ <!-- Change volume -->
<key name="volume-down" type="as">
- <default>['', 'XF86AudioLowerVolume']</default>
+ <default>['']</default>
<summary>Volume down</summary>
<description>Binding to lower the volume.</description>
</key>
<key name="volume-mute" type="as">
- <default>['', 'XF86AudioMute']</default>
+ <default>['']</default>
<summary>Volume mute/unmute</summary>
<description>Binding to mute/unmute the volume.</description>
</key>
<key name="volume-up" type="as">
- <default>['', 'XF86AudioRaiseVolume']</default>
+ <default>['']</default>
<summary>Volume up</summary>
<description>Binding to raise the volume.</description>
</key>
+
+ <!-- Change volume without sound effect -->
+ <key name="volume-down-quiet" type="as">
+ <default>['']</default>
+ <summary>Quiet volume down</summary>
+ <description>Binding to lower the volume without emitting a sound effect.</description>
+ </key>
+ <key name="volume-mute-quiet" type="as">
+ <default>['']</default>
+ <summary>Quiet volume mute/unmute</summary>
+ <description>Binding to mute/unmute the volume without emitting a sound effect.</description>
+ </key>
+ <key name="volume-up-quiet" type="as">
+ <default>['']</default>
+ <summary>Quiet volume up</summary>
+ <description>Binding to raise the volume without emitting a sound effect.</description>
+ </key>
+
+ <!-- Change volume with high precision -->
+ <key name="volume-down-precise" type="as">
+ <default>['']</default>
+ <summary>Precise volume down</summary>
+ <description>Binding to lower the volume with higher precision.</description>
+ </key>
+ <key name="volume-up-precise" type="as">
+ <default>['']</default>
+ <summary>Precise volume up</summary>
+ <description>Binding to raise the volume with higher precision.</description>
+ </key>
+
<key name="mic-mute" type="as">
- <default>['', 'XF86AudioMicMute']</default>
+ <default>['']</default>
<summary>Microphone mute/unmute</summary>
<description>Binding to mute/unmute the microphone.</description>
</key>
@@ -315,15 +347,10 @@
<description>Binding to record a short video of the screen</description>
</key>
<key name="www" type="as">
- <default>['', 'XF86WWW']</default>
+ <default>['']</default>
<summary>Launch web browser</summary>
<description>Binding to launch the web browser.</description>
</key>
- <key name="magnifier" type="as">
- <default>['&lt;Alt&gt;&lt;Super&gt;8']</default>
- <summary>Toggle magnifier</summary>
- <description>Binding to show the screen magnifier</description>
- </key>
<key name="screenreader" type="as">
<default>['&lt;Alt&gt;&lt;Super&gt;s']</default>
<summary>Toggle screen reader</summary>
@@ -349,6 +376,11 @@
<summary>Toggle contrast</summary>
<description>Binding to toggle the interface contrast</description>
</key>
+ <key name="magnifier" type="as">
+ <default>['&lt;Alt&gt;&lt;Super&gt;8']</default>
+ <summary>Toggle magnifier</summary>
+ <description>Binding to show the screen magnifier</description>
+ </key>
<key name="magnifier-zoom-in" type="as">
<default>['&lt;Alt&gt;&lt;Super&gt;equal']</default>
<summary>Magnifier zoom in</summary>
@@ -359,6 +391,350 @@
<summary>Magnifier zoom out</summary>
<description>Binding for the magnifier to zoom out</description>
</key>
+ <key name="touchpad-toggle" type="as">
+ <default>['']</default>
+ <summary>Toggle touchpad on/off</summary>
+ <description>Binding to toggle the touchpad on/off.</description>
+ </key>
+ <key name="touchpad-on" type="as">
+ <default>['']</default>
+ <summary>Switch touchpad on</summary>
+ <description>Binding to switch the touchpad on.</description>
+ </key>
+ <key name="touchpad-off" type="as">
+ <default>['']</default>
+ <summary>Switch touchpad off</summary>
+ <description>Binding to switch the touchpad off.</description>
+ </key>
+
+ <key name="playback-rewind" type="as">
+ <default>['']</default>
+ <summary>Skip backward in current track</summary>
+ <description>Binding to skip backward in current track.</description>
+ </key>
+ <key name="playback-forward" type="as">
+ <default>['']</default>
+ <summary>Skip forward in current track</summary>
+ <description>Binding to skip forward in in current track.</description>
+ </key>
+ <key name="playback-repeat" type="as">
+ <default>['']</default>
+ <summary>Toggle repeat playback mode</summary>
+ <description>Binding to toggle repeat mode in media player.</description>
+ </key>
+ <key name="playback-random" type="as">
+ <default>['']</default>
+ <summary>Toggle random playback mode</summary>
+ <description>Binding to toggle random playback mode in media player.</description>
+ </key>
+
+ <key name="rotate-video-lock" type="as">
+ <default>['']</default>
+ <summary>Toggle automatic screen orientation</summary>
+ <description>Binding to toggle automatic screen orientation.</description>
+ </key>
+ <key name="power" type="as">
+ <default>['']</default>
+ <summary>Power button</summary>
+ <description>Binding for power button.</description>
+ </key>
+ <key name="hibernate" type="as">
+ <default>['']</default>
+ <summary>Hibernate button</summary>
+ <description>Binding to hibernate the machine.</description>
+ </key>
+ <key name="suspend" type="as">
+ <default>['']</default>
+ <summary>Suspend button</summary>
+ <description>Binding to suspend the machine.</description>
+ </key>
+
+ <key name="screen-brightness-up" type="as">
+ <default>['']</default>
+ <summary>Screen brightness up</summary>
+ <description>Binding to increase the screen brightness.</description>
+ </key>
+ <key name="screen-brightness-down" type="as">
+ <default>['']</default>
+ <summary>Screen brightness down</summary>
+ <description>Binding to decrease the screen brightness.</description>
+ </key>
+ <key name="screen-brightness-cycle" type="as">
+ <default>['']</default>
+ <summary>Screen brightness cycle</summary>
+ <description>Binding to cycle the screen brightness.</description>
+ </key>
+
+ <key name="keyboard-brightness-up" type="as">
+ <default>['']</default>
+ <summary>Keyboard brightness up</summary>
+ <description>Binding to increase the keyboard brightness.</description>
+ </key>
+ <key name="keyboard-brightness-down" type="as">
+ <default>['']</default>
+ <summary>Keyboard brightness down</summary>
+ <description>Binding to decrease the keyboard brightness.</description>
+ </key>
+ <key name="keyboard-brightness-toggle" type="as">
+ <default>['']</default>
+ <summary>Keyboard brightness toggle</summary>
+ <description>Binding to toggle the keyboard brightness.</description>
+ </key>
+
+ <key name="battery-status" type="as">
+ <default>['']</default>
+ <summary>Show battery status</summary>
+ <description>Binding to show current battery status.</description>
+ </key>
+
+ <key name="rfkill" type="as">
+ <default>['']</default>
+ <summary>RF kill</summary>
+ <description>Binding to toggle airplane mode.</description>
+ </key>
+ <key name="rfkill-bluetooth" type="as">
+ <default>['']</default>
+ <summary>Bluetooth RF kill</summary>
+ <description>Binding to toggle bluetooth airplane mode.</description>
+ </key>
+
+ <!--
+ The following bindings are considered static versions of the above.
+ Overriding these keys will likely result in unexpected behaviour on at
+ least some hardware.
+ We assume that no user will ever modify these. It is therefore legal to
+ assume that an update of the default value will reach all users.
+ -->
+ <key name="calculator-static" type="as">
+ <default>['XF86Calculator']</default>
+ <summary>Launch calculator</summary>
+ <description>Static binding to launch the calculator.</description>
+ </key>
+ <key name="control-center-static" type="as">
+ <default>['XF86Tools']</default>
+ <summary>Launch settings</summary>
+ <description>Static binding to launch GNOME settings.</description>
+ </key>
+ <key name="email-static" type="as">
+ <default>['XF86Mail']</default>
+ <summary>Launch email client</summary>
+ <description>Static binding to launch the email client.</description>
+ </key>
+ <key name="eject-static" type="as">
+ <default>['XF86Eject']</default>
+ <summary>Eject</summary>
+ <description>Static binding to eject an optical disc.</description>
+ </key>
+ <key name="home-static" type="as">
+ <default>['XF86Explorer']</default>
+ <summary>Home folder</summary>
+ <description>Static binding to open the Home folder.</description>
+ </key>
+ <key name="media-static" type="as">
+ <default>['XF86AudioMedia']</default>
+ <summary>Launch media player</summary>
+ <description>Static binding to launch the media player.</description>
+ </key>
+ <key name="next-static" type="as">
+ <default>['XF86AudioNext', '&lt;Ctrl&gt;XF86AudioNext']</default>
+ <summary>Next track</summary>
+ <description>Static binding to skip to next track.</description>
+ </key>
+ <key name="pause-static" type="as">
+ <default>['XF86AudioPause']</default>
+ <summary>Pause playback</summary>
+ <description>Static binding to pause playback.</description>
+ </key>
+ <key name="play-static" type="as">
+ <default>['XF86AudioPlay', '&lt;Ctrl&gt;XF86AudioPlay']</default>
+ <summary>Play (or play/pause)</summary>
+ <description>Static binding to start playback (or toggle play/pause).</description>
+ </key>
+ <key name="previous-static" type="as">
+ <default>['XF86AudioPrev', '&lt;Ctrl&gt;XF86AudioPrev']</default>
+ <summary>Previous track</summary>
+ <description>Static binding to skip to previous track.</description>
+ </key>
+ <key name="screensaver-static" type="as">
+ <default>['XF86ScreenSaver']</default>
+ <summary>Lock screen</summary>
+ <description>Static binding to lock the screen.</description>
+ </key>
+ <key name="search-static" type="as">
+ <default>['XF86Search']</default>
+ <summary>Search</summary>
+ <description>Static binding to launch the search tool.</description>
+ </key>
+ <key name="stop-static" type="as">
+ <default>['XF86AudioStop']</default>
+ <summary>Stop playback</summary>
+ <description>Static binding to stop playback.</description>
+ </key>
+
+ <!-- Change volume, "Ctrl" is always emitted on some weird keyboards -->
+ <key name="volume-down-static" type="as">
+ <default>['XF86AudioLowerVolume', '&lt;Ctrl&gt;XF86AudioLowerVolume']</default>
+ <summary>Volume down</summary>
+ <description>Static binding to lower the volume.</description>
+ </key>
+ <key name="volume-mute-static" type="as">
+ <default>['XF86AudioMute']</default>
+ <summary>Volume mute/unmute</summary>
+ <description>Static binding to mute/unmute the volume.</description>
+ </key>
+ <key name="volume-up-static" type="as">
+ <default>['XF86AudioRaiseVolume', '&lt;Ctrl&gt;XF86AudioRaiseVolume']</default>
+ <summary>Volume up</summary>
+ <description>Static binding to raise the volume.</description>
+ </key>
+
+ <!-- Change volume without sound effect -->
+ <key name="volume-down-quiet-static" type="as">
+ <default>['&lt;Alt&gt;XF86AudioLowerVolume', '&lt;Alt&gt;&lt;Ctrl&gt;XF86AudioLowerVolume']</default>
+ <summary>Quiet volume down</summary>
+ <description>Static binding to lower the volume without emitting a sound effect.</description>
+ </key>
+ <key name="volume-mute-quiet-static" type="as">
+ <default>['&lt;Alt&gt;XF86AudioMute']</default>
+ <summary>Quiet volume mute/unmute</summary>
+ <description>Static binding to mute/unmute the volume.</description>
+ </key>
+ <key name="volume-up-quiet-static" type="as">
+ <default>['&lt;Alt&gt;XF86AudioRaiseVolume', '&lt;Alt&gt;&lt;Ctrl&gt;XF86AudioRaiseVolume']</default>
+ <summary>Quiet volume up</summary>
+ <description>Static binding to raise the volume without emitting a sound effect.</description>
+ </key>
+
+ <!-- Change volume with high precision -->
+ <key name="volume-down-precise-static" type="as">
+ <default>['&lt;Shift&gt;XF86AudioLowerVolume', '&lt;Ctrl&gt;&lt;Shift&gt;XF86AudioLowerVolume']</default>
+ <summary>Precise volume down</summary>
+ <description>Static binding to lower the volume with higher precision.</description>
+ </key>
+ <key name="volume-up-precise-static" type="as">
+ <default>['&lt;Shift&gt;XF86AudioRaiseVolume', '&lt;Ctrl&gt;&lt;Shift&gt;XF86AudioRaiseVolume']</default>
+ <summary>Precise volume up</summary>
+ <description>Static binding to raise the volume with higher precision.</description>
+ </key>
+
+ <key name="mic-mute-static" type="as">
+ <default>['XF86AudioMicMute']</default>
+ <summary>Microphone mute/unmute</summary>
+ <description>Static binding to mute/unmute the microphone.</description>
+ </key>
+ <key name="www-static" type="as">
+ <default>['XF86WWW']</default>
+ <summary>Launch web browser</summary>
+ <description>Static binding to launch the web browser.</description>
+ </key>
+
+ <key name="touchpad-toggle-static" type="as">
+ <default>['XF86TouchpadToggle', '&lt;Ctrl&gt;&lt;Super&gt;XF86TouchpadToggle']</default>
+ <summary>Magnifier zoom out</summary>
+ <description>Static binding to toggle the touchpad on/off.</description>
+ </key>
+ <key name="touchpad-on-static" type="as">
+ <default>['XF86TouchpadOn']</default>
+ <summary>Switch touchpad on</summary>
+ <description>Static binding to switch the touchpad on.</description>
+ </key>
+ <key name="touchpad-off-static" type="as">
+ <default>['XF86TouchpadOff']</default>
+ <summary>Switch touchpad off</summary>
+ <description>Static binding to switch the touchpad off.</description>
+ </key>
+
+ <key name="playback-rewind-static" type="as">
+ <default>['XF86AudioRewind']</default>
+ <summary>Skip backward in current track</summary>
+ <description>Static binding to skip backward in current track.</description>
+ </key>
+ <key name="playback-forward-static" type="as">
+ <default>['XF86AudioForward']</default>
+ <summary>Skip forward in current track</summary>
+ <description>Static binding to skip forward in in current track.</description>
+ </key>
+ <key name="playback-repeat-static" type="as">
+ <default>['XF86AudioRepeat']</default>
+ <summary>Toggle repeat playback mode</summary>
+ <description>Static binding to toggle repeat mode in media player.</description>
+ </key>
+ <key name="playback-random-static" type="as">
+ <default>['XF86AudioRandomPlay']</default>
+ <summary>Toggle random playback mode</summary>
+ <description>Static binding to toggle random playback mode in media player.</description>
+ </key>
+
+ <key name="rotate-video-lock-static" type="as">
+ <default>['&lt;Super&gt;o']</default>
+ <summary>Toggle automatic screen orientation</summary>
+ <description>Static binding to toggle automatic screen orientation.</description>
+ </key>
+ <key name="power-static" type="as">
+ <default>['XF86PowerOff']</default>
+ <summary>Power button</summary>
+ <description>Static binding for power button.</description>
+ </key>
+ <key name="hibernate-static" type="as">
+ <default>['XF86Suspend', 'XF86Hibernate']</default>
+ <summary>Hibernate button</summary>
+ <description>Static binding to hibernate the machine.</description>
+ </key>
+ <key name="suspend-static" type="as">
+ <default>['XF86Sleep']</default>
+ <summary>Suspend button</summary>
+ <description>Static binding to suspend the machine.</description>
+ </key>
+
+ <key name="screen-brightness-up-static" type="as">
+ <default>['XF86MonBrightnessUp']</default>
+ <summary>Screen brightness up</summary>
+ <description>Static binding to increase the screen brightness.</description>
+ </key>
+ <key name="screen-brightness-down-static" type="as">
+ <default>['XF86MonBrightnessDown']</default>
+ <summary>Screen brightness down</summary>
+ <description>Static binding to decrease the screen brightness.</description>
+ </key>
+ <key name="screen-brightness-cycle-static" type="as">
+ <default>['XF86MonBrightnessCycle']</default>
+ <summary>Screen brightness cycle</summary>
+ <description>Static binding to cycle the screen brightness.</description>
+ </key>
+
+ <key name="keyboard-brightness-up-static" type="as">
+ <default>['XF86KbdBrightnessUp']</default>
+ <summary>Keyboard brightness up</summary>
+ <description>Static binding to increase the keyboard brightness.</description>
+ </key>
+ <key name="keyboard-brightness-down-static" type="as">
+ <default>['XF86KbdBrightnessDown']</default>
+ <summary>Keyboard brightness down</summary>
+ <description>Static binding to decrease the keyboard brightness.</description>
+ </key>
+ <key name="keyboard-brightness-toggle-static" type="as">
+ <default>['XF86KbdLightOnOff']</default>
+ <summary>Keyboard brightness toggle</summary>
+ <description>Static binding to toggle the keyboard brightness.</description>
+ </key>
+
+ <key name="battery-status-static" type="as">
+ <default>['XF86Battery']</default>
+ <summary>Show battery status</summary>
+ <description>Static binding to show current battery status.</description>
+ </key>
+
+ <key name="rfkill-static" type="as">
+ <default>['XF86WLAN', 'XF86UWB', 'XF86RFKill']</default>
+ <summary>RF kill</summary>
+ <description>Static binding to toggle airplane mode.</description>
+ </key>
+ <key name="rfkill-bluetooth-static" type="as">
+ <default>['XF86Bluetooth']</default>
+ <summary>Bluetooth RF kill</summary>
+ <description>Static binding to toggle bluetooth airplane mode.</description>
+ </key>
+
<key name="max-screencast-length" type="u">
<default>30</default>
<summary>Maximum length of screen recordings</summary>
diff --git a/plugins/media-keys/gsd-media-keys-manager.c b/plugins/media-keys/gsd-media-keys-manager.c
index 0c3f8dfe..862cb2a7 100644
--- a/plugins/media-keys/gsd-media-keys-manager.c
+++ b/plugins/media-keys/gsd-media-keys-manager.c
@@ -145,7 +145,7 @@ typedef struct {
ShellActionMode modes;
MetaKeyBindingFlags grab_flags;
const char *settings_key;
- const char *hard_coded;
+ gboolean static_setting;
char *custom_path;
char *custom_command;
GArray *accel_ids;
@@ -371,8 +371,6 @@ get_key_string (MediaKey *key)
{
if (key->settings_key != NULL)
return g_strdup_printf ("settings:%s", key->settings_key);
- else if (key->hard_coded != NULL)
- return g_strdup_printf ("fixed:%s", key->hard_coded);
else if (key->custom_path != NULL)
return g_strdup_printf ("custom:%s", key->custom_path);
else
@@ -387,11 +385,30 @@ get_bindings (GsdMediaKeysManager *manager,
GPtrArray *array;
gchar *binding;
- if (key->settings_key != NULL)
- return g_settings_get_strv (priv->settings, key->settings_key);
+ if (key->settings_key != NULL) {
+ g_autofree gchar *static_settings_key = NULL;
+ g_autofree GStrv keys = NULL;
+ g_autofree GStrv static_keys = NULL;
+ gchar **item;
+
+ if (!key->static_setting)
+ return g_settings_get_strv (priv->settings, key->settings_key);
+
+ static_settings_key = g_strconcat (key->settings_key, "-static", NULL);
+ keys = g_settings_get_strv (priv->settings, key->settings_key);
+ static_keys = g_settings_get_strv (priv->settings, static_settings_key);
+
+ array = g_ptr_array_new ();
+ /* Steals all strings from the settings */
+ for (item = keys; *item; item++)
+ g_ptr_array_add (array, *item);
+ for (item = static_keys; *item; item++)
+ g_ptr_array_add (array, *item);
+ g_ptr_array_add (array, NULL);
+
+ return (GStrv) g_ptr_array_free (array, FALSE);
+ }
- if (key->hard_coded != NULL)
- binding = g_strdup (key->hard_coded);
else if (key->custom_path != NULL) {
GSettings *settings;
@@ -938,7 +955,7 @@ add_key (GsdMediaKeysManager *manager, guint i)
key = media_key_new ();
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->static_setting = media_keys[i].static_setting;
key->modes = media_keys[i].modes;
key->grab_flags = media_keys[i].grab_flags;
diff --git a/plugins/media-keys/shortcuts-list.h b/plugins/media-keys/shortcuts-list.h
index bdcf3343..8ced72df 100644
--- a/plugins/media-keys/shortcuts-list.h
+++ b/plugins/media-keys/shortcuts-list.h
@@ -38,82 +38,71 @@
static struct {
MediaKeyType key_type;
const char *settings_key;
- const char *hard_coded;
+ gboolean static_setting;
ShellActionMode modes;
MetaKeyBindingFlags grab_flags;
} media_keys[] = {
- { TOUCHPAD_KEY, NULL,"XF86TouchpadToggle", SHELL_ACTION_MODE_ALL, META_KEY_BINDING_IGNORE_AUTOREPEAT },
- { TOUCHPAD_KEY, NULL,"<Ctrl><Super>XF86TouchpadToggle", SHELL_ACTION_MODE_ALL, META_KEY_BINDING_IGNORE_AUTOREPEAT },
- { TOUCHPAD_ON_KEY, NULL, "XF86TouchpadOn", SHELL_ACTION_MODE_ALL, META_KEY_BINDING_IGNORE_AUTOREPEAT },
- { TOUCHPAD_OFF_KEY, NULL, "XF86TouchpadOff", SHELL_ACTION_MODE_ALL, META_KEY_BINDING_IGNORE_AUTOREPEAT },
- { MUTE_KEY, "volume-mute", NULL, SHELL_ACTION_MODE_ALL, META_KEY_BINDING_IGNORE_AUTOREPEAT },
- { VOLUME_DOWN_KEY, "volume-down", NULL, SHELL_ACTION_MODE_ALL },
- { VOLUME_DOWN_KEY, NULL, "<Ctrl>XF86AudioLowerVolume", SHELL_ACTION_MODE_ALL },
- { VOLUME_UP_KEY, "volume-up", NULL, SHELL_ACTION_MODE_ALL },
- { VOLUME_UP_KEY, NULL, "<Ctrl>XF86AudioRaiseVolume", SHELL_ACTION_MODE_ALL },
- { MIC_MUTE_KEY, "mic-mute", NULL, SHELL_ACTION_MODE_ALL, META_KEY_BINDING_IGNORE_AUTOREPEAT },
- { MUTE_QUIET_KEY, NULL, "<Alt>XF86AudioMute", SHELL_ACTION_MODE_ALL, META_KEY_BINDING_IGNORE_AUTOREPEAT },
- { VOLUME_DOWN_QUIET_KEY, NULL, "<Alt>XF86AudioLowerVolume", SHELL_ACTION_MODE_ALL },
- { VOLUME_UP_QUIET_KEY, NULL, "<Alt>XF86AudioRaiseVolume", SHELL_ACTION_MODE_ALL },
- { VOLUME_DOWN_PRECISE_KEY, NULL, "<Shift>XF86AudioLowerVolume", SHELL_ACTION_MODE_ALL },
- { VOLUME_UP_PRECISE_KEY, NULL, "<Shift>XF86AudioRaiseVolume", SHELL_ACTION_MODE_ALL },
- { LOGOUT_KEY, "logout", NULL, GSD_ACTION_MODE_LAUNCHER, META_KEY_BINDING_IGNORE_AUTOREPEAT },
- { EJECT_KEY, "eject", NULL, SHELL_ACTION_MODE_ALL, META_KEY_BINDING_IGNORE_AUTOREPEAT },
- { HOME_KEY, "home", NULL, GSD_ACTION_MODE_LAUNCHER, META_KEY_BINDING_IGNORE_AUTOREPEAT },
- { MEDIA_KEY, "media", NULL, GSD_ACTION_MODE_LAUNCHER, META_KEY_BINDING_IGNORE_AUTOREPEAT },
- { CALCULATOR_KEY, "calculator", NULL, GSD_ACTION_MODE_LAUNCHER, META_KEY_BINDING_IGNORE_AUTOREPEAT },
- { SEARCH_KEY, "search", NULL, GSD_ACTION_MODE_LAUNCHER, META_KEY_BINDING_IGNORE_AUTOREPEAT },
- { EMAIL_KEY, "email", NULL, GSD_ACTION_MODE_LAUNCHER, META_KEY_BINDING_IGNORE_AUTOREPEAT },
- { CONTROL_CENTER_KEY, "control-center", NULL, GSD_ACTION_MODE_LAUNCHER, META_KEY_BINDING_IGNORE_AUTOREPEAT },
- { SCREENSAVER_KEY, "screensaver", NULL, SCREENSAVER_MODE, META_KEY_BINDING_IGNORE_AUTOREPEAT },
- { SCREENSAVER_KEY, NULL, "XF86ScreenSaver", SCREENSAVER_MODE, META_KEY_BINDING_IGNORE_AUTOREPEAT },
- { HELP_KEY, "help", NULL, GSD_ACTION_MODE_LAUNCHER, META_KEY_BINDING_IGNORE_AUTOREPEAT },
- { HELP_KEY, NULL, "<Super>F1", GSD_ACTION_MODE_LAUNCHER, META_KEY_BINDING_IGNORE_AUTOREPEAT },
- { SCREENSHOT_KEY, "screenshot", NULL, NO_LOCK_MODE, META_KEY_BINDING_IGNORE_AUTOREPEAT },
- { WINDOW_SCREENSHOT_KEY, "window-screenshot", NULL, NO_LOCK_MODE, META_KEY_BINDING_IGNORE_AUTOREPEAT },
- { AREA_SCREENSHOT_KEY, "area-screenshot", NULL, NO_LOCK_MODE, META_KEY_BINDING_IGNORE_AUTOREPEAT },
- { SCREENSHOT_CLIP_KEY, "screenshot-clip", NULL, SHELL_ACTION_MODE_ALL, META_KEY_BINDING_IGNORE_AUTOREPEAT },
- { WINDOW_SCREENSHOT_CLIP_KEY, "window-screenshot-clip", NULL, SHELL_ACTION_MODE_NORMAL, META_KEY_BINDING_IGNORE_AUTOREPEAT },
- { AREA_SCREENSHOT_CLIP_KEY, "area-screenshot-clip", NULL, SHELL_ACTION_MODE_ALL, META_KEY_BINDING_IGNORE_AUTOREPEAT },
- { SCREENCAST_KEY, "screencast", NULL, NO_LOCK_MODE, META_KEY_BINDING_IGNORE_AUTOREPEAT },
- { WWW_KEY, "www", NULL, GSD_ACTION_MODE_LAUNCHER, META_KEY_BINDING_IGNORE_AUTOREPEAT },
- { PLAY_KEY, "play", NULL, SHELL_ACTION_MODE_ALL, META_KEY_BINDING_IGNORE_AUTOREPEAT },
- { PLAY_KEY, NULL, "<Ctrl>XF86AudioPlay", SHELL_ACTION_MODE_ALL, META_KEY_BINDING_IGNORE_AUTOREPEAT },
- { PAUSE_KEY, "pause", NULL, SHELL_ACTION_MODE_ALL, META_KEY_BINDING_IGNORE_AUTOREPEAT },
- { STOP_KEY, "stop", NULL, SHELL_ACTION_MODE_ALL, META_KEY_BINDING_IGNORE_AUTOREPEAT },
- { PREVIOUS_KEY, "previous", NULL, SHELL_ACTION_MODE_ALL },
- { PREVIOUS_KEY, NULL, "<Ctrl>XF86AudioPrev", SHELL_ACTION_MODE_ALL },
- { NEXT_KEY, "next", NULL, SHELL_ACTION_MODE_ALL },
- { NEXT_KEY, NULL, "<Ctrl>XF86AudioNext", SHELL_ACTION_MODE_ALL },
- { REWIND_KEY, NULL, "XF86AudioRewind", SHELL_ACTION_MODE_ALL },
- { FORWARD_KEY, NULL, "XF86AudioForward", SHELL_ACTION_MODE_ALL },
- { REPEAT_KEY, NULL, "XF86AudioRepeat", SHELL_ACTION_MODE_ALL },
- { RANDOM_KEY, NULL, "XF86AudioRandomPlay", SHELL_ACTION_MODE_ALL },
- { ROTATE_VIDEO_LOCK_KEY, NULL, "<Super>o", SHELL_ACTION_MODE_ALL },
- { MAGNIFIER_KEY, "magnifier", NULL, SHELL_ACTION_MODE_ALL, META_KEY_BINDING_IGNORE_AUTOREPEAT },
- { SCREENREADER_KEY, "screenreader", NULL, SHELL_ACTION_MODE_ALL, META_KEY_BINDING_IGNORE_AUTOREPEAT },
- { ON_SCREEN_KEYBOARD_KEY, "on-screen-keyboard", NULL, SHELL_ACTION_MODE_ALL, META_KEY_BINDING_IGNORE_AUTOREPEAT },
- { INCREASE_TEXT_KEY, "increase-text-size", NULL, SHELL_ACTION_MODE_ALL },
- { DECREASE_TEXT_KEY, "decrease-text-size", NULL, SHELL_ACTION_MODE_ALL },
- { TOGGLE_CONTRAST_KEY, "toggle-contrast", NULL, SHELL_ACTION_MODE_ALL, META_KEY_BINDING_IGNORE_AUTOREPEAT },
- { MAGNIFIER_ZOOM_IN_KEY, "magnifier-zoom-in", NULL, SHELL_ACTION_MODE_ALL },
- { MAGNIFIER_ZOOM_OUT_KEY, "magnifier-zoom-out", NULL, SHELL_ACTION_MODE_ALL },
- { POWER_KEY, NULL, "XF86PowerOff", POWER_KEYS_MODE, META_KEY_BINDING_IGNORE_AUTOREPEAT },
+ { TOUCHPAD_KEY, "touchpad-toggle", TRUE, SHELL_ACTION_MODE_ALL, META_KEY_BINDING_IGNORE_AUTOREPEAT },
+ { TOUCHPAD_ON_KEY, "touchpad-on", TRUE, SHELL_ACTION_MODE_ALL, META_KEY_BINDING_IGNORE_AUTOREPEAT },
+ { TOUCHPAD_OFF_KEY, "touchpad-off", TRUE, SHELL_ACTION_MODE_ALL, META_KEY_BINDING_IGNORE_AUTOREPEAT },
+ { MUTE_KEY, "volume-mute", TRUE, SHELL_ACTION_MODE_ALL, META_KEY_BINDING_IGNORE_AUTOREPEAT },
+ { VOLUME_DOWN_KEY, "volume-down", TRUE, SHELL_ACTION_MODE_ALL },
+ { VOLUME_UP_KEY, "volume-up", TRUE, SHELL_ACTION_MODE_ALL },
+ { MIC_MUTE_KEY, "mic-mute", TRUE, SHELL_ACTION_MODE_ALL, META_KEY_BINDING_IGNORE_AUTOREPEAT },
+ { MUTE_QUIET_KEY, "volume-mute-quiet", TRUE, SHELL_ACTION_MODE_ALL, META_KEY_BINDING_IGNORE_AUTOREPEAT },
+ { VOLUME_DOWN_QUIET_KEY, "volume-down-quiet", TRUE, SHELL_ACTION_MODE_ALL },
+ { VOLUME_UP_QUIET_KEY, "volume-up-quiet", TRUE, SHELL_ACTION_MODE_ALL },
+ { VOLUME_DOWN_PRECISE_KEY, "volume-down-precise", TRUE, SHELL_ACTION_MODE_ALL },
+ { VOLUME_UP_PRECISE_KEY, "volume-up-precise", TRUE, SHELL_ACTION_MODE_ALL },
+ { LOGOUT_KEY, "logout", FALSE, GSD_ACTION_MODE_LAUNCHER, META_KEY_BINDING_IGNORE_AUTOREPEAT },
+ { EJECT_KEY, "eject", TRUE, SHELL_ACTION_MODE_ALL, META_KEY_BINDING_IGNORE_AUTOREPEAT },
+ { HOME_KEY, "home", TRUE, GSD_ACTION_MODE_LAUNCHER, META_KEY_BINDING_IGNORE_AUTOREPEAT },
+ { MEDIA_KEY, "media", TRUE, GSD_ACTION_MODE_LAUNCHER, META_KEY_BINDING_IGNORE_AUTOREPEAT },
+ { CALCULATOR_KEY, "calculator", TRUE, GSD_ACTION_MODE_LAUNCHER, META_KEY_BINDING_IGNORE_AUTOREPEAT },
+ { SEARCH_KEY, "search", TRUE, GSD_ACTION_MODE_LAUNCHER, META_KEY_BINDING_IGNORE_AUTOREPEAT },
+ { EMAIL_KEY, "email", TRUE, GSD_ACTION_MODE_LAUNCHER, META_KEY_BINDING_IGNORE_AUTOREPEAT },
+ { CONTROL_CENTER_KEY, "control-center", TRUE, GSD_ACTION_MODE_LAUNCHER, META_KEY_BINDING_IGNORE_AUTOREPEAT },
+ { SCREENSAVER_KEY, "screensaver", TRUE, SCREENSAVER_MODE, META_KEY_BINDING_IGNORE_AUTOREPEAT },
+ { HELP_KEY, "help", FALSE, GSD_ACTION_MODE_LAUNCHER, META_KEY_BINDING_IGNORE_AUTOREPEAT },
+ { SCREENSHOT_KEY, "screenshot", FALSE, NO_LOCK_MODE, META_KEY_BINDING_IGNORE_AUTOREPEAT },
+ { WINDOW_SCREENSHOT_KEY, "window-screenshot", FALSE, NO_LOCK_MODE, META_KEY_BINDING_IGNORE_AUTOREPEAT },
+ { AREA_SCREENSHOT_KEY, "area-screenshot", FALSE, NO_LOCK_MODE, META_KEY_BINDING_IGNORE_AUTOREPEAT },
+ { SCREENSHOT_CLIP_KEY, "screenshot-clip", FALSE, SHELL_ACTION_MODE_ALL, META_KEY_BINDING_IGNORE_AUTOREPEAT },
+ { WINDOW_SCREENSHOT_CLIP_KEY, "window-screenshot-clip", FALSE, SHELL_ACTION_MODE_NORMAL, META_KEY_BINDING_IGNORE_AUTOREPEAT },
+ { AREA_SCREENSHOT_CLIP_KEY, "area-screenshot-clip", FALSE, SHELL_ACTION_MODE_ALL, META_KEY_BINDING_IGNORE_AUTOREPEAT },
+ { SCREENCAST_KEY, "screencast", FALSE, NO_LOCK_MODE, META_KEY_BINDING_IGNORE_AUTOREPEAT },
+ { WWW_KEY, "www", TRUE, GSD_ACTION_MODE_LAUNCHER, META_KEY_BINDING_IGNORE_AUTOREPEAT },
+ { PLAY_KEY, "play", TRUE, SHELL_ACTION_MODE_ALL, META_KEY_BINDING_IGNORE_AUTOREPEAT },
+ { PAUSE_KEY, "pause", TRUE, SHELL_ACTION_MODE_ALL, META_KEY_BINDING_IGNORE_AUTOREPEAT },
+ { STOP_KEY, "stop", TRUE, SHELL_ACTION_MODE_ALL, META_KEY_BINDING_IGNORE_AUTOREPEAT },
+ { PREVIOUS_KEY, "previous", TRUE, SHELL_ACTION_MODE_ALL },
+ { NEXT_KEY, "next", TRUE, SHELL_ACTION_MODE_ALL },
+ { REWIND_KEY, "playback-rewind", TRUE, SHELL_ACTION_MODE_ALL },
+ { FORWARD_KEY, "playback-forward", TRUE, SHELL_ACTION_MODE_ALL },
+ { REPEAT_KEY, "playback-repeat", TRUE, SHELL_ACTION_MODE_ALL },
+ { RANDOM_KEY, "playback-random", TRUE, SHELL_ACTION_MODE_ALL },
+ { ROTATE_VIDEO_LOCK_KEY, "rotate-video-lock", TRUE, SHELL_ACTION_MODE_ALL },
+ { MAGNIFIER_KEY, "magnifier", FALSE, SHELL_ACTION_MODE_ALL, META_KEY_BINDING_IGNORE_AUTOREPEAT },
+ { SCREENREADER_KEY, "screenreader", FALSE, SHELL_ACTION_MODE_ALL, META_KEY_BINDING_IGNORE_AUTOREPEAT },
+ { ON_SCREEN_KEYBOARD_KEY, "on-screen-keyboard", FALSE, SHELL_ACTION_MODE_ALL, META_KEY_BINDING_IGNORE_AUTOREPEAT },
+ { INCREASE_TEXT_KEY, "increase-text-size", FALSE, SHELL_ACTION_MODE_ALL },
+ { DECREASE_TEXT_KEY, "decrease-text-size", FALSE, SHELL_ACTION_MODE_ALL },
+ { TOGGLE_CONTRAST_KEY, "toggle-contrast", FALSE, SHELL_ACTION_MODE_ALL, META_KEY_BINDING_IGNORE_AUTOREPEAT },
+ { MAGNIFIER_ZOOM_IN_KEY, "magnifier-zoom-in", FALSE, SHELL_ACTION_MODE_ALL },
+ { MAGNIFIER_ZOOM_OUT_KEY, "magnifier-zoom-out", FALSE, SHELL_ACTION_MODE_ALL },
+ { POWER_KEY, "power", TRUE, POWER_KEYS_MODE, META_KEY_BINDING_IGNORE_AUTOREPEAT },
/* the kernel / Xorg names really are like this... */
- { SLEEP_KEY, NULL, "XF86Suspend", POWER_KEYS_MODE, META_KEY_BINDING_IGNORE_AUTOREPEAT },
- { SUSPEND_KEY, NULL, "XF86Sleep", POWER_KEYS_MODE, META_KEY_BINDING_IGNORE_AUTOREPEAT },
- { HIBERNATE_KEY, NULL, "XF86Hibernate", POWER_KEYS_MODE, META_KEY_BINDING_IGNORE_AUTOREPEAT },
- { SCREEN_BRIGHTNESS_UP_KEY, NULL, "XF86MonBrightnessUp", SHELL_ACTION_MODE_ALL },
- { SCREEN_BRIGHTNESS_DOWN_KEY, NULL, "XF86MonBrightnessDown", SHELL_ACTION_MODE_ALL },
- { SCREEN_BRIGHTNESS_CYCLE_KEY, NULL, "XF86MonBrightnessCycle", SHELL_ACTION_MODE_ALL },
- { KEYBOARD_BRIGHTNESS_UP_KEY, NULL, "XF86KbdBrightnessUp", SHELL_ACTION_MODE_ALL },
- { KEYBOARD_BRIGHTNESS_DOWN_KEY, NULL, "XF86KbdBrightnessDown", SHELL_ACTION_MODE_ALL },
- { KEYBOARD_BRIGHTNESS_TOGGLE_KEY, NULL, "XF86KbdLightOnOff", SHELL_ACTION_MODE_ALL, META_KEY_BINDING_IGNORE_AUTOREPEAT },
- { BATTERY_KEY, NULL, "XF86Battery", GSD_ACTION_MODE_LAUNCHER, META_KEY_BINDING_IGNORE_AUTOREPEAT },
- { RFKILL_KEY, NULL, "XF86WLAN", GSD_ACTION_MODE_LAUNCHER, META_KEY_BINDING_IGNORE_AUTOREPEAT },
- { RFKILL_KEY, NULL, "XF86UWB", GSD_ACTION_MODE_LAUNCHER, META_KEY_BINDING_IGNORE_AUTOREPEAT },
- { RFKILL_KEY, NULL, "XF86RFKill", GSD_ACTION_MODE_LAUNCHER, META_KEY_BINDING_IGNORE_AUTOREPEAT },
- { BLUETOOTH_RFKILL_KEY, NULL, "XF86Bluetooth", GSD_ACTION_MODE_LAUNCHER, META_KEY_BINDING_IGNORE_AUTOREPEAT}
+ { SUSPEND_KEY, "suspend", TRUE, POWER_KEYS_MODE, META_KEY_BINDING_IGNORE_AUTOREPEAT },
+ { HIBERNATE_KEY, "hibernate", TRUE, POWER_KEYS_MODE, META_KEY_BINDING_IGNORE_AUTOREPEAT },
+ { SCREEN_BRIGHTNESS_UP_KEY, "screen-brightness-up", TRUE, SHELL_ACTION_MODE_ALL },
+ { SCREEN_BRIGHTNESS_DOWN_KEY, "screen-brightness-down", TRUE, SHELL_ACTION_MODE_ALL },
+ { SCREEN_BRIGHTNESS_CYCLE_KEY, "screen-brightness-cycle", TRUE, SHELL_ACTION_MODE_ALL },
+ { KEYBOARD_BRIGHTNESS_UP_KEY, "keyboard-brightness-up", TRUE, SHELL_ACTION_MODE_ALL },
+ { KEYBOARD_BRIGHTNESS_DOWN_KEY, "keyboard-brightness-down", TRUE, SHELL_ACTION_MODE_ALL },
+ { KEYBOARD_BRIGHTNESS_TOGGLE_KEY, "keyboard-brightness-toggle", TRUE, SHELL_ACTION_MODE_ALL, META_KEY_BINDING_IGNORE_AUTOREPEAT },
+ { BATTERY_KEY, "battery-status", TRUE, GSD_ACTION_MODE_LAUNCHER, META_KEY_BINDING_IGNORE_AUTOREPEAT },
+ { RFKILL_KEY, "rfkill", TRUE, GSD_ACTION_MODE_LAUNCHER, META_KEY_BINDING_IGNORE_AUTOREPEAT },
+ { BLUETOOTH_RFKILL_KEY, "rfkill-bluetooth", TRUE, GSD_ACTION_MODE_LAUNCHER, META_KEY_BINDING_IGNORE_AUTOREPEAT}
};
#undef SCREENSAVER_MODE