when tabbing backward, we are still tabbing *from* the most recently used

2003-02-22  Havoc Pennington  <hp@pobox.com>

	* src/display.c (meta_display_get_tab_next): when tabbing
	backward, we are still tabbing *from* the most recently used
	window, not from the least recently used window.

	* src/keybindings.c (struct _MetaKeyBinding): make keycode
	unsigned to match XEvent

	Patch for #84999 based on patch from Mark McLoughlin

	* src/prefs.c: add an add_shift field to MetaKeyPref to
	add shift when grabbing the given keybinding.

	* src/keybindings.c (rebuild_screen_binding_table)
	(rebuild_window_binding_table): refactor to share code,
	and honor add_shift field in MetaKeyPref
This commit is contained in:
Havoc Pennington 2003-02-22 20:31:51 +00:00 committed by Havoc Pennington
parent 8764b89942
commit fb9ad1eb13
6 changed files with 224 additions and 149 deletions

View File

@ -1,3 +1,21 @@
2003-02-22 Havoc Pennington <hp@pobox.com>
* src/display.c (meta_display_get_tab_next): when tabbing
backward, we are still tabbing *from* the most recently used
window, not from the least recently used window.
* src/keybindings.c (struct _MetaKeyBinding): make keycode
unsigned to match XEvent
Patch for #84999 based on patch from Mark McLoughlin
* src/prefs.c: add an add_shift field to MetaKeyPref to
add shift when grabbing the given keybinding.
* src/keybindings.c (rebuild_screen_binding_table)
(rebuild_window_binding_table): refactor to share code,
and honor add_shift field in MetaKeyPref
2003-02-20 Havoc Pennington <hp@redhat.com>
* src/stack.c (create_constraints): don't create constraints

View File

@ -3541,7 +3541,7 @@ meta_display_get_tab_next (MetaDisplay *display,
if (backward)
return find_tab_backward (display, type, screen, workspace,
g_list_last (display->mru_list));
display->mru_list);
else
return find_tab_forward (display, type, screen, workspace,
display->mru_list);

View File

@ -259,8 +259,8 @@ struct _MetaDisplay
int n_screen_bindings;
MetaKeyBinding *window_bindings;
int n_window_bindings;
int min_keycode;
int max_keycode;
unsigned int min_keycode;
unsigned int max_keycode;
KeySym *keymap;
int keysyms_per_keycode;
XModifierKeymap *modmap;

View File

@ -209,7 +209,7 @@ struct _MetaKeyBinding
const char *name;
KeySym keysym;
unsigned int mask;
int keycode;
unsigned int keycode;
MetaVirtualModifier modifiers;
const MetaKeyHandler *handler;
};
@ -429,7 +429,7 @@ reload_modmap (MetaDisplay *display)
/* get the key code at this point in the map,
* see if its keysym is one we're interested in
*/
int keycode = modmap->modifiermap[i];
unsigned int keycode = modmap->modifiermap[i];
if (keycode >= display->min_keycode &&
keycode <= display->max_keycode)
@ -512,7 +512,7 @@ reload_keycodes (MetaDisplay *display)
int i;
i = 0;
while (display->screen_bindings[i].keysym != None)
while (i < display->n_screen_bindings)
{
display->screen_bindings[i].keycode = XKeysymToKeycode (display->xdisplay,
display->screen_bindings[i].keysym);
@ -526,7 +526,7 @@ reload_keycodes (MetaDisplay *display)
int i;
i = 0;
while (display->window_bindings[i].keysym != None)
while (i < display->n_window_bindings)
{
display->window_bindings[i].keycode = XKeysymToKeycode (display->xdisplay,
display->window_bindings[i].keysym);
@ -547,11 +547,17 @@ reload_modifiers (MetaDisplay *display)
int i;
i = 0;
while (display->screen_bindings[i].keysym != None)
while (i < display->n_screen_bindings)
{
meta_display_devirtualize_modifiers (display,
display->screen_bindings[i].modifiers,
&display->screen_bindings[i].mask);
meta_topic (META_DEBUG_KEYBINDINGS,
" Devirtualized mods 0x%x -> 0x%x (%s)\n",
display->screen_bindings[i].modifiers,
display->screen_bindings[i].mask,
display->screen_bindings[i].name);
++i;
}
@ -562,93 +568,137 @@ reload_modifiers (MetaDisplay *display)
int i;
i = 0;
while (display->window_bindings[i].keysym != None)
while (i < display->n_window_bindings)
{
meta_display_devirtualize_modifiers (display,
display->window_bindings[i].modifiers,
&display->window_bindings[i].mask);
meta_topic (META_DEBUG_KEYBINDINGS,
" Devirtualized mods 0x%x -> 0x%x (%s)\n",
display->window_bindings[i].modifiers,
display->window_bindings[i].mask,
display->window_bindings[i].name);
++i;
}
}
}
static void
rebuild_screen_binding_table (MetaDisplay *display)
static int
count_bindings (const MetaKeyPref *prefs,
int n_prefs)
{
int i;
int count;
count = 0;
i = 0;
while (i < n_prefs)
{
if (prefs[i].keysym != None)
{
count += 1;
if (prefs[i].add_shift &&
(prefs[i].modifiers & META_VIRTUAL_SHIFT_MASK) == 0)
count += 1;
}
++i;
}
return count;
}
static void
rebuild_binding_table (MetaDisplay *display,
MetaKeyBinding **bindings_p,
int *n_bindings_p,
const MetaKeyPref *prefs,
int n_prefs)
{
const MetaKeyPref *prefs;
int n_bindings;
int src, dest;
meta_topic (META_DEBUG_KEYBINDINGS,
"Rebuilding screen binding table from preferences\n");
meta_prefs_get_screen_bindings (&prefs, &n_bindings);
g_free (display->screen_bindings);
display->screen_bindings = g_new0 (MetaKeyBinding, n_bindings);
n_bindings = count_bindings (prefs, n_prefs);
g_free (*bindings_p);
*bindings_p = g_new0 (MetaKeyBinding, n_bindings);
src = 0;
dest = 0;
while (src < n_bindings)
while (src < n_prefs)
{
if (prefs[src].keysym != None)
{
display->screen_bindings[dest].name = prefs[src].name;
display->screen_bindings[dest].keysym = prefs[src].keysym;
display->screen_bindings[dest].modifiers = prefs[src].modifiers;
display->screen_bindings[dest].mask = 0;
display->screen_bindings[dest].keycode = 0;
(*bindings_p)[dest].name = prefs[src].name;
(*bindings_p)[dest].keysym = prefs[src].keysym;
(*bindings_p)[dest].modifiers = prefs[src].modifiers;
(*bindings_p)[dest].mask = 0;
(*bindings_p)[dest].keycode = 0;
++dest;
if (prefs[src].add_shift &&
(prefs[src].modifiers & META_VIRTUAL_SHIFT_MASK) == 0)
{
meta_topic (META_DEBUG_KEYBINDINGS,
"Binding %s also needs Shift grabbed\n",
prefs[src].name);
(*bindings_p)[dest].name = prefs[src].name;
(*bindings_p)[dest].keysym = prefs[src].keysym;
(*bindings_p)[dest].modifiers = prefs[src].modifiers |
META_VIRTUAL_SHIFT_MASK;
(*bindings_p)[dest].mask = 0;
(*bindings_p)[dest].keycode = 0;
++dest;
}
}
++src;
}
display->n_screen_bindings = dest;
g_assert (dest == n_bindings);
*n_bindings_p = dest;
meta_topic (META_DEBUG_KEYBINDINGS,
"%d screen bindings in table\n",
display->n_screen_bindings);
" %d bindings in table\n",
*n_bindings_p);
}
static void
rebuild_screen_binding_table (MetaDisplay *display)
{
const MetaKeyPref *prefs;
int n_prefs;
meta_topic (META_DEBUG_KEYBINDINGS,
"Rebuilding screen binding table from preferences\n");
meta_prefs_get_screen_bindings (&prefs, &n_prefs);
rebuild_binding_table (display,
&display->screen_bindings,
&display->n_screen_bindings,
prefs, n_prefs);
}
static void
rebuild_window_binding_table (MetaDisplay *display)
{
const MetaKeyPref *prefs;
int n_bindings;
int src, dest;
int n_prefs;
meta_topic (META_DEBUG_KEYBINDINGS,
"Rebuilding window binding table from preferences\n");
meta_prefs_get_window_bindings (&prefs, &n_bindings);
g_free (display->window_bindings);
display->window_bindings = g_new0 (MetaKeyBinding, n_bindings);
src = 0;
dest = 0;
while (src < n_bindings)
{
if (prefs[src].keysym != None)
{
display->window_bindings[dest].name = prefs[src].name;
display->window_bindings[dest].keysym = prefs[src].keysym;
display->window_bindings[dest].modifiers = prefs[src].modifiers;
display->window_bindings[dest].mask = 0;
display->window_bindings[dest].keycode = 0;
++dest;
}
++src;
}
display->n_window_bindings = dest;
meta_topic (META_DEBUG_KEYBINDINGS,
"%d window bindings in table\n",
display->n_window_bindings);
meta_prefs_get_window_bindings (&prefs, &n_prefs);
rebuild_binding_table (display,
&display->window_bindings,
&display->n_window_bindings,
prefs, n_prefs);
}
static void
@ -854,7 +904,7 @@ meta_change_keygrab (MetaDisplay *display,
Window xwindow,
gboolean grab,
int keysym,
int keycode,
unsigned int keycode,
int modmask)
{
int ignored_mask;
@ -925,7 +975,7 @@ static void
meta_grab_key (MetaDisplay *display,
Window xwindow,
int keysym,
int keycode,
unsigned int keycode,
int modmask)
{
meta_change_keygrab (display, xwindow, TRUE, keysym, keycode, modmask);
@ -1422,6 +1472,11 @@ process_event (MetaKeyBinding *bindings,
{
const MetaKeyHandler *handler;
meta_topic (META_DEBUG_KEYBINDINGS,
"Binding keycode 0x%x mask 0x%x matches event 0x%x state 0x%x\n",
bindings[i].keycode, bindings[i].mask,
event->xkey.keycode, event->xkey.state);
if (bindings[i].handler)
handler = bindings[i].handler;
else

View File

@ -1338,100 +1338,100 @@ meta_prefs_set_num_workspaces (int n_workspaces)
/* Indexes must correspond to MetaKeybindingAction */
static MetaKeyPref screen_bindings[] = {
{ META_KEYBINDING_WORKSPACE_1, 0, 0 },
{ META_KEYBINDING_WORKSPACE_2, 0, 0 },
{ META_KEYBINDING_WORKSPACE_3, 0, 0 },
{ META_KEYBINDING_WORKSPACE_4, 0, 0 },
{ META_KEYBINDING_WORKSPACE_5, 0, 0 },
{ META_KEYBINDING_WORKSPACE_6, 0, 0 },
{ META_KEYBINDING_WORKSPACE_7, 0, 0 },
{ META_KEYBINDING_WORKSPACE_8, 0, 0 },
{ META_KEYBINDING_WORKSPACE_9, 0, 0 },
{ META_KEYBINDING_WORKSPACE_10, 0, 0 },
{ META_KEYBINDING_WORKSPACE_11, 0, 0 },
{ META_KEYBINDING_WORKSPACE_12, 0, 0 },
{ META_KEYBINDING_WORKSPACE_LEFT, 0, 0 },
{ META_KEYBINDING_WORKSPACE_RIGHT, 0, 0 },
{ META_KEYBINDING_WORKSPACE_UP, 0, 0 },
{ META_KEYBINDING_WORKSPACE_DOWN, 0, 0 },
{ META_KEYBINDING_SWITCH_WINDOWS, 0, 0 },
{ META_KEYBINDING_SWITCH_WINDOWS_BACKWARD, 0, 0 },
{ META_KEYBINDING_SWITCH_PANELS, 0, 0 },
{ META_KEYBINDING_SWITCH_PANELS_BACKWARD, 0, 0 },
{ META_KEYBINDING_CYCLE_WINDOWS, 0, 0 },
{ META_KEYBINDING_CYCLE_WINDOWS_BACKWARD, 0, 0 },
{ META_KEYBINDING_CYCLE_PANELS, 0, 0 },
{ META_KEYBINDING_CYCLE_PANELS_BACKWARD, 0, 0 },
{ META_KEYBINDING_SHOW_DESKTOP, 0, 0 },
{ META_KEYBINDING_COMMAND_1, 0, 0 },
{ META_KEYBINDING_COMMAND_2, 0, 0 },
{ META_KEYBINDING_COMMAND_3, 0, 0 },
{ META_KEYBINDING_COMMAND_4, 0, 0 },
{ META_KEYBINDING_COMMAND_5, 0, 0 },
{ META_KEYBINDING_COMMAND_6, 0, 0 },
{ META_KEYBINDING_COMMAND_7, 0, 0 },
{ META_KEYBINDING_COMMAND_8, 0, 0 },
{ META_KEYBINDING_COMMAND_9, 0, 0 },
{ META_KEYBINDING_COMMAND_10, 0, 0 },
{ META_KEYBINDING_COMMAND_11, 0, 0 },
{ META_KEYBINDING_COMMAND_12, 0, 0 },
{ META_KEYBINDING_COMMAND_13, 0, 0 },
{ META_KEYBINDING_COMMAND_14, 0, 0 },
{ META_KEYBINDING_COMMAND_15, 0, 0 },
{ META_KEYBINDING_COMMAND_16, 0, 0 },
{ META_KEYBINDING_COMMAND_17, 0, 0 },
{ META_KEYBINDING_COMMAND_18, 0, 0 },
{ META_KEYBINDING_COMMAND_19, 0, 0 },
{ META_KEYBINDING_COMMAND_20, 0, 0 },
{ META_KEYBINDING_COMMAND_21, 0, 0 },
{ META_KEYBINDING_COMMAND_22, 0, 0 },
{ META_KEYBINDING_COMMAND_23, 0, 0 },
{ META_KEYBINDING_COMMAND_24, 0, 0 },
{ META_KEYBINDING_COMMAND_25, 0, 0 },
{ META_KEYBINDING_COMMAND_26, 0, 0 },
{ META_KEYBINDING_COMMAND_27, 0, 0 },
{ META_KEYBINDING_COMMAND_28, 0, 0 },
{ META_KEYBINDING_COMMAND_29, 0, 0 },
{ META_KEYBINDING_COMMAND_30, 0, 0 },
{ META_KEYBINDING_COMMAND_31, 0, 0 },
{ META_KEYBINDING_COMMAND_32, 0, 0 },
{ NULL, 0, 0 }
{ META_KEYBINDING_WORKSPACE_1, 0, 0, FALSE },
{ META_KEYBINDING_WORKSPACE_2, 0, 0, FALSE },
{ META_KEYBINDING_WORKSPACE_3, 0, 0, FALSE },
{ META_KEYBINDING_WORKSPACE_4, 0, 0, FALSE },
{ META_KEYBINDING_WORKSPACE_5, 0, 0, FALSE },
{ META_KEYBINDING_WORKSPACE_6, 0, 0, FALSE },
{ META_KEYBINDING_WORKSPACE_7, 0, 0, FALSE },
{ META_KEYBINDING_WORKSPACE_8, 0, 0, FALSE },
{ META_KEYBINDING_WORKSPACE_9, 0, 0, FALSE },
{ META_KEYBINDING_WORKSPACE_10, 0, 0, FALSE },
{ META_KEYBINDING_WORKSPACE_11, 0, 0, FALSE },
{ META_KEYBINDING_WORKSPACE_12, 0, 0, FALSE },
{ META_KEYBINDING_WORKSPACE_LEFT, 0, 0, FALSE },
{ META_KEYBINDING_WORKSPACE_RIGHT, 0, 0, FALSE },
{ META_KEYBINDING_WORKSPACE_UP, 0, 0, FALSE },
{ META_KEYBINDING_WORKSPACE_DOWN, 0, 0, FALSE },
{ META_KEYBINDING_SWITCH_WINDOWS, 0, 0, TRUE },
{ META_KEYBINDING_SWITCH_WINDOWS_BACKWARD, 0, 0, TRUE },
{ META_KEYBINDING_SWITCH_PANELS, 0, 0, TRUE },
{ META_KEYBINDING_SWITCH_PANELS_BACKWARD, 0, 0, TRUE },
{ META_KEYBINDING_CYCLE_WINDOWS, 0, 0, TRUE },
{ META_KEYBINDING_CYCLE_WINDOWS_BACKWARD, 0, 0, TRUE },
{ META_KEYBINDING_CYCLE_PANELS, 0, 0, TRUE },
{ META_KEYBINDING_CYCLE_PANELS_BACKWARD, 0, 0, TRUE },
{ META_KEYBINDING_SHOW_DESKTOP, 0, 0, FALSE },
{ META_KEYBINDING_COMMAND_1, 0, 0, FALSE },
{ META_KEYBINDING_COMMAND_2, 0, 0, FALSE },
{ META_KEYBINDING_COMMAND_3, 0, 0, FALSE },
{ META_KEYBINDING_COMMAND_4, 0, 0, FALSE },
{ META_KEYBINDING_COMMAND_5, 0, 0, FALSE },
{ META_KEYBINDING_COMMAND_6, 0, 0, FALSE },
{ META_KEYBINDING_COMMAND_7, 0, 0, FALSE },
{ META_KEYBINDING_COMMAND_8, 0, 0, FALSE },
{ META_KEYBINDING_COMMAND_9, 0, 0, FALSE },
{ META_KEYBINDING_COMMAND_10, 0, 0, FALSE },
{ META_KEYBINDING_COMMAND_11, 0, 0, FALSE },
{ META_KEYBINDING_COMMAND_12, 0, 0, FALSE },
{ META_KEYBINDING_COMMAND_13, 0, 0, FALSE },
{ META_KEYBINDING_COMMAND_14, 0, 0, FALSE },
{ META_KEYBINDING_COMMAND_15, 0, 0, FALSE },
{ META_KEYBINDING_COMMAND_16, 0, 0, FALSE },
{ META_KEYBINDING_COMMAND_17, 0, 0, FALSE },
{ META_KEYBINDING_COMMAND_18, 0, 0, FALSE },
{ META_KEYBINDING_COMMAND_19, 0, 0, FALSE },
{ META_KEYBINDING_COMMAND_20, 0, 0, FALSE },
{ META_KEYBINDING_COMMAND_21, 0, 0, FALSE },
{ META_KEYBINDING_COMMAND_22, 0, 0, FALSE },
{ META_KEYBINDING_COMMAND_23, 0, 0, FALSE },
{ META_KEYBINDING_COMMAND_24, 0, 0, FALSE },
{ META_KEYBINDING_COMMAND_25, 0, 0, FALSE },
{ META_KEYBINDING_COMMAND_26, 0, 0, FALSE },
{ META_KEYBINDING_COMMAND_27, 0, 0, FALSE },
{ META_KEYBINDING_COMMAND_28, 0, 0, FALSE },
{ META_KEYBINDING_COMMAND_29, 0, 0, FALSE },
{ META_KEYBINDING_COMMAND_30, 0, 0, FALSE },
{ META_KEYBINDING_COMMAND_31, 0, 0, FALSE },
{ META_KEYBINDING_COMMAND_32, 0, 0, FALSE },
{ NULL, 0, 0, FALSE}
};
static MetaKeyPref window_bindings[] = {
{ META_KEYBINDING_WINDOW_MENU, 0, 0 },
{ META_KEYBINDING_TOGGLE_FULLSCREEN, 0, 0 },
{ META_KEYBINDING_TOGGLE_MAXIMIZE, 0, 0 },
{ META_KEYBINDING_MAXIMIZE, 0, 0 },
{ META_KEYBINDING_UNMAXIMIZE, 0, 0 },
{ META_KEYBINDING_TOGGLE_SHADE, 0, 0 },
{ META_KEYBINDING_MINIMIZE, 0, 0 },
{ META_KEYBINDING_CLOSE, 0, 0 },
{ META_KEYBINDING_BEGIN_MOVE, 0, 0 },
{ META_KEYBINDING_BEGIN_RESIZE, 0, 0 },
{ META_KEYBINDING_TOGGLE_STICKY, 0, 0 },
{ META_KEYBINDING_MOVE_WORKSPACE_1, 0, 0 },
{ META_KEYBINDING_MOVE_WORKSPACE_2, 0, 0 },
{ META_KEYBINDING_MOVE_WORKSPACE_3, 0, 0 },
{ META_KEYBINDING_MOVE_WORKSPACE_4, 0, 0 },
{ META_KEYBINDING_MOVE_WORKSPACE_5, 0, 0 },
{ META_KEYBINDING_MOVE_WORKSPACE_6, 0, 0 },
{ META_KEYBINDING_MOVE_WORKSPACE_7, 0, 0 },
{ META_KEYBINDING_MOVE_WORKSPACE_8, 0, 0 },
{ META_KEYBINDING_MOVE_WORKSPACE_9, 0, 0 },
{ META_KEYBINDING_MOVE_WORKSPACE_10, 0, 0 },
{ META_KEYBINDING_MOVE_WORKSPACE_11, 0, 0 },
{ META_KEYBINDING_MOVE_WORKSPACE_12, 0, 0 },
{ META_KEYBINDING_MOVE_WORKSPACE_LEFT, 0, 0 },
{ META_KEYBINDING_MOVE_WORKSPACE_RIGHT, 0, 0 },
{ META_KEYBINDING_MOVE_WORKSPACE_UP, 0, 0 },
{ META_KEYBINDING_MOVE_WORKSPACE_DOWN, 0, 0 },
{ META_KEYBINDING_RAISE_OR_LOWER, 0, 0 },
{ META_KEYBINDING_RAISE, 0, 0 },
{ META_KEYBINDING_LOWER, 0, 0 },
{ META_KEYBINDING_MAXIMIZE_VERTICALLY, 0, 0 },
{ META_KEYBINDING_MAXIMIZE_HORIZONTALLY, 0, 0 },
{ NULL, 0, 0 }
{ META_KEYBINDING_WINDOW_MENU, 0, 0, FALSE },
{ META_KEYBINDING_TOGGLE_FULLSCREEN, 0, 0, FALSE },
{ META_KEYBINDING_TOGGLE_MAXIMIZE, 0, 0, FALSE },
{ META_KEYBINDING_MAXIMIZE, 0, 0, FALSE },
{ META_KEYBINDING_UNMAXIMIZE, 0, 0, FALSE },
{ META_KEYBINDING_TOGGLE_SHADE, 0, 0, FALSE },
{ META_KEYBINDING_MINIMIZE, 0, 0, FALSE },
{ META_KEYBINDING_CLOSE, 0, 0, FALSE },
{ META_KEYBINDING_BEGIN_MOVE, 0, 0, FALSE },
{ META_KEYBINDING_BEGIN_RESIZE, 0, 0, FALSE },
{ META_KEYBINDING_TOGGLE_STICKY, 0, 0, FALSE },
{ META_KEYBINDING_MOVE_WORKSPACE_1, 0, 0, FALSE },
{ META_KEYBINDING_MOVE_WORKSPACE_2, 0, 0, FALSE },
{ META_KEYBINDING_MOVE_WORKSPACE_3, 0, 0, FALSE },
{ META_KEYBINDING_MOVE_WORKSPACE_4, 0, 0, FALSE },
{ META_KEYBINDING_MOVE_WORKSPACE_5, 0, 0, FALSE },
{ META_KEYBINDING_MOVE_WORKSPACE_6, 0, 0, FALSE },
{ META_KEYBINDING_MOVE_WORKSPACE_7, 0, 0, FALSE },
{ META_KEYBINDING_MOVE_WORKSPACE_8, 0, 0, FALSE },
{ META_KEYBINDING_MOVE_WORKSPACE_9, 0, 0, FALSE },
{ META_KEYBINDING_MOVE_WORKSPACE_10, 0, 0, FALSE },
{ META_KEYBINDING_MOVE_WORKSPACE_11, 0, 0, FALSE },
{ META_KEYBINDING_MOVE_WORKSPACE_12, 0, 0, FALSE },
{ META_KEYBINDING_MOVE_WORKSPACE_LEFT, 0, 0, FALSE },
{ META_KEYBINDING_MOVE_WORKSPACE_RIGHT, 0, 0, FALSE },
{ META_KEYBINDING_MOVE_WORKSPACE_UP, 0, 0, FALSE },
{ META_KEYBINDING_MOVE_WORKSPACE_DOWN, 0, 0, FALSE },
{ META_KEYBINDING_RAISE_OR_LOWER, 0, 0, FALSE },
{ META_KEYBINDING_RAISE, 0, 0, FALSE },
{ META_KEYBINDING_LOWER, 0, 0, FALSE },
{ META_KEYBINDING_MAXIMIZE_VERTICALLY, 0, 0, FALSE },
{ META_KEYBINDING_MAXIMIZE_HORIZONTALLY, 0, 0, FALSE },
{ NULL, 0, 0, FALSE }
};
static void

View File

@ -223,6 +223,8 @@ typedef struct
const char *name;
unsigned int keysym;
MetaVirtualModifier modifiers;
/* for keybindings that can have shift or not like Alt+Tab */
gboolean add_shift;
} MetaKeyPref;
void meta_prefs_get_screen_bindings (const MetaKeyPref **bindings,