[gnome-settings-daemon] Add keybinding schema to enable/disable touchpad



commit 221049d0e48243b236ba6de01acf416df3dabfec
Author: Peter Hutterer <peter hutterer who-t net>
Date:   Tue Oct 27 14:39:24 2009 +1000

    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

 ...ps_gnome_settings_daemon_keybindings.schemas.in |   11 +++++++++++
 plugins/media-keys/acme.h                          |    2 ++
 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 c583ae3..c5fe47f 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 ef602fe..8ceae21 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 8e0d3dd..871a740 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:



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]