summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Hutterer <peter.hutterer@who-t.net>2009-10-27 14:39:24 +1000
committerBastien Nocera <hadess@hadess.net>2010-02-15 14:08:17 +0000
commit221049d0e48243b236ba6de01acf416df3dabfec (patch)
tree31296990b23b16978c57b54c74e107ed053229a8
parente5d024d0dedcd0aabc333f6d9c147e198d315ca4 (diff)
downloadgnome-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.in11
-rw-r--r--plugins/media-keys/acme.h2
-rw-r--r--plugins/media-keys/gsd-media-keys-manager.c14
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: