summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Thurman <tthurman@gnome.org>2008-10-22 01:02:45 +0000
committerThomas James Alexander Thurman <tthurman@src.gnome.org>2008-10-22 01:02:45 +0000
commit671b69a2512f811f9a5064cdf673fdc209eeadd5 (patch)
tree1b6fde6bb09ff1ae789e8176fa010898b66685a4
parentfd01dbaaea4b60c4cec84ddfd20eee7a696f1594 (diff)
downloadmetacity-671b69a2512f811f9a5064cdf673fdc209eeadd5.tar.gz
metacity-671b69a2512f811f9a5064cdf673fdc209eeadd5.tar.bz2
Slight transformation of the x-macros used in keybindings to make them
2008-10-22 Thomas Thurman <tthurman@gnome.org> Slight transformation of the x-macros used in keybindings to make them clearer: write handler names out in full because the old suffix system was confusing to people skim-reading, and switched the order of the last two parameters so more would generally fit on a screen. * src/core/keybindings.c, src/core/schema-bindings.c src/core/prefs.c: sympathy changes * src/core/window-bindings.h, src/core/screen-bindings.h: transformation as above svn path=/trunk/; revision=3970
-rw-r--r--ChangeLog13
-rw-r--r--src/core/keybindings.c32
-rw-r--r--src/core/prefs.c17
-rw-r--r--src/core/schema-bindings.c12
-rw-r--r--src/core/screen-bindings.h289
-rw-r--r--src/core/window-bindings.h308
6 files changed, 298 insertions, 373 deletions
diff --git a/ChangeLog b/ChangeLog
index 5671d84..a22d051 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,16 @@
+2008-10-22 Thomas Thurman <tthurman@gnome.org>
+
+ Slight transformation of the x-macros used in keybindings
+ to make them clearer: write handler names out in full
+ because the old suffix system was confusing to people
+ skim-reading, and switched the order of the last two
+ parameters so more would generally fit on a screen.
+
+ * src/core/keybindings.c, src/core/schema-bindings.c
+ src/core/prefs.c: sympathy changes
+ * src/core/window-bindings.h, src/core/screen-bindings.h:
+ transformation as above
+
2008-10-21 Christian Persch <chpe@gnome.org>
* src/Makefile.am: fix build when schemas are not installed.
diff --git a/src/core/keybindings.c b/src/core/keybindings.c
index 9fddbf5..b05fe27 100644
--- a/src/core/keybindings.c
+++ b/src/core/keybindings.c
@@ -55,25 +55,16 @@ typedef void (* MetaKeyHandlerFunc) (MetaDisplay *display,
MetaKeyBinding *binding);
/* Prototypes for handlers */
-#define item(name, suffix, param, flags, description, stroke) \
+#define keybind(name, handler, param, flags, stroke, description) \
static void \
-handle_##name (MetaDisplay *display,\
- MetaScreen *screen,\
- MetaWindow *window,\
- XEvent *event,\
- MetaKeyBinding *binding);
+handler (MetaDisplay *display,\
+ MetaScreen *screen,\
+ MetaWindow *window,\
+ XEvent *event,\
+ MetaKeyBinding *binding);
#include "window-bindings.h"
-#undef item
-
-#define item(name, suffix, param, flags, description, stroke) \
-static void \
-handle_##name (MetaDisplay *display,\
- MetaScreen *screen,\
- MetaWindow *window,\
- XEvent *event,\
- MetaKeyBinding *binding);
#include "screen-bindings.h"
-#undef item
+#undef keybind
/* These can't be bound to anything, but they are used to handle
* various other events. TODO: Possibly we should include them as event
@@ -134,11 +125,10 @@ struct _MetaKeyBinding
const MetaKeyHandler *handler;
};
+#define keybind(name, handler, param, flags, stroke, description) \
+ { #name, handler, param, flags },
static const MetaKeyHandler screen_handlers[] = {
-#define item(name, suffix, param, flags, description, stroke) \
- { #name suffix, handle_##name, param, flags },
#include "screen-bindings.h"
-#undef item
{ NULL, NULL, 0, 0 }
};
@@ -146,12 +136,10 @@ static const MetaKeyHandler window_handlers[] = {
/* TODO: Are window bindings only ever called on non-null windows?
* If so, we can remove the check from all of them.
*/
-#define item(name, suffix, param, flags, description, stroke) \
- { #name suffix, handle_##name, param, flags },
#include "window-bindings.h"
-#undef item
{ NULL, NULL, 0, 0 }
};
+#undef keybind
static void
reload_keymap (MetaDisplay *display)
diff --git a/src/core/prefs.c b/src/core/prefs.c
index 8cc0947..ab82c98 100644
--- a/src/core/prefs.c
+++ b/src/core/prefs.c
@@ -1815,8 +1815,8 @@ meta_prefs_set_num_workspaces (int n_workspaces)
#endif /* HAVE_GCONF */
}
-#define item(name, suffix, param, flags, description, stroke) \
- { #name suffix, NULL, flags & BINDING_REVERSES },
+#define keybind(name, handler, param, flags, stroke, description) \
+ { #name, NULL, flags & BINDING_REVERSES },
static MetaKeyPref screen_bindings[] = {
#include "screen-bindings.h"
{ NULL, NULL, FALSE}
@@ -1826,7 +1826,7 @@ static MetaKeyPref window_bindings[] = {
#include "window-bindings.h"
{ NULL, NULL, FALSE }
};
-#undef item
+#undef keybind
#ifndef HAVE_GCONF
typedef struct
@@ -1842,21 +1842,20 @@ typedef struct
* data and move it into code. Then the compiler would optimise away
* the problem lines.
*/
+
+#define keybind(name, handler, param, flags, stroke, description) \
+ { #name, keystroke },
+
static MetaSimpleKeyMapping screen_string_bindings[] = {
-#define item(name, suffix, param, flags, description, keystroke) \
- { #name suffix, keystroke },
#include "screen-bindings.h"
-#undef item
{ NULL, NULL }
};
static MetaSimpleKeyMapping window_string_bindings[] = {
-#define item(name, suffix, param, flags, description, keystroke) \
- { #name suffix, keystroke },
#include "window-bindings.h"
-#undef item
{ NULL, NULL }
};
+#undef keybind
#endif /* NOT HAVE_GCONF */
diff --git a/src/core/schema-bindings.c b/src/core/schema-bindings.c
index 3302801..37914a6 100644
--- a/src/core/schema-bindings.c
+++ b/src/core/schema-bindings.c
@@ -26,10 +26,6 @@
* the GConf .schemas file.
*
* FIXME: also need to make 50-metacity-desktop-key.xml
- *
- * FIXME: this actually breaks i18n because the schemas.in->schemas process
- * doesn't recognise the concatenated strings, and so we will have to do
- * them ourselves; this will need to be fixed before the next release.
*/
#include <stdio.h>
@@ -132,16 +128,16 @@ produce_bindings ()
if (!feof (metacity_schemas_in_in))
{
-#define item(name, suffix, param, flags, description, keystroke) \
+#define keybind(name, handler, param, flags, stroke, description) \
single_stanza ( \
flags & BINDING_PER_WINDOW, \
- #name suffix, \
- keystroke, \
+ #name, \
+ stroke, \
flags & BINDING_REVERSES, \
description);
#include "window-bindings.h"
#include "screen-bindings.h"
-#undef item
+#undef keybind
}
while (!feof (metacity_schemas_in_in))
diff --git a/src/core/screen-bindings.h b/src/core/screen-bindings.h
index 09fb43e..9932128 100644
--- a/src/core/screen-bindings.h
+++ b/src/core/screen-bindings.h
@@ -23,7 +23,7 @@
* A list of screen keybinding information.
*
* Each action which can have a keystroke bound to it is listed below.
- * To use this file, define "item" to be a seven-argument macro (you can
+ * To use this file, define keybind() to be a seven-argument macro (you can
* throw any of the arguments you please away), include this file,
* and then undefine the macro again.
*
@@ -46,30 +46,34 @@
* directory which will fix that, but it needs integrating into the build
* process.
*
- * The arguments to item() are:
+ * The arguments to keybind() are:
* 1) the name of the binding; a bareword identifier
* (it's fine if it happens to clash with a C reserved word)
- * 2) a string to add to the binding name to make the handler name
- * (usually the empty string)
+ * 2) the name of the function which implements it.
+ * Clearly we could have guessed this from the binding very often,
+ * but we choose to write it in full for the benefit of grep.
* 3) an integer parameter to pass to the handler
* 4) a set of boolean flags, ORed together:
* BINDING_PER_WINDOW - this is a window-based binding
- * (not used in this file)
+ * (all in window-bindings.h use this,
+ * and none in screen-bindings.h)
* BINDING_REVERSES - the binding can reverse if you hold down Shift
* BINDING_IS_REVERSED - the same, but the senses are reversed from the
* handler's point of view (let me know if I should
* explain this better)
+ * or 0 if no flag applies.
*
- * 5) a short description. Mostly, you won't use this.
- * It must be marked translatable (i.e. inside "_(...)").
- * 6) a string representing the default binding.
+ * 5) a string representing the default binding.
* If this is NULL, the action is unbound by default.
+ * Please use NULL and not "disabled".
+ * 6) a short description.
+ * It must be marked translatable (i.e. inside "_(...)").
*
* Don't try to do XML entity escaping anywhere in the strings.
*/
-#ifndef item
-#error "item () must be defined when you include screen-bindings.h"
+#ifndef keybind
+#error "keybind () must be defined when you include screen-bindings.h"
#endif
/***********************************/
@@ -81,10 +85,6 @@
#define BINDING_REVERSES 0x02
#define BINDING_IS_REVERSED 0x04
-/* FIXME: There is somewhere better for these; remove them */
-#define PANEL_MAIN_MENU -1
-#define PANEL_RUN_DIALOG -2
-
#endif /* _BINDINGS_DEFINED_CONSTANTS */
/***********************************/
@@ -92,66 +92,54 @@
/* convenience, since in this file they must always be set together */
#define REVERSES_AND_REVERSED (BINDING_REVERSES | BINDING_IS_REVERSED)
-item (switch_to_workspace, "_1", 0, 0,
- _("Switch to workspace 1"),
- NULL)
-item (switch_to_workspace, "_2", 1, 0,
- _("Switch to workspace 2"),
- NULL)
-item (switch_to_workspace, "_3", 2, 0,
- _("Switch to workspace 3"),
- NULL)
-item (switch_to_workspace, "_4", 3, 0,
- _("Switch to workspace 4"),
- NULL)
-item (switch_to_workspace, "_5", 4, 0,
- _("Switch to workspace 5"),
- NULL)
-item (switch_to_workspace, "_6", 5, 0,
- _("Switch to workspace 6"),
- NULL)
-item (switch_to_workspace, "_7", 6, 0,
- _("Switch to workspace 7"),
- NULL)
-item (switch_to_workspace, "_8", 7, 0,
- _("Switch to workspace 8"),
- NULL)
-item (switch_to_workspace, "_9", 8, 0,
- _("Switch to workspace 9"),
- NULL)
-item (switch_to_workspace, "_10", 9, 0,
- _("Switch to workspace 10"),
- NULL)
-item (switch_to_workspace, "_11", 10, 0,
- _("Switch to workspace 11"),
- NULL)
-item (switch_to_workspace, "_12", 11, 0,
- _("Switch to workspace 12"),
- NULL)
+keybind (switch_to_workspace_1, handle_switch_to_workspace, 0, 0, NULL,
+ _("Switch to workspace 1"))
+keybind (switch_to_workspace_2, handle_switch_to_workspace, 1, 0, NULL,
+ _("Switch to workspace 2"))
+keybind (switch_to_workspace_3, handle_switch_to_workspace, 2, 0, NULL,
+ _("Switch to workspace 3"))
+keybind (switch_to_workspace_4, handle_switch_to_workspace, 3, 0, NULL,
+ _("Switch to workspace 4"))
+keybind (switch_to_workspace_5, handle_switch_to_workspace, 4, 0, NULL,
+ _("Switch to workspace 5"))
+keybind (switch_to_workspace_6, handle_switch_to_workspace, 5, 0, NULL,
+ _("Switch to workspace 6"))
+keybind (switch_to_workspace_7, handle_switch_to_workspace, 6, 0, NULL,
+ _("Switch to workspace 7"))
+keybind (switch_to_workspace_8, handle_switch_to_workspace, 7, 0, NULL,
+ _("Switch to workspace 8"))
+keybind (switch_to_workspace_9, handle_switch_to_workspace, 8, 0, NULL,
+ _("Switch to workspace 9"))
+keybind (switch_to_workspace_10, handle_switch_to_workspace, 9, 0, NULL,
+ _("Switch to workspace 10"))
+keybind (switch_to_workspace_11, handle_switch_to_workspace, 10, 0, NULL,
+ _("Switch to workspace 11"))
+keybind (switch_to_workspace_12, handle_switch_to_workspace, 11, 0, NULL,
+ _("Switch to workspace 12"))
/* META_MOTION_* are negative, and so distinct from workspace numbers,
* which are always zero or positive.
* If you make use of these constants, you will need to include workspace.h
* (which you're probably using already for other reasons anyway).
- * If your definition of item() throws them away, you don't need to include
+ * If your definition of keybind() throws them away, you don't need to include
* workspace.h, of course.
*/
-item (switch_to_workspace, "_left", META_MOTION_LEFT, 0,
- _("Switch to workspace on the left of the current workspace"),
- "<Control><Alt>Left")
+keybind (switch_to_workspace_left, handle_switch_to_workspace,
+ META_MOTION_LEFT, 0, "<Control><Alt>Left",
+ _("Switch to workspace on the left of the current workspace"))
-item (switch_to_workspace, "_right", META_MOTION_RIGHT, 0,
- _("Switch to workspace on the right of the current workspace"),
- "<Control><Alt>Right")
+keybind (switch_to_workspace_right, handle_switch_to_workspace,
+ META_MOTION_RIGHT, 0, "<Control><Alt>Right",
+ _("Switch to workspace on the right of the current workspace"))
-item (switch_to_workspace, "_up", META_MOTION_UP, 0,
- _("Switch to workspace above the current workspace"),
- "<Control><Alt>Up")
+keybind (switch_to_workspace_up, handle_switch_to_workspace,
+ META_MOTION_UP, 0, "<Control><Alt>Up",
+ _("Switch to workspace above the current workspace"))
-item (switch_to_workspace, "_down", META_MOTION_DOWN, 0,
- _("Switch to workspace below the current workspace"),
- "<Control><Alt>Down")
+keybind (switch_to_workspace_down, handle_switch_to_workspace,
+ META_MOTION_DOWN, 0, "<Control><Alt>Down",
+ _("Switch to workspace below the current workspace"))
/***********************************/
@@ -160,110 +148,109 @@ item (switch_to_workspace, "_down", META_MOTION_DOWN, 0,
*
* TODO: "NORMAL" and "DOCKS" should be renamed to the same name as their
* action, for obviousness.
+ *
+ * TODO: handle_switch and handle_cycle should probably really be the
+ * same function checking a bit in the parameter for difference.
*/
-item (switch, "_group", META_TAB_LIST_GROUP, BINDING_REVERSES,
- _("Move between windows of an application, using a popup window"),
- NULL)
-item (switch, "_group_backwards", META_TAB_LIST_GROUP, REVERSES_AND_REVERSED,
+keybind (switch_group, handle_switch, META_TAB_LIST_GROUP,
+ BINDING_REVERSES, NULL,
+ _("Move between windows of an application, using a popup window"))
+keybind (switch_group_backwards, handle_switch, META_TAB_LIST_GROUP,
+ REVERSES_AND_REVERSED, NULL,
_("Move backwards between windows of an application, "
- "using a popup window"),
- NULL)
-item (switch, "_windows", META_TAB_LIST_NORMAL, BINDING_REVERSES,
- _("Move between windows, using a popup window"),
- "<Alt>Tab")
-item (switch, "_windows_backwards",META_TAB_LIST_NORMAL, REVERSES_AND_REVERSED,
- _("Move backwards between windows, using a popup window"),
- NULL)
-item (switch, "_panels", META_TAB_LIST_DOCKS, BINDING_REVERSES,
- _("Move between panels and the desktop, using a popup window"),
- "<Control><Alt>Tab")
-item (switch, "_panels_backwards", META_TAB_LIST_DOCKS, REVERSES_AND_REVERSED,
- _("Move backwards between panels and the desktop, "
- "using a popup window"),
- NULL)
-item (cycle, "_group", META_TAB_LIST_GROUP, BINDING_REVERSES,
- _("Move between windows of an application immediately"),
- "<Alt>F6")
-item (cycle, "_group_backwards", META_TAB_LIST_GROUP, REVERSES_AND_REVERSED,
- _("Move backwards between windows of an application immediately"),
- NULL)
-item (cycle, "_windows", META_TAB_LIST_NORMAL, BINDING_REVERSES,
- _("Move between windows immediately"),
- "<Alt>Escape")
-item (cycle, "_windows_backwards",META_TAB_LIST_NORMAL, REVERSES_AND_REVERSED,
- _("Move backwards between windows immediately"),
- NULL)
-item (cycle, "_panels", META_TAB_LIST_DOCKS, BINDING_REVERSES,
- _("Move between panels and the desktop immediately"),
- "<Control><Alt>Escape")
-item (cycle, "_panels_backwards", META_TAB_LIST_DOCKS, REVERSES_AND_REVERSED,
- _("Move backwards between panels and the desktop immediately"),
- NULL)
+ "using a popup window"))
+keybind (switch_windows, handle_switch, META_TAB_LIST_NORMAL,
+ BINDING_REVERSES, "<Alt>Tab",
+ _("Move between windows, using a popup window"))
+keybind (switch_windows_backwards, handle_switch, META_TAB_LIST_NORMAL,
+ REVERSES_AND_REVERSED, NULL,
+ _("Move backwards between windows, using a popup window"))
+keybind (switch_panels, handle_switch, META_TAB_LIST_DOCKS,
+ BINDING_REVERSES, "<Control><Alt>Tab",
+ _("Move between panels and the desktop, using a popup window"))
+keybind (switch_panels_backwards, handle_switch, META_TAB_LIST_DOCKS,
+ REVERSES_AND_REVERSED, NULL,
+ _("Move backwards between panels and the desktop, "
+ "using a popup window"))
+
+keybind (cycle_group, handle_cycle, META_TAB_LIST_GROUP,
+ BINDING_REVERSES, "<Alt>F6",
+ _("Move between windows of an application immediately"))
+keybind (cycle_group_backwards, handle_cycle, META_TAB_LIST_GROUP,
+ REVERSES_AND_REVERSED, NULL,
+ _("Move backwards between windows of an application immediately"))
+keybind (cycle_windows, handle_cycle, META_TAB_LIST_NORMAL,
+ BINDING_REVERSES, "<Alt>Escape",
+ _("Move between windows immediately"))
+keybind (cycle_windows_backwards, handle_cycle, META_TAB_LIST_NORMAL,
+ REVERSES_AND_REVERSED, NULL,
+ _("Move backwards between windows immediately"))
+keybind (cycle_panels, handle_cycle, META_TAB_LIST_DOCKS,
+ BINDING_REVERSES, "<Control><Alt>Escape",
+ _("Move between panels and the desktop immediately"))
+keybind (cycle_panels_backwards, handle_cycle, META_TAB_LIST_DOCKS,
+ REVERSES_AND_REVERSED, NULL,
+ _("Move backwards between panels and the desktop immediately"))
/***********************************/
-item (show_desktop, "", 0, 0,
- _("Hide all normal windows and set focus to the desktop background"),
- "<Control><Alt>d")
-item (panel, "_main_menu", META_KEYBINDING_ACTION_PANEL_MAIN_MENU, 0,
- _("Show the panel's main menu"),
- "<Alt>F1")
-item (panel, "_run_dialog", META_KEYBINDING_ACTION_PANEL_RUN_DIALOG, 0,
- _("Show the panel's \"Run Application\" dialog box"),
- "<Alt>F2")
+keybind (show_desktop, handle_show_desktop, 0, 0, "<Control><Alt>d",
+ _("Hide all normal windows and set focus to the desktop background"))
+keybind (panel_main_menu, handle_panel,
+ META_KEYBINDING_ACTION_PANEL_MAIN_MENU, 0, "<Alt>F1",
+ _("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"))
/* Yes, the param is offset by one. Historical reasons. (Maybe worth fixing
* at some point.) The description is NULL here because the stanza is
* irregularly shaped in metacity.schemas.in. This will probably be fixed
* as well.
*/
-item (run_command, "_1", 0, 0, NULL, NULL)
-item (run_command, "_2", 1, 0, NULL, NULL)
-item (run_command, "_3", 2, 0, NULL, NULL)
-item (run_command, "_4", 3, 0, NULL, NULL)
-item (run_command, "_5", 4, 0, NULL, NULL)
-item (run_command, "_6", 5, 0, NULL, NULL)
-item (run_command, "_7", 6, 0, NULL, NULL)
-item (run_command, "_8", 7, 0, NULL, NULL)
-item (run_command, "_9", 8, 0, NULL, NULL)
-item (run_command, "_10", 9, 0, NULL, NULL)
-item (run_command, "_11", 10, 0, NULL, NULL)
-item (run_command, "_12", 11, 0, NULL, NULL)
-item (run_command, "_13", 12, 0, NULL, NULL)
-item (run_command, "_14", 13, 0, NULL, NULL)
-item (run_command, "_15", 14, 0, NULL, NULL)
-item (run_command, "_16", 15, 0, NULL, NULL)
-item (run_command, "_17", 16, 0, NULL, NULL)
-item (run_command, "_18", 17, 0, NULL, NULL)
-item (run_command, "_19", 18, 0, NULL, NULL)
-item (run_command, "_20", 19, 0, NULL, NULL)
-item (run_command, "_21", 20, 0, NULL, NULL)
-item (run_command, "_22", 21, 0, NULL, NULL)
-item (run_command, "_23", 22, 0, NULL, NULL)
-item (run_command, "_24", 23, 0, NULL, NULL)
-item (run_command, "_25", 24, 0, NULL, NULL)
-item (run_command, "_26", 25, 0, NULL, NULL)
-item (run_command, "_27", 26, 0, NULL, NULL)
-item (run_command, "_28", 27, 0, NULL, NULL)
-item (run_command, "_29", 28, 0, NULL, NULL)
-item (run_command, "_30", 29, 0, NULL, NULL)
-item (run_command, "_31", 30, 0, NULL, NULL)
-item (run_command, "_32", 31, 0, NULL, NULL)
+keybind (run_command_1, handle_run_command, 0, 0, NULL, NULL)
+keybind (run_command_2, handle_run_command, 1, 0, NULL, NULL)
+keybind (run_command_3, handle_run_command, 2, 0, NULL, NULL)
+keybind (run_command_4, handle_run_command, 3, 0, NULL, NULL)
+keybind (run_command_5, handle_run_command, 4, 0, NULL, NULL)
+keybind (run_command_6, handle_run_command, 5, 0, NULL, NULL)
+keybind (run_command_7, handle_run_command, 6, 0, NULL, NULL)
+keybind (run_command_8, handle_run_command, 7, 0, NULL, NULL)
+keybind (run_command_9, handle_run_command, 8, 0, NULL, NULL)
+keybind (run_command_10, handle_run_command, 9, 0, NULL, NULL)
+keybind (run_command_11, handle_run_command, 10, 0, NULL, NULL)
+keybind (run_command_12, handle_run_command, 11, 0, NULL, NULL)
+keybind (run_command_13, handle_run_command, 12, 0, NULL, NULL)
+keybind (run_command_14, handle_run_command, 13, 0, NULL, NULL)
+keybind (run_command_15, handle_run_command, 14, 0, NULL, NULL)
+keybind (run_command_16, handle_run_command, 15, 0, NULL, NULL)
+keybind (run_command_17, handle_run_command, 16, 0, NULL, NULL)
+keybind (run_command_18, handle_run_command, 17, 0, NULL, NULL)
+keybind (run_command_19, handle_run_command, 18, 0, NULL, NULL)
+keybind (run_command_20, handle_run_command, 19, 0, NULL, NULL)
+keybind (run_command_21, handle_run_command, 20, 0, NULL, NULL)
+keybind (run_command_22, handle_run_command, 21, 0, NULL, NULL)
+keybind (run_command_23, handle_run_command, 22, 0, NULL, NULL)
+keybind (run_command_24, handle_run_command, 23, 0, NULL, NULL)
+keybind (run_command_25, handle_run_command, 24, 0, NULL, NULL)
+keybind (run_command_26, handle_run_command, 25, 0, NULL, NULL)
+keybind (run_command_27, handle_run_command, 26, 0, NULL, NULL)
+keybind (run_command_28, handle_run_command, 27, 0, NULL, NULL)
+keybind (run_command_29, handle_run_command, 28, 0, NULL, NULL)
+keybind (run_command_30, handle_run_command, 29, 0, NULL, NULL)
+keybind (run_command_31, handle_run_command, 30, 0, NULL, NULL)
+keybind (run_command_32, handle_run_command, 31, 0, NULL, NULL)
-item (run_command, "_screenshot", 32, 0,
- _("Take a screenshot"),
- "Print")
-item (run_command, "_window_screenshot", 33, 0,
- _("Take a screenshot of a window"),
- "<Alt>Print")
+keybind (run_command_screenshot, handle_run_command, 32, 0, "Print",
+ _("Take a screenshot"))
+keybind (run_command_window_screenshot, handle_run_command, 33, 0,"<Alt>Print",
+ _("Take a screenshot of a window"))
-item (run_terminal, "", 0, 0,
- _("Run a terminal"),
- NULL)
+keybind (run_terminal, handle_run_terminal, 0, 0, NULL, _("Run a terminal"))
/* No description because this is undocumented */
-item (set_spew_mark, "", 0, 0, NULL, NULL)
+keybind (set_spew_mark, handle_set_spew_mark, 0, 0, NULL, NULL)
#undef REVERSES_AND_REVERSED
diff --git a/src/core/window-bindings.h b/src/core/window-bindings.h
index f0cfcaa..ba02c63 100644
--- a/src/core/window-bindings.h
+++ b/src/core/window-bindings.h
@@ -20,51 +20,13 @@
*/
/**
- * \file A list of window keybinding information.
+ * A list of window keybinding information.
*
- * Each action which can have a keystroke bound to it is listed below.
- * To use this file, define "item" to be a six-argument macro (you can
- * throw any of the arguments you please away), include this file,
- * and then undefine the macro again.
- *
- * (If you aren't familiar with this technique, sometimes called "x-macros",
- * see DDJ of May 2001: <http://www.ddj.com/cpp/184401387>.)
- *
- * This makes it possible to keep all information about all the keybindings
- * in the same place. The only exception is the code to run when an action
- * is actually invoked; while we *could* have put that in this file, it would
- * have made debugging ridiculously difficult. Instead, each action should
- * have a corresponding static function named handle_<name>() in
- * keybindings.c.
- *
- * Currently, the GConf schemas in src/metacity.schemas also need to be
- * updated separately. There is a program called schema-bindings.c in this
- * directory which will fix that, but it needs integrating into the build
- * process.
- *
- * The arguments to item() are:
- * 1) the name of the binding; a bareword identifier
- * 2) a suffix to add to the binding name to make the handler name
- * (usually the empty string)
- * 3) an integer parameter to pass to the handler
- * 4) a set of boolean flags, ORed together.
- * This is used in *this* file for completeness, but at present
- * is not checked anywhere. We use the flag BINDING_PER_WINDOW
- * on all window-based bindings (i.e. every binding in this file).
- * 5) a short description. Mostly, you won't use this.
- * It must be marked translatable (i.e. inside "_(...)").
- * 6) a string representing the default binding.
- * If this is NULL, the action is unbound by default.
- *
- * Don't try to do XML entity escaping anywhere in the strings.
- *
- * Possible future work:
- * - merge with screen-bindings.h somehow
- * - "suffix" is confusing; write it out in full
+ * Information about how this file works is in screen-bindings.h.
*/
-#ifndef item
-#error "item () must be defined when you include window-bindings.h"
+#ifndef keybind
+#error "keybind () must be defined when you include window-bindings.h"
#endif
/***********************************/
@@ -78,158 +40,138 @@
#define BINDING_REVERSES 0x02
#define BINDING_IS_REVERSED 0x04
-/* FIXME: There is somewhere better for these; remove them */
-#define PANEL_MAIN_MENU -1
-#define PANEL_RUN_DIALOG -2
-
#endif /* _BINDINGS_DEFINED_CONSTANTS */
-item (activate_window_menu, "", 0, BINDING_PER_WINDOW,
- _("Activate the window menu"),
- "<Alt>Space")
-
-item (toggle_fullscreen, "", 0, BINDING_PER_WINDOW,
- _("Toggle fullscreen mode"),
- NULL)
-item (toggle_maximized, "", 0, BINDING_PER_WINDOW,
- _("Toggle maximization state"),
- NULL)
-item (toggle_above, "", 0, BINDING_PER_WINDOW,
- _("Toggle whether a window will always be visible over other windows"),
- NULL)
-
-item (maximize, "", 0, BINDING_PER_WINDOW,
- _("Maximize window"),
- "<Alt>F10")
-item (unmaximize, "", 0, BINDING_PER_WINDOW,
- _("Unmaximize window"),
- "<Alt>F5")
-
-item (toggle_shaded, "", 0, BINDING_PER_WINDOW,
- _("Toggle shaded state"),
- NULL)
-
-item (minimize, "", 0, BINDING_PER_WINDOW,
- _("Minimize window"),
- "<Alt>F9")
-item (close, "", 0, BINDING_PER_WINDOW,
- _("Close window"),
- "<Alt>F4")
-item (begin_move, "", 0, BINDING_PER_WINDOW,
- _("Move window"),
- "<Alt>F7")
-item (begin_resize, "", 0, BINDING_PER_WINDOW,
- _("Resize window"),
- "<Alt>F8")
-
-item (toggle_on_all_workspaces, "", 0, BINDING_PER_WINDOW,
- _("Toggle whether window is on all workspaces or just one"),
- NULL)
-
-item (move_to_workspace, "_1", 0, BINDING_PER_WINDOW,
- _("Move window to workspace 1"),
- NULL)
-item (move_to_workspace, "_2", 1, BINDING_PER_WINDOW,
- _("Move window to workspace 2"),
- NULL)
-item (move_to_workspace, "_3", 2, BINDING_PER_WINDOW,
- _("Move window to workspace 3"),
- NULL)
-item (move_to_workspace, "_4", 3, BINDING_PER_WINDOW,
- _("Move window to workspace 4"),
- NULL)
-item (move_to_workspace, "_5", 4, BINDING_PER_WINDOW,
- _("Move window to workspace 5"),
- NULL)
-item (move_to_workspace, "_6", 5, BINDING_PER_WINDOW,
- _("Move window to workspace 6"),
- NULL)
-item (move_to_workspace, "_7", 6, BINDING_PER_WINDOW,
- _("Move window to workspace 7"),
- NULL)
-item (move_to_workspace, "_8", 7, BINDING_PER_WINDOW,
- _("Move window to workspace 8"),
- NULL)
-item (move_to_workspace, "_9", 8, BINDING_PER_WINDOW,
- _("Move window to workspace 9"),
- NULL)
-item (move_to_workspace, "_10", 9, BINDING_PER_WINDOW,
- _("Move window to workspace 10"),
- NULL)
-item (move_to_workspace, "_11", 10, BINDING_PER_WINDOW,
- _("Move window to workspace 11"),
- NULL)
-item (move_to_workspace, "_12", 11, BINDING_PER_WINDOW,
- _("Move window to workspace 12"),
- NULL)
+keybind (activate_window_menu, handle_activate_window_menu, 0,
+ BINDING_PER_WINDOW, "<Alt>Space",
+ _("Activate the window menu"))
+keybind (toggle_fullscreen, handle_toggle_fullscreen, 0, BINDING_PER_WINDOW,
+ NULL,
+ _("Toggle fullscreen mode"))
+keybind (toggle_maximized, handle_toggle_maximized, 0, BINDING_PER_WINDOW, NULL,
+ _("Toggle maximization state"))
+keybind (toggle_above, handle_toggle_above, 0, BINDING_PER_WINDOW, NULL,
+ _("Toggle whether a window will always be visible over other windows"))
+keybind (maximize, handle_maximize, 0, BINDING_PER_WINDOW, "<Alt>F10",
+ _("Maximize window"))
+keybind (unmaximize, handle_unmaximize, 0, BINDING_PER_WINDOW, "<Alt>F5",
+ _("Unmaximize window"))
+keybind (toggle_shaded, handle_toggle_shaded, 0, BINDING_PER_WINDOW, NULL,
+ _("Toggle shaded state"))
+keybind (minimize, handle_minimize, 0, BINDING_PER_WINDOW, "<Alt>F9",
+ _("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",
+ _("Move window"))
+keybind (begin_resize, handle_begin_resize, 0, BINDING_PER_WINDOW, "<Alt>F8",
+ _("Resize window"))
+keybind (toggle_on_all_workspaces, handle_toggle_on_all_workspaces, 0,
+ BINDING_PER_WINDOW, NULL,
+ _("Toggle whether window is on all workspaces or just one"))
+
+keybind (move_to_workspace_1, handle_move_to_workspace, 0, BINDING_PER_WINDOW,
+ NULL,
+ _("Move window to workspace 1"))
+keybind (move_to_workspace_2, handle_move_to_workspace, 1, BINDING_PER_WINDOW,
+ NULL,
+ _("Move window to workspace 2"))
+keybind (move_to_workspace_3, handle_move_to_workspace, 2, BINDING_PER_WINDOW,
+ NULL,
+ _("Move window to workspace 3"))
+keybind (move_to_workspace_4, handle_move_to_workspace, 3, BINDING_PER_WINDOW,
+ NULL,
+ _("Move window to workspace 4"))
+keybind (move_to_workspace_5, handle_move_to_workspace, 4, BINDING_PER_WINDOW,
+ NULL,
+ _("Move window to workspace 5"))
+keybind (move_to_workspace_6, handle_move_to_workspace, 5, BINDING_PER_WINDOW,
+ NULL,
+ _("Move window to workspace 6"))
+keybind (move_to_workspace_7, handle_move_to_workspace, 6, BINDING_PER_WINDOW,
+ NULL,
+ _("Move window to workspace 7"))
+keybind (move_to_workspace_8, handle_move_to_workspace, 7, BINDING_PER_WINDOW,
+ NULL,
+ _("Move window to workspace 8"))
+keybind (move_to_workspace_9, handle_move_to_workspace, 8, BINDING_PER_WINDOW,
+ NULL,
+ _("Move window to workspace 9"))
+keybind (move_to_workspace_10, handle_move_to_workspace, 9, BINDING_PER_WINDOW,
+ NULL,
+ _("Move window to workspace 10"))
+keybind (move_to_workspace_11, handle_move_to_workspace, 10, BINDING_PER_WINDOW,
+ NULL,
+ _("Move window to workspace 11"))
+keybind (move_to_workspace_12, handle_move_to_workspace, 11, BINDING_PER_WINDOW,
+ NULL,
+ _("Move window to workspace 12"))
/* META_MOTION_* are negative, and so distinct from workspace numbers,
* which are always zero or positive.
* If you make use of these constants, you will need to include workspace.h
* (which you're probably using already for other reasons anyway).
- * If your definition of item() throws them away, you don't need to include
+ * If your definition of keybind() throws them away, you don't need to include
* workspace.h, of course.
*/
-item (move_to_workspace, "_left", META_MOTION_LEFT, BINDING_PER_WINDOW,
- _("Move window one workspace to the left"),
- "<Control><Shift><Alt>Left")
-item (move_to_workspace, "_right", META_MOTION_RIGHT, BINDING_PER_WINDOW,
- _("Move window one workspace to the right"),
- "<Control><Shift><Alt>Right")
-item (move_to_workspace, "_up", META_MOTION_UP, BINDING_PER_WINDOW,
- _("Move window one workspace up"),
- "<Control><Shift><Alt>Up")
-item (move_to_workspace, "_down", META_MOTION_DOWN, BINDING_PER_WINDOW,
- _("Move window one workspace down"),
- "<Control><Shift><Alt>Down")
-
-item (raise_or_lower, "", 0, BINDING_PER_WINDOW,
- _("Raise window if it's covered by another window, otherwise lower it"),
- NULL)
-item (raise, "", 0, BINDING_PER_WINDOW,
- _("Raise window above other windows"),
- NULL)
-item (lower, "", 0, BINDING_PER_WINDOW,
- _("Lower window below other windows"),
- NULL)
-
-item (maximize_vertically, "", 0, BINDING_PER_WINDOW,
- _("Maximize window vertically"),
- NULL)
-item (maximize_horizontally, "", 0, BINDING_PER_WINDOW,
- _("Maximize window horizontally"),
- NULL)
-
-item (move_to_corner_nw, "", 0, BINDING_PER_WINDOW,
- _("Move window to north-west (top left) corner"),
- NULL)
-item (move_to_corner_ne, "", 0, BINDING_PER_WINDOW,
- _("Move window to north-east (top right) corner"),
- NULL)
-item (move_to_corner_sw, "", 0, BINDING_PER_WINDOW,
- _("Move window to south-west (bottom left) corner"),
- NULL)
-item (move_to_corner_se, "", 0, BINDING_PER_WINDOW,
- _("Move window to south-east (bottom right) corner"),
- NULL)
-
-item (move_to_side_n, "", 0, BINDING_PER_WINDOW,
- _("Move window to north (top) side of screen"),
- NULL)
-item (move_to_side_s, "", 0, BINDING_PER_WINDOW,
- _("Move window to south (bottom) side of screen"),
- NULL)
-item (move_to_side_e, "", 0, BINDING_PER_WINDOW,
- _("Move window to east (right) side of screen"),
- NULL)
-item (move_to_side_w, "", 0, BINDING_PER_WINDOW,
- _("Move window to west (left) side of screen"),
- NULL)
-item (move_to_center, "", 0, BINDING_PER_WINDOW,
- _("Move window to center of screen"),
- NULL)
+keybind (move_to_workspace_left, handle_move_to_workspace,
+ META_MOTION_LEFT, BINDING_PER_WINDOW, "<Control><Shift><Alt>Left",
+ _("Move window one workspace to the left"))
+keybind (move_to_workspace_right, handle_move_to_workspace,
+ META_MOTION_RIGHT, BINDING_PER_WINDOW, "<Control><Shift><Alt>Right",
+ _("Move window one workspace to the right"))
+keybind (move_to_workspace_up, handle_move_to_workspace,
+ META_MOTION_UP, BINDING_PER_WINDOW, "<Control><Shift><Alt>Up",
+ _("Move window one workspace up"))
+keybind (move_to_workspace_down, handle_move_to_workspace,
+ 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,
+ _("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"))
+keybind (lower, handle_lower, 0, BINDING_PER_WINDOW, NULL,
+ _("Lower window below other windows"))
+
+keybind (maximize_vertically, handle_maximize_vertically, 0,
+ BINDING_PER_WINDOW, NULL,
+ _("Maximize window vertically"))
+
+keybind (maximize_horizontally, handle_maximize_horizontally, 0,
+ BINDING_PER_WINDOW, NULL,
+ _("Maximize window horizontally"))
+
+keybind (move_to_corner_nw, handle_move_to_corner_nw, 0,
+ BINDING_PER_WINDOW, NULL,
+ _("Move window to north-west (top left) corner"))
+keybind (move_to_corner_ne, handle_move_to_corner_ne, 0,
+ BINDING_PER_WINDOW, NULL,
+ _("Move window to north-east (top right) corner"))
+keybind (move_to_corner_sw, handle_move_to_corner_sw, 0,
+ BINDING_PER_WINDOW, NULL,
+ _("Move window to south-west (bottom left) corner"))
+keybind (move_to_corner_nw, handle_move_to_corner_se, 0,
+ BINDING_PER_WINDOW, NULL,
+ _("Move window to south-east (bottom right) corner"))
+
+keybind (move_to_side_n, handle_move_to_side_n, 0,
+ BINDING_PER_WINDOW, NULL,
+ _("Move window to north (top) side of screen"))
+keybind (move_to_side_s, handle_move_to_side_s, 0,
+ BINDING_PER_WINDOW, NULL,
+ _("Move window to south (bottom) side of screen"))
+keybind (move_to_side_e, handle_move_to_side_e, 0,
+ BINDING_PER_WINDOW, NULL,
+ _("Move window to east (right) side of screen"))
+keybind (move_to_side_w, handle_move_to_side_w, 0,
+ BINDING_PER_WINDOW, NULL,
+ _("Move window to west (left) side of screen"))
+keybind (move_to_center, handle_move_to_center, 0,
+ BINDING_PER_WINDOW, NULL,
+ _("Move window to center of screen"))
/* eof window-bindings.h */