diff options
author | Peter Hutterer <peter.hutterer@who-t.net> | 2009-10-27 14:39:24 +1000 |
---|---|---|
committer | Bastien Nocera <hadess@hadess.net> | 2010-02-15 14:08:17 +0000 |
commit | 221049d0e48243b236ba6de01acf416df3dabfec (patch) | |
tree | 31296990b23b16978c57b54c74e107ed053229a8 | |
parent | e5d024d0dedcd0aabc333f6d9c147e198d315ca4 (diff) | |
download | gnome-settings-daemon-221049d0e48243b236ba6de01acf416df3dabfec.tar.gz |
Add keybinding schema to enable/disable touchpad
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
https://bugzilla.gnome.org/show_bug.cgi?id=594831
-rw-r--r-- | data/apps_gnome_settings_daemon_keybindings.schemas.in | 11 | ||||
-rw-r--r-- | plugins/media-keys/acme.h | 2 | ||||
-rw-r--r-- | plugins/media-keys/gsd-media-keys-manager.c | 14 |
3 files changed, 27 insertions, 0 deletions
diff --git a/data/apps_gnome_settings_daemon_keybindings.schemas.in b/data/apps_gnome_settings_daemon_keybindings.schemas.in index c583ae3d..c5fe47fd 100644 --- a/data/apps_gnome_settings_daemon_keybindings.schemas.in +++ b/data/apps_gnome_settings_daemon_keybindings.schemas.in @@ -3,6 +3,17 @@ <schemalist> <schema> + <key>/schemas/apps/gnome_settings_daemon/keybindings/touchpad</key> + <applyto>/apps/gnome_settings_daemon/keybindings/touchpad</applyto> + <type>string</type> + <default>XF86TouchpadToggle</default> + <locale name="C"> + <short>Toggle touchpad</short> + <long>Binding to enable or disable the touchpad.</long> + </locale> + </schema> + + <schema> <key>/schemas/apps/gnome_settings_daemon/volume_step</key> <applyto>/apps/gnome_settings_daemon/volume_step</applyto> <type>int</type> diff --git a/plugins/media-keys/acme.h b/plugins/media-keys/acme.h index ef602fe3..8ceae21f 100644 --- a/plugins/media-keys/acme.h +++ b/plugins/media-keys/acme.h @@ -27,6 +27,7 @@ #define GCONF_MISC_DIR "/apps/gnome_settings_daemon" enum { + TOUCHPAD_KEY, MUTE_KEY, VOLUME_DOWN_KEY, VOLUME_UP_KEY, @@ -53,6 +54,7 @@ static struct { const char *gconf_key; Key *key; } keys[HANDLED_KEYS] = { + { TOUCHPAD_KEY, GCONF_BINDING_DIR "/touchpad", NULL }, { MUTE_KEY, GCONF_BINDING_DIR "/volume_mute",NULL }, { VOLUME_DOWN_KEY, GCONF_BINDING_DIR "/volume_down", NULL }, { VOLUME_UP_KEY, GCONF_BINDING_DIR "/volume_up", NULL }, diff --git a/plugins/media-keys/gsd-media-keys-manager.c b/plugins/media-keys/gsd-media-keys-manager.c index 8e0d3ddb..871a740a 100644 --- a/plugins/media-keys/gsd-media-keys-manager.c +++ b/plugins/media-keys/gsd-media-keys-manager.c @@ -60,6 +60,8 @@ #define GSD_MEDIA_KEYS_DBUS_PATH GSD_DBUS_PATH "/MediaKeys" #define GSD_MEDIA_KEYS_DBUS_NAME GSD_DBUS_NAME ".MediaKeys" +#define TOUCHPAD_ENABLED_KEY "/desktop/gnome/peripherals/touchpad/touchpad_enabled" + #define VOLUME_STEP 6 /* percents for one volume button press */ #define MAX_VOLUME 65536.0 @@ -607,6 +609,15 @@ do_eject_action (GsdMediaKeysManager *manager) g_free (command); } +static void +do_touchpad_action (GsdMediaKeysManager *manager) +{ + GConfClient *client = manager->priv->conf_client; + gboolean state = gconf_client_get_bool (client, TOUCHPAD_ENABLED_KEY, NULL); + + gconf_client_set_bool (client, TOUCHPAD_ENABLED_KEY, !state, NULL); +} + #ifdef HAVE_PULSE static void update_dialog (GsdMediaKeysManager *manager, @@ -856,6 +867,9 @@ do_action (GsdMediaKeysManager *manager, char *path; switch (type) { + case TOUCHPAD_KEY: + do_touchpad_action (manager); + break; case MUTE_KEY: case VOLUME_DOWN_KEY: case VOLUME_UP_KEY: |