Index: capplets/keybindings/gnome-keybinding-properties.c
===================================================================
RCS file: /cvs/gnome/gnome-control-center/capplets/keybindings/gnome-keybinding-properties.c,v
retrieving revision 1.50
diff -u -p -r1.50 gnome-keybinding-properties.c
--- capplets/keybindings/gnome-keybinding-properties.c	22 May 2005 15:46:41 -0000	1.50
+++ capplets/keybindings/gnome-keybinding-properties.c	6 Aug 2005 08:14:03 -0000
@@ -133,6 +133,21 @@ const KeyListEntry metacity_key_list[] =
   { NULL }
 };
 
+const KeyListEntry run_command_key_list[] =
+{
+  { "/apps/gnome_settings_daemon/keybindings/run_command_1", ALWAYS_VISIBLE, 0 },
+  { "/apps/gnome_settings_daemon/keybindings/run_command_2", ALWAYS_VISIBLE, 0 },
+  { "/apps/gnome_settings_daemon/keybindings/run_command_3", ALWAYS_VISIBLE, 0 },
+  { "/apps/gnome_settings_daemon/keybindings/run_command_4", ALWAYS_VISIBLE, 0 },
+  { "/apps/gnome_settings_daemon/keybindings/run_command_5", ALWAYS_VISIBLE, 0 },
+  { "/apps/gnome_settings_daemon/keybindings/run_command_6", ALWAYS_VISIBLE, 0 },
+  { "/apps/gnome_settings_daemon/keybindings/run_command_7", ALWAYS_VISIBLE, 0 },
+  { "/apps/gnome_settings_daemon/keybindings/run_command_8", ALWAYS_VISIBLE, 0 },
+  { "/apps/gnome_settings_daemon/keybindings/run_command_9", ALWAYS_VISIBLE, 0 },
+  { "/apps/gnome_settings_daemon/keybindings/run_command_10", ALWAYS_VISIBLE, 0 },
+  { NULL }
+};
+
 enum
 {
   DESCRIPTION_COLUMN,
@@ -413,6 +428,60 @@ clear_old_model (GladeXML  *dialog,
   gtk_widget_set_usize (WID ("actions_swindow"), -1, -1);
 }
 
+static void
+clear_old_command_model (GladeXML  *dialog,
+                         GtkWidget *tree_view)
+{
+  GtkTreeModel *model;
+  GtkTreeModel *sort_model;
+  GtkTreeIter iter;
+  KeyEntry *key_entry;
+  gboolean valid;
+  GConfClient *client;
+
+  client = gconf_client_get_default ();
+  model = get_real_model (GTK_TREE_VIEW (tree_view));
+
+  if (model != NULL)
+    {
+      g_object_ref (model);
+
+      for (valid = gtk_tree_model_get_iter_first (model, &iter);
+           valid;
+           valid = gtk_tree_model_iter_next (model, &iter))
+        {
+          gtk_tree_model_get (model, &iter,
+                              KEYENTRY_COLUMN, &key_entry,
+                             -1);
+          if (key_entry != NULL)
+            {
+              gconf_client_notify_remove (client, key_entry->gconf_cnxn);
+              g_free (key_entry->gconf_key);
+              g_free (key_entry->description);
+              g_free (key_entry);
+            }
+        }
+      g_object_unref (model);
+    }
+  g_object_unref (client);
+
+  model = (GtkTreeModel *) gtk_list_store_new (N_COLUMNS + 1,
+                                               G_TYPE_STRING,
+                                               G_TYPE_POINTER,
+                                               G_TYPE_STRING);  
+  sort_model = gtk_tree_model_sort_new_with_model (model);
+
+  /* N_COLUMNS + 1 is just a place to stick the extra sort function */
+  gtk_tree_sortable_set_sort_func (GTK_TREE_SORTABLE (sort_model),
+                                   N_COLUMNS + 1,
+                                   keyentry_sort_func,
+                                   NULL, NULL);
+  gtk_tree_view_set_model (GTK_TREE_VIEW (tree_view), sort_model);
+
+  g_object_unref (G_OBJECT (model));
+  g_object_unref (G_OBJECT (sort_model));  
+}
+
 static gboolean
 count_rows_foreach (GtkTreeModel *model, GtkTreePath *path, GtkTreeIter *iter, gpointer data)
 {
@@ -559,9 +628,110 @@ append_keys_to_tree (GladeXML           
 }
 
 static void
+append_command_keys_to_tree (GladeXML   *dialog,
+                             const KeyListEntry *keys_list)
+{
+  GConfClient *client;
+  GtkTreeModel *model;
+  gint i;
+  
+  client = gconf_client_get_default ();
+  model = get_real_model (GTK_TREE_VIEW (WID ("command_shortcut_treeview")));
+
+  for (i = 0; keys_list[i].name != NULL; i++)
+    {
+      GConfEntry *entry;
+      GConfSchema *schema = NULL;
+      KeyEntry *key_entry;
+      GError *error = NULL;
+      GtkTreeIter iter;
+      const gchar *key_string;
+      gchar *key_value, *command_key;
+      guint key_no;
+
+      if (!should_show_key (&keys_list[i]))
+        continue;
+      key_string = keys_list[i].name;
+      entry = gconf_client_get_entry (client,
+                                      key_string,
+                                      NULL,
+                                      TRUE,
+                                      &error);
+      if (error || entry == NULL)
+        {
+          /* We don't actually want to popup a dialog - just skip this one */
+          if (error)
+            g_error_free (error);
+          continue;
+        }
+
+      if (gconf_entry_get_schema_name (entry))
+        schema = gconf_client_get_schema (client,
+                                          gconf_entry_get_schema_name (entry),
+                                          &error);
+      
+      if (error || schema == NULL)
+        {
+          /* We don't actually want to popup a dialog - just skip this one */
+          if (error)
+            g_error_free (error);
+          continue;
+        }
+
+      key_value = gconf_client_get_string (client, key_string, &error);
+      key_entry = g_new0 (KeyEntry, 1);
+      key_entry->gconf_key = g_strdup (key_string);
+      key_entry->editable = gconf_entry_get_is_writable (entry);
+      key_entry->model = model;
+      gconf_client_add_dir (client,
+                            key_string,
+                            GCONF_CLIENT_PRELOAD_ONELEVEL,
+                            NULL);
+      key_entry->gconf_cnxn = gconf_client_notify_add (client,
+						       key_string,
+						       (GConfClientNotifyFunc) &keybinding_key_changed,
+						       key_entry, NULL, NULL);
+      binding_from_string (key_value, &key_entry->keyval,
+                           &key_entry->keycode, &key_entry->mask);
+      g_free (key_value);
+      key_entry->description = g_strdup (gconf_schema_get_short_desc (schema));
+
+      /* Take command key corresponding to run_command */
+      sscanf (key_string,
+             "/apps/gnome_settings_daemon/keybindings/run_command_%d",
+             &key_no);
+      command_key = g_strdup_printf (
+             "/apps/gnome_settings_daemon/keybinding_commands/command_%d",
+             key_no);
+      key_value = gconf_client_get_string (client, command_key, &error);
+
+      gtk_list_store_append (GTK_LIST_STORE (model), &iter);
+      if (gconf_schema_get_short_desc (schema))
+        gtk_list_store_set (GTK_LIST_STORE (model), &iter,
+                            DESCRIPTION_COLUMN, key_value,
+                            KEYENTRY_COLUMN, key_entry,
+                            N_COLUMNS, command_key,
+                            -1);
+      else
+        gtk_list_store_set (GTK_LIST_STORE (model), &iter,
+                            DESCRIPTION_COLUMN, _("<Unknown Command>"),
+                            KEYENTRY_COLUMN, key_entry,
+                            N_COLUMNS, command_key,
+                            -1);
+      g_free (command_key);
+      g_free (key_value);
+      gconf_entry_free (entry);
+      gconf_schema_free (schema);
+    }
+
+  g_object_unref (client);
+}
+
+static void
 reload_key_entries (gpointer wm_name, GladeXML *dialog)
 {
   clear_old_model (dialog, WID ("shortcut_treeview"));
+  clear_old_command_model (dialog, WID ("command_shortcut_treeview"));
   
   append_keys_to_tree (dialog, _("Desktop"), desktop_key_list);
   append_keys_to_tree (dialog, _("Sound"), sounds_key_list);
@@ -570,6 +740,7 @@ reload_key_entries (gpointer wm_name, Gl
     {
       append_keys_to_tree (dialog, _("Window Management"), metacity_key_list);
     }
+  append_command_keys_to_tree (dialog, run_command_key_list);
 }
 
 static void
@@ -838,6 +1009,53 @@ cb_dialog_response (GtkWidget *widget, g
 }
 
 static void
+command_edited_cb (GtkCellRendererText *cellrenderertext,
+                   gchar *path_string,
+                   gchar *value,
+                   GtkTreeView *view)
+{
+  GConfClient *client;
+  GtkTreeIter iter;
+  GError *err = NULL;
+  GtkTreeModel *model;
+  gchar *key_string;
+
+  model = gtk_tree_view_get_model (view);
+  gtk_tree_model_get_iter_from_string (model, &iter, path_string);
+  gtk_tree_model_get (model, &iter,
+                      N_COLUMNS, &key_string,
+                      -1);
+  /* sanity check */
+  if (! key_string)
+    return;
+
+  /* set the key */
+  g_printf("%s ; %s\n", key_string, value);
+  client = gconf_client_get_default();
+  gconf_client_set_string (client,
+			   key_string,
+			   value,
+			   &err);
+  g_object_unref (G_OBJECT (client));
+
+  if (err != NULL)
+    {
+      GtkWidget *dialog;
+
+      dialog = gtk_message_dialog_new (GTK_WINDOW (gtk_widget_get_toplevel (GTK_WIDGET (view))),
+				       GTK_DIALOG_DESTROY_WITH_PARENT | GTK_DIALOG_MODAL,
+				       GTK_MESSAGE_WARNING,
+				       GTK_BUTTONS_OK,
+				       _("Error setting command in configuration database: %s\n"),
+				       err->message);
+      gtk_dialog_run (GTK_DIALOG (dialog));
+
+      gtk_widget_destroy (dialog);
+      g_error_free (err);
+    }
+}
+
+static void
 setup_dialog (GladeXML *dialog)
 {
   GConfClient *client;
@@ -849,10 +1067,10 @@ setup_dialog (GladeXML *dialog)
 
   g_signal_connect (GTK_TREE_VIEW (WID ("shortcut_treeview")),
 		    "button_press_event",
-		    G_CALLBACK (start_editing_cb), dialog),
-	g_signal_connect (GTK_TREE_VIEW (WID ("shortcut_treeview")),
-	      "row-activated",
-		    G_CALLBACK (start_editing_kb_cb), dialog),
+		    G_CALLBACK (start_editing_cb), dialog);
+  g_signal_connect (GTK_TREE_VIEW (WID ("shortcut_treeview")),
+		    "row-activated",
+		    G_CALLBACK (start_editing_kb_cb), dialog);
 		    
   column = gtk_tree_view_column_new_with_attributes (_("Action"),
 						     gtk_cell_renderer_text_new (),
@@ -870,13 +1088,13 @@ setup_dialog (GladeXML *dialog)
 
   g_signal_connect (G_OBJECT (renderer),
 		    "accel_edited",
-                    G_CALLBACK (accel_edited_callback),
-                    WID ("shortcut_treeview"));
+            G_CALLBACK (accel_edited_callback),
+            WID ("shortcut_treeview"));
 
   g_signal_connect (G_OBJECT (renderer),
 		    "accel_cleared",
-                    G_CALLBACK (accel_cleared_callback),
-                    WID ("shortcut_treeview"));
+            G_CALLBACK (accel_cleared_callback),
+            WID ("shortcut_treeview"));
 
   column = gtk_tree_view_column_new_with_attributes (_("Shortcut"), renderer, NULL);
   gtk_tree_view_column_set_cell_data_func (column, renderer, accel_set_func, NULL, NULL);
@@ -885,7 +1103,53 @@ setup_dialog (GladeXML *dialog)
   gtk_tree_view_append_column (GTK_TREE_VIEW (WID ("shortcut_treeview")), column);
   /* N_COLUMNS is just a place to stick the extra sort function */
   gtk_tree_view_column_set_sort_column_id (column, N_COLUMNS); 
+
+  /* Build command tree_view */
+  g_signal_connect (GTK_TREE_VIEW (WID ("command_shortcut_treeview")),
+		    "button_press_event",
+		    G_CALLBACK (start_editing_cb), dialog);
+  g_signal_connect (GTK_TREE_VIEW (WID ("command_shortcut_treeview")),
+		    "row-activated",
+		    G_CALLBACK (start_editing_kb_cb), dialog);
+		    
+  renderer = (GtkCellRenderer *) g_object_new (GTK_TYPE_CELL_RENDERER_TEXT,
+					       "editable", TRUE,
+					       NULL);
+  g_signal_connect (G_OBJECT (renderer),
+           "edited",
+           G_CALLBACK (command_edited_cb),
+           WID ("command_shortcut_treeview"));
+  column = gtk_tree_view_column_new_with_attributes (_("Action"), renderer,
+						     "text", DESCRIPTION_COLUMN,
+						     NULL);
+  gtk_tree_view_column_set_resizable (column, FALSE);
+
+  gtk_tree_view_append_column (GTK_TREE_VIEW (WID ("command_shortcut_treeview")), column);
+  gtk_tree_view_column_set_sort_column_id (column, DESCRIPTION_COLUMN);  
   
+  renderer = (GtkCellRenderer *) g_object_new (EGG_TYPE_CELL_RENDERER_KEYS,
+					       "editable", TRUE,
+					       "accel_mode", EGG_CELL_RENDERER_KEYS_MODE_X,
+					       NULL);
+
+  g_signal_connect (G_OBJECT (renderer),
+		    "accel_edited",
+            G_CALLBACK (accel_edited_callback),
+            WID ("command_shortcut_treeview"));
+
+  g_signal_connect (G_OBJECT (renderer),
+		    "accel_cleared",
+            G_CALLBACK (accel_cleared_callback),
+            WID ("command_shortcut_treeview"));
+
+  column = gtk_tree_view_column_new_with_attributes (_("Shortcut"), renderer, NULL);
+  gtk_tree_view_column_set_cell_data_func (column, renderer, accel_set_func, NULL, NULL);
+  gtk_tree_view_column_set_resizable (column, FALSE);
+
+  gtk_tree_view_append_column (GTK_TREE_VIEW (WID ("command_shortcut_treeview")), column);
+  /* N_COLUMNS is just a place to stick the extra sort function */
+  gtk_tree_view_column_set_sort_column_id (column, N_COLUMNS); 
+    
   gconf_client_add_dir (client, "/apps/gnome_keybinding_properties", GCONF_CLIENT_PRELOAD_ONELEVEL, NULL);
   gconf_client_add_dir (client, "/apps/metacity/general", GCONF_CLIENT_PRELOAD_ONELEVEL, NULL);
   gconf_client_notify_add (client,
Index: capplets/keybindings/gnome-keybinding-properties.glade
===================================================================
RCS file: /cvs/gnome/gnome-control-center/capplets/keybindings/gnome-keybinding-properties.glade,v
retrieving revision 1.19
diff -u -p -r1.19 gnome-keybinding-properties.glade
--- capplets/keybindings/gnome-keybinding-properties.glade	1 Jan 2005 23:18:32 -0000	1.19
+++ capplets/keybindings/gnome-keybinding-properties.glade	6 Aug 2005 08:14:03 -0000
@@ -9,8 +9,14 @@
   <property name="type">GTK_WINDOW_TOPLEVEL</property>
   <property name="window_position">GTK_WIN_POS_NONE</property>
   <property name="modal">False</property>
-  <property name="resizable">True</property>
+  <property name="resizable">False</property>
   <property name="destroy_with_parent">False</property>
+  <property name="decorated">True</property>
+  <property name="skip_taskbar_hint">False</property>
+  <property name="skip_pager_hint">False</property>
+  <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property>
+  <property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
+  <property name="focus_on_map">True</property>
   <property name="has_separator">False</property>
 
   <child internal-child="vbox">
@@ -32,6 +38,7 @@
 	      <property name="label">gtk-help</property>
 	      <property name="use_stock">True</property>
 	      <property name="relief">GTK_RELIEF_NORMAL</property>
+	      <property name="focus_on_click">True</property>
 	      <property name="response_id">-11</property>
 	    </widget>
 	  </child>
@@ -44,6 +51,7 @@
 	      <property name="label">gtk-close</property>
 	      <property name="use_stock">True</property>
 	      <property name="relief">GTK_RELIEF_NORMAL</property>
+	      <property name="focus_on_click">True</property>
 	      <property name="response_id">-7</property>
 	    </widget>
 	  </child>
@@ -86,6 +94,9 @@
 		      <property name="rules_hint">True</property>
 		      <property name="reorderable">False</property>
 		      <property name="enable_search">True</property>
+		      <property name="fixed_height_mode">False</property>
+		      <property name="hover_selection">False</property>
+		      <property name="hover_expand">False</property>
 		    </widget>
 		  </child>
 		</widget>
@@ -133,6 +144,10 @@
 		      <property name="yalign">0.5</property>
 		      <property name="xpad">0</property>
 		      <property name="ypad">0</property>
+		      <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+		      <property name="width_chars">-1</property>
+		      <property name="single_line_mode">False</property>
+		      <property name="angle">0</property>
 		    </widget>
 		    <packing>
 		      <property name="padding">0</property>
@@ -144,21 +159,73 @@
 		<packing>
 		  <property name="padding">0</property>
 		  <property name="expand">False</property>
-		  <property name="fill">True</property>
+		  <property name="fill">False</property>
+		  <property name="pack_type">GTK_PACK_END</property>
 		</packing>
 	      </child>
 	    </widget>
 	    <packing>
 	      <property name="padding">0</property>
-	      <property name="expand">True</property>
+	      <property name="expand">False</property>
 	      <property name="fill">True</property>
 	    </packing>
 	  </child>
 	</widget>
 	<packing>
 	  <property name="padding">0</property>
-	  <property name="expand">True</property>
-	  <property name="fill">True</property>
+	  <property name="expand">False</property>
+	  <property name="fill">False</property>
+	</packing>
+      </child>
+
+      <child>
+	<widget class="GtkExpander" id="expander1">
+	  <property name="visible">True</property>
+	  <property name="can_focus">True</property>
+	  <property name="expanded">True</property>
+	  <property name="spacing">0</property>
+
+	  <child>
+	    <widget class="GtkTreeView" id="command_shortcut_treeview">
+	      <property name="visible">True</property>
+	      <property name="can_focus">True</property>
+	      <property name="headers_visible">True</property>
+	      <property name="rules_hint">True</property>
+	      <property name="reorderable">False</property>
+	      <property name="enable_search">True</property>
+	      <property name="fixed_height_mode">False</property>
+	      <property name="hover_selection">False</property>
+	      <property name="hover_expand">False</property>
+	    </widget>
+	  </child>
+
+	  <child>
+	    <widget class="GtkLabel" id="label13">
+	      <property name="visible">True</property>
+	      <property name="label" translatable="yes">label13</property>
+	      <property name="use_underline">False</property>
+	      <property name="use_markup">False</property>
+	      <property name="justify">GTK_JUSTIFY_LEFT</property>
+	      <property name="wrap">False</property>
+	      <property name="selectable">False</property>
+	      <property name="xalign">0.5</property>
+	      <property name="yalign">0.5</property>
+	      <property name="xpad">0</property>
+	      <property name="ypad">0</property>
+	      <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+	      <property name="width_chars">-1</property>
+	      <property name="single_line_mode">False</property>
+	      <property name="angle">0</property>
+	    </widget>
+	    <packing>
+	      <property name="type">label_item</property>
+	    </packing>
+	  </child>
+	</widget>
+	<packing>
+	  <property name="padding">0</property>
+	  <property name="expand">False</property>
+	  <property name="fill">False</property>
 	</packing>
       </child>
     </widget>
Index: gnome-settings-daemon/gnome-settings-multimedia-keys.c
===================================================================
RCS file: /cvs/gnome/gnome-control-center/gnome-settings-daemon/gnome-settings-multimedia-keys.c,v
retrieving revision 1.14
diff -u -p -r1.14 gnome-settings-multimedia-keys.c
--- gnome-settings-daemon/gnome-settings-multimedia-keys.c	25 Jul 2005 11:55:59 -0000	1.14
+++ gnome-settings-daemon/gnome-settings-multimedia-keys.c	6 Aug 2005 08:14:05 -0000
@@ -741,6 +741,25 @@ do_brightness_action (Acme *acme, int ty
 #endif
 
 static void
+do_run_command_action (Acme *acme, int no)
+{
+	char *key, *string;
+
+	key = g_strdup_printf (
+		"/apps/gnome_settings_daemon/keybinding_commands/command_%d", 
+		no);
+	string = gconf_client_get_string (acme->conf_client, key, NULL);
+	g_free (key);
+
+	if (string == NULL)
+		return;
+
+	execute (string, FALSE);
+
+	g_free (string);
+}
+
+static void
 do_sound_action (Acme *acme, int type)
 {
 	GtkWidget *progress;
@@ -851,7 +870,10 @@ do_action (Acme *acme, int type)
 		break;
 #endif
 	default:
-		g_assert_not_reached ();
+		if (type >= RUN_COMMAND_1 && type <= RUN_COMMAND_LAST)
+			do_run_command_action (acme, type - RUN_COMMAND_0);
+		else
+			g_assert_not_reached ();
 	}
 }
 
Index: gnome-settings-daemon/actions/acme.h
===================================================================
RCS file: /cvs/gnome/gnome-control-center/gnome-settings-daemon/actions/acme.h,v
retrieving revision 1.3
diff -u -p -r1.3 acme.h
--- gnome-settings-daemon/actions/acme.h	24 Mar 2004 02:54:33 -0000	1.3
+++ gnome-settings-daemon/actions/acme.h	6 Aug 2005 08:14:08 -0000
@@ -24,6 +24,8 @@
 
 #define GCONF_BINDING_DIR "/apps/gnome_settings_daemon/keybindings"
 #define GCONF_MISC_DIR "/apps/gnome_settings_daemon"
+/* If you change this, remember to change keys[] below. */
+#define MAX_RUN_COMMAND 10
 
 enum {
 	MUTE_KEY,
@@ -42,6 +44,9 @@ enum {
 	BRIGHT_DOWN_KEY,
 	BRIGHT_UP_KEY,
 #endif
+	RUN_COMMAND_1,
+	RUN_COMMAND_0 = RUN_COMMAND_1 - 1,
+	RUN_COMMAND_LAST = RUN_COMMAND_0 + MAX_RUN_COMMAND,
 	PLAY_KEY,
 	PAUSE_KEY,
 	STOP_KEY,
@@ -77,6 +82,16 @@ static struct {
 	{ BRIGHT_DOWN_KEY, GCONF_BINDING_DIR "/brightness_down", NULL },
 	{ BRIGHT_UP_KEY, GCONF_BINDING_DIR "/brightness_up", NULL },
 #endif
+	{ RUN_COMMAND_0 + 1, GCONF_BINDING_DIR "/run_command_1", NULL },
+	{ RUN_COMMAND_0 + 2, GCONF_BINDING_DIR "/run_command_2", NULL },
+	{ RUN_COMMAND_0 + 3, GCONF_BINDING_DIR "/run_command_3", NULL },
+	{ RUN_COMMAND_0 + 4, GCONF_BINDING_DIR "/run_command_4", NULL },
+	{ RUN_COMMAND_0 + 5, GCONF_BINDING_DIR "/run_command_5", NULL },
+	{ RUN_COMMAND_0 + 6, GCONF_BINDING_DIR "/run_command_6", NULL },
+	{ RUN_COMMAND_0 + 7, GCONF_BINDING_DIR "/run_command_7", NULL },
+	{ RUN_COMMAND_0 + 8, GCONF_BINDING_DIR "/run_command_8", NULL },
+	{ RUN_COMMAND_0 + 9, GCONF_BINDING_DIR "/run_command_9", NULL },
+	{ RUN_COMMAND_0 + 10, GCONF_BINDING_DIR "/run_command_10", NULL },
 	{ PLAY_KEY, GCONF_BINDING_DIR "/play", NULL },
 	{ PAUSE_KEY, GCONF_BINDING_DIR "/pause", NULL },
 	{ STOP_KEY, GCONF_BINDING_DIR "/stop", NULL },
Index: schemas/apps_gnome_settings_daemon_keybindings.schemas.in
===================================================================
RCS file: /cvs/gnome/gnome-control-center/schemas/apps_gnome_settings_daemon_keybindings.schemas.in,v
retrieving revision 1.3
diff -u -p -r1.3 apps_gnome_settings_daemon_keybindings.schemas.in
--- schemas/apps_gnome_settings_daemon_keybindings.schemas.in	17 May 2004 17:03:38 -0000	1.3
+++ schemas/apps_gnome_settings_daemon_keybindings.schemas.in	6 Aug 2005 08:14:09 -0000
@@ -239,6 +239,169 @@
                 <long>Next track key's shortcut.</long>
             </locale>
         </schema>
+        <schema>
+            <key>/schemas/apps/gnome_settings_daemon/keybindings/run_command_1</key>
+            <applyto>/apps/gnome_settings_daemon/keybindings/run_command_1</applyto>
+            <type>string</type>
+            <default>disabled</default>
+            <locale name="C">
+                <short>Run a defined command #1</short>
+                <long>
+                    The keybinding that runs the correspondingly-numbered
+                    command in /apps/gnome_settings_daemon/keybinding_commands
+                </long>
+            </locale>
+        </schema>
 
+        <schema>
+            <key>/schemas/apps/gnome_settings_daemon/keybindings/run_command_2</key>
+            <applyto>/apps/gnome_settings_daemon/keybindings/run_command_2</applyto>
+            <type>string</type>
+            <default>disabled</default>
+            <locale name="C">
+                <short>Run a defined command #2</short>
+                <long>
+                    The keybinding that runs the correspondingly-numbered
+                    command in /apps/gnome_settings_daemon/keybinding_commands
+                </long>
+            </locale>
+        </schema>
+
+        <schema>
+            <key>/schemas/apps/gnome_settings_daemon/keybindings/run_command_3</key>
+            <applyto>/apps/gnome_settings_daemon/keybindings/run_command_3</applyto>
+            <type>string</type>
+            <default>disabled</default>
+            <locale name="C">
+                <short>Run a defined command #3</short>
+                <long>
+                    The keybinding that runs the correspondingly-numbered
+                    command in /apps/gnome_settings_daemon/keybinding_commands
+                </long>
+            </locale>
+        </schema>
+
+        <schema>
+            <key>/schemas/apps/gnome_settings_daemon/keybindings/run_command_4</key>
+            <applyto>/apps/gnome_settings_daemon/keybindings/run_command_4</applyto>
+            <type>string</type>
+            <default>disabled</default>
+            <locale name="C">
+                <short>Run a defined command #4</short>
+                <long>
+                    The keybinding that runs the correspondingly-numbered
+                    command in /apps/gnome_settings_daemon/keybinding_commands
+                </long>
+            </locale>
+        </schema>
+
+        <schema>
+            <key>/schemas/apps/gnome_settings_daemon/keybindings/run_command_5</key>
+            <applyto>/apps/gnome_settings_daemon/keybindings/run_command_5</applyto>
+            <type>string</type>
+            <default>disabled</default>
+            <locale name="C">
+                <short>Run a defined command #5</short>
+                <long>
+                    The keybinding that runs the correspondingly-numbered
+                    command in /apps/gnome_settings_daemon/keybinding_commands
+                </long>
+            </locale>
+        </schema>
+
+        <schema>
+            <key>/schemas/apps/gnome_settings_daemon/keybindings/run_command_6</key>
+            <applyto>/apps/gnome_settings_daemon/keybindings/run_command_6</applyto>
+            <type>string</type>
+            <default>disabled</default>
+            <locale name="C">
+                <short>Run a defined command #6</short>
+                <long>
+                    The keybinding that runs the correspondingly-numbered
+                    command in /apps/gnome_settings_daemon/keybinding_commands
+                </long>
+            </locale>
+        </schema>
+
+        <schema>
+            <key>/schemas/apps/gnome_settings_daemon/keybindings/run_command_7</key>
+            <applyto>/apps/gnome_settings_daemon/keybindings/run_command_7</applyto>
+            <type>string</type>
+            <default>disabled</default>
+            <locale name="C">
+                <short>Run a defined command #7</short>
+                <long>
+                    The keybinding that runs the correspondingly-numbered
+                    command in /apps/gnome_settings_daemon/keybinding_commands
+                </long>
+            </locale>
+        </schema>
+
+        <schema>
+            <key>/schemas/apps/gnome_settings_daemon/keybindings/run_command_8</key>
+            <applyto>/apps/gnome_settings_daemon/keybindings/run_command_8</applyto>
+            <type>string</type>
+            <default>disabled</default>
+            <locale name="C">
+                <short>Run a defined command #8</short>
+                <long>
+                    The keybinding that runs the correspondingly-numbered
+                    command in /apps/gnome_settings_daemon/keybinding_commands
+                </long>
+            </locale>
+        </schema>
+
+        <schema>
+            <key>/schemas/apps/gnome_settings_daemon/keybindings/run_command_9</key>
+            <applyto>/apps/gnome_settings_daemon/keybindings/run_command_9</applyto>
+            <type>string</type>
+            <default>disabled</default>
+            <locale name="C">
+                <short>Run a defined command #9</short>
+                <long>
+                    The keybinding that runs the correspondingly-numbered
+                    command in /apps/gnome_settings_daemon/keybinding_commands
+                </long>
+            </locale>
+        </schema>
+
+        <schema>
+            <key>/schemas/apps/gnome_settings_daemon/keybindings/run_command_10</key>
+            <applyto>/apps/gnome_settings_daemon/keybindings/run_command_10</applyto>
+            <type>string</type>
+            <default>disabled</default>
+            <locale name="C">
+                <short>Run a defined command #10</short>
+                <long>
+                    The keybinding that runs the correspondingly-numbered
+                    command in /apps/gnome_settings_daemon/keybinding_commands
+                </long>
+            </locale>
+        </schema>
+
+        <schema>
+            <key>/schemas/apps/gnome_settings_daemon/keybinding_commands/command</key>
+            <applyto>/apps/gnome_settings_daemon/keybinding_commands/command_1</applyto>
+            <applyto>/apps/gnome_settings_daemon/keybinding_commands/command_2</applyto>
+            <applyto>/apps/gnome_settings_daemon/keybinding_commands/command_3</applyto>
+            <applyto>/apps/gnome_settings_daemon/keybinding_commands/command_4</applyto>
+            <applyto>/apps/gnome_settings_daemon/keybinding_commands/command_5</applyto>
+            <applyto>/apps/gnome_settings_daemon/keybinding_commands/command_6</applyto>
+            <applyto>/apps/gnome_settings_daemon/keybinding_commands/command_7</applyto>
+            <applyto>/apps/gnome_settings_daemon/keybinding_commands/command_8</applyto>
+            <applyto>/apps/gnome_settings_daemon/keybinding_commands/command_9</applyto>
+            <applyto>/apps/gnome_settings_daemon/keybinding_commands/command_10</applyto>
+            <type>string</type>
+            <default></default>
+            <locale name="C">
+                <short>Commands to run in response to keybindings</short>
+                <long>
+                    The /apps/gnome_settings_daemon/keybindings/run_command_N
+                    keys define keybindings that correspond to these
+                    commands.  Pressing the keybinding for run_command_N
+                    will execute command_N.
+                </long>
+            </locale>
+        </schema>
     </schemalist>
 </gconfschemafile>
