diff -uprN metacity-2.26.0/src/core/schema-bindings.c metacity-2.26.0-new/src/core/schema-bindings.c
--- metacity-2.26.0/src/core/schema-bindings.c 2009-02-05 09:10:05.000000000 +0800
+++ metacity-2.26.0-new/src/core/schema-bindings.c 2009-05-04 13:49:09.440307433 +0800
@@ -87,6 +87,46 @@ single_stanza (gboolean is_window, const
g_free (escaped_default_value);
}
+static void
+single_list_stanza (gboolean is_window, const char *name,
+ const char *default_value,
+ gboolean can_reverse,
+ const char *description)
+{
+ char *keybinding_type = is_window? "window": "global";
+ char *escaped_default_value, *escaped_description;
+
+ if (description==NULL)
+ return; /* it must be undocumented, so it can't go in this table */
+
+ escaped_description = g_markup_escape_text (description, -1);
+ escaped_default_value = default_value==NULL? "disabled":
+ g_markup_escape_text (default_value, -1);
+
+ fprintf (target_file, " <schema>\n");
+ fprintf (target_file, " <key>/schemas/apps/metacity/%s_keybindings/%s_list</key>\n",
+ keybinding_type, name);
+ fprintf (target_file, " <applyto>/apps/metacity/%s_keybindings/%s_list</applyto>\n",
+ keybinding_type, name);
+ fprintf (target_file, " <owner>metacity</owner>\n");
+ fprintf (target_file, " <type>list</type>\n");
+ fprintf (target_file, " <list_type>string</list_type>\n");
+ fprintf (target_file, " <default>[%s]</default>\n", escaped_default_value);
+
+ fprintf (target_file, " <locale name=\"C\">\n");
+ fprintf (target_file, " <short>%s</short>\n", description);
+ fprintf (target_file, " <long>%s</long>\n",
+ can_reverse? about_reversible_keybindings:
+ about_keybindings);
+ fprintf (target_file, " </locale>\n");
+ fprintf (target_file, " </schema>\n\n");
+
+ g_free (escaped_description);
+
+ if (default_value!=NULL)
+ g_free (escaped_default_value);
+}
+
static void produce_bindings ();
static void
@@ -130,6 +170,13 @@ produce_bindings ()
stroke, \
flags & BINDING_REVERSES, \
description);
+#define list_keybind(name, handler, param, flags, stroke, description) \
+ single_list_stanza ( \
+ flags & BINDING_PER_WINDOW, \
+ #name, \
+ stroke, \
+ flags & BINDING_REVERSES, \
+ description);
#include "all-keybindings.h"
#undef keybind
}
diff -uprN metacity-2.26.0/src/include/all-keybindings.h metacity-2.26.0-new/src/include/all-keybindings.h
--- metacity-2.26.0/src/include/all-keybindings.h 2009-02-05 09:10:04.000000000 +0800
+++ metacity-2.26.0-new/src/include/all-keybindings.h 2009-05-04 13:54:10.708519198 +0800
@@ -68,6 +68,10 @@
#error "keybind () must be defined when you include screen-bindings.h"
#endif
+#ifndef list_keybind
+#define list_keybind keybind
+#endif
+
/***********************************/
#ifndef _BINDINGS_DEFINED_CONSTANTS
@@ -189,12 +193,20 @@ keybind (cycle_panels_backward, handl
keybind (show_desktop, handle_show_desktop, 0, 0, "<Control><Alt>d",
_("Hide all normal windows and set focus to the desktop"))
+list_keybind (show_desktop, handle_show_desktop, 0, 0, "<Mod4>d",
+ _("Hide all normal windows and set focus to the desktop"))
keybind (panel_main_menu, handle_panel,
META_KEYBINDING_ACTION_PANEL_MAIN_MENU, 0, "<Alt>F1",
_("Show the panel's main menu"))
+list_keybind (panel_main_menu, handle_panel,
+ META_KEYBINDING_ACTION_PANEL_MAIN_MENU, 0, "<Control>Escape",
+ _("Show the panel's main menu"))
keybind (panel_run_dialog, handle_panel,
META_KEYBINDING_ACTION_PANEL_RUN_DIALOG, 0, "<Alt>F2",
_("Show the panel's \"Run Application\" dialog box"))
+list_keybind (panel_run_dialog, handle_panel,
+ META_KEYBINDING_ACTION_PANEL_RUN_DIALOG, 0, "<Mod4>r",
+ _("Show the panel's \"Run Application\" dialog box"))
/* Yes, the param is offset by one. Historical reasons. (Maybe worth fixing
* at some point.) The description is NULL here because the stanza is
@@ -270,6 +282,8 @@ keybind (toggle_shaded, handle_toggle_sh
_("Toggle shaded state"))
keybind (minimize, handle_minimize, 0, BINDING_PER_WINDOW, "<Alt>F9",
_("Minimize window"))
+list_keybind (minimize, handle_minimize, 0, BINDING_PER_WINDOW, "SunOpen",
+ _("Minimize window"))
keybind (close, handle_close, 0, BINDING_PER_WINDOW, "<Alt>F4",
_("Close window"))
keybind (begin_move, handle_begin_move, 0, BINDING_PER_WINDOW, "<Alt>F7",
@@ -338,7 +338,7 @@
META_MOTION_DOWN, BINDING_PER_WINDOW, "<Control><Shift><Alt>Down",
_("Move window one workspace down"))
-keybind (raise_or_lower, handle_raise_or_lower, 0, BINDING_PER_WINDOW, NULL,
+keybind (raise_or_lower, handle_raise_or_lower, 0, BINDING_PER_WINDOW, "SunFront",
_("Raise window if it's covered by another window, otherwise lower it"))
keybind (raise, handle_raise, 0, BINDING_PER_WINDOW, NULL,
_("Raise window above other windows"))
@@ -346,7 +360,7 @@ keybind (lower, handle_lower, 0, BINDING
_("Lower window below other windows"))
keybind (maximize_vertically, handle_maximize_vertically, 0,
- BINDING_PER_WINDOW, NULL,
+ BINDING_PER_WINDOW, "<Shift><Alt>F10",
_("Maximize window vertically"))
keybind (maximize_horizontally, handle_maximize_horizontally, 0,