Hi,

this seems like a bug in surf 0.5 to me. When defining a couple of key
bindings for the same key, one with a shift mask and the other without
the mask, the commands for both bindings are executed in sequence when
I press the shift-masked key once.

For example:

My keys[]
....
    { MODKEY,               GDK_g,      spawn,      OPENHERE },
    { MODKEY|GDK_SHIFT_MASK,GDK_g,      spawn,      OPENWIN },
....

And doing some debugging  @ surf.c:366

printf("%d %d %d\n", keys[i].keyval, keys[i].mod, ev->state);   <---

I get:

103 4 5
103 5 5

Notice the condition there is:

    if(gdk_keyval_to_lower(ev->keyval) == keys[i].keyval
        && (ev->state & keys[i].mod) == keys[i].mod
        && keys[i].func)

So:

(ev->state & keys[i].mod) == keys[i].mod
(5 & 4) == 4
(5 & 5) == 5

which is true in both cases.

I don't know how this ev->state stuff works but maybe it's fine and
the problem is related to the gdk_keyval_to_lower invocation instead
(remember that I'm using the shift mask here).

Best regards
--
Carlos

Reply via email to