diff --git a/data/apps_gnome_settings_daemon_keybindings.schemas.in b/data/apps_gnome_settings_daemon_keybindings.schemas.in
index ac3e312..e4d2adb 100644
--- a/data/apps_gnome_settings_daemon_keybindings.schemas.in
+++ b/data/apps_gnome_settings_daemon_keybindings.schemas.in
@@ -168,6 +168,17 @@
         </schema>
 
         <schema>
+            <key>/schemas/apps/gnome_settings_daemon/keybindings/keybinding</key>
+            <applyto>/apps/gnome_settings_daemon/keybindings/keybinding</applyto>
+            <type>string</type>
+            <default></default>
+            <locale name="C">
+                <short>Launch presentation application</short>
+                <long>Binding to launch the presentation application.</long>
+            </locale>
+        </schema>
+
+        <schema>
             <key>/schemas/apps/gnome_settings_daemon/keybindings/media</key>
             <applyto>/apps/gnome_settings_daemon/keybindings/media</applyto>
             <type>string</type>
diff --git a/plugins/media-keys/acme.h b/plugins/media-keys/acme.h
index 60f9beb..584f237 100644
--- a/plugins/media-keys/acme.h
+++ b/plugins/media-keys/acme.h
@@ -41,6 +41,7 @@ enum {
         SCREENSAVER_KEY,
         HELP_KEY,
         WWW_KEY,
+        PRESENTATION_KEY,
         PLAY_KEY,
         PAUSE_KEY,
         STOP_KEY,
@@ -68,6 +69,7 @@ static struct {
         { SCREENSAVER_KEY, GCONF_BINDING_DIR "/screensaver", NULL },
         { HELP_KEY, GCONF_BINDING_DIR "/help", NULL },
         { WWW_KEY, GCONF_BINDING_DIR "/www", NULL },
+        { PRESENTATION_KEY, GCONF_BINDING_DIR "/presentation", NULL },
         { PLAY_KEY, GCONF_BINDING_DIR "/play", NULL },
         { PAUSE_KEY, GCONF_BINDING_DIR "/pause", NULL },
         { STOP_KEY, GCONF_BINDING_DIR "/stop", NULL },
diff --git a/plugins/media-keys/gsd-media-keys-manager.c b/plugins/media-keys/gsd-media-keys-manager.c
index 3eeea71..da4ab57 100644
--- a/plugins/media-keys/gsd-media-keys-manager.c
+++ b/plugins/media-keys/gsd-media-keys-manager.c
@@ -936,6 +936,13 @@ do_action (GsdMediaKeysManager *manager,
         case WWW_KEY:
                 do_www_action (manager, NULL);
                 break;
+        case PRESENTATION_KEY:
+                cmd = NULL;
+                if ((cmd = g_find_program_in_path ("ooimpress"))) {
+                        execute (manager, "ooimpress", FALSE, FALSE);
+                }
+                g_free (cmd);
+                break;
         case MEDIA_KEY:
                 do_media_action (manager);
                 break;
