Making more than one Modkey to work in keys.

This commit is contained in:
Christoph Lohmann 2013-01-26 16:00:52 +01:00
parent e784d925df
commit 0415175e10
2 changed files with 6 additions and 1 deletions

View file

@ -45,6 +45,10 @@ static Bool hidebackground = FALSE;
#define MODKEY GDK_CONTROL_MASK #define MODKEY GDK_CONTROL_MASK
/* hotkeys */ /* hotkeys */
/*
* If you use anything else but MODKEY and GDK_SHIFT_MASK, don't forget to
* edit the CLEANMASK() macro.
*/
static Key keys[] = { static Key keys[] = {
/* modifier keyval function arg Focus */ /* modifier keyval function arg Focus */
{ MODKEY|GDK_SHIFT_MASK,GDK_r, reload, { .b = TRUE } }, { MODKEY|GDK_SHIFT_MASK,GDK_r, reload, { .b = TRUE } },

3
surf.c
View file

@ -28,6 +28,7 @@
char *argv0; char *argv0;
#define LENGTH(x) (sizeof x / sizeof x[0]) #define LENGTH(x) (sizeof x / sizeof x[0])
#define CLEANMASK(mask) (mask & (MODKEY|GDK_SHIFT_MASK))
#define COOKIEJAR_TYPE (cookiejar_get_type ()) #define COOKIEJAR_TYPE (cookiejar_get_type ())
#define COOKIEJAR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), COOKIEJAR_TYPE, CookieJar)) #define COOKIEJAR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), COOKIEJAR_TYPE, CookieJar))
@ -543,7 +544,7 @@ keypress(GtkWidget* w, GdkEventKey *ev, Client *c) {
updatewinid(c); updatewinid(c);
for(i = 0; i < LENGTH(keys); i++) { for(i = 0; i < LENGTH(keys); i++) {
if(gdk_keyval_to_lower(ev->keyval) == keys[i].keyval if(gdk_keyval_to_lower(ev->keyval) == keys[i].keyval
&& (ev->state & keys[i].mod) == keys[i].mod && CLEANMASK(ev->state) == keys[i].mod
&& keys[i].func) { && keys[i].func) {
keys[i].func(c, &(keys[i].arg)); keys[i].func(c, &(keys[i].arg));
processed = TRUE; processed = TRUE;