]> code.delx.au - spectrwm/blobdiff - spectrwm.c
Restore Num_Lock workaround.
[spectrwm] / spectrwm.c
index 056550bfb12bbf78986586ddf1bd7786cfbadf14..3809446ec3a341ae9be81b1f8ae597d2cc40e034 100644 (file)
 #include <sys/time.h>
 #include <sys/stat.h>
 #include <sys/wait.h>
+#ifdef __OSX__
+#include "queue.h"
+#else
 #include <sys/queue.h>
+#endif
 #include <sys/param.h>
 #include <sys/select.h>
 #if defined(__linux__)
@@ -239,7 +243,7 @@ uint32_t            swm_debug = 0
 #define CLEANMASK(mask)                ((mask) & (XCB_KEY_BUT_MASK_SHIFT |     \
     XCB_KEY_BUT_MASK_CONTROL | XCB_KEY_BUT_MASK_MOD_1 |                        \
     XCB_KEY_BUT_MASK_MOD_2 | XCB_KEY_BUT_MASK_MOD_3 |                  \
-    XCB_KEY_BUT_MASK_MOD_4 | XCB_KEY_BUT_MASK_MOD_5))
+    XCB_KEY_BUT_MASK_MOD_4 | XCB_KEY_BUT_MASK_MOD_5) & ~(numlockmask))
 #define BUTTONMASK             (XCB_EVENT_MASK_BUTTON_PRESS |          \
     XCB_EVENT_MASK_BUTTON_RELEASE)
 #define MOUSEMASK              (BUTTONMASK|XCB_EVENT_MASK_POINTER_MOTION)
@@ -7998,7 +8002,7 @@ grabkeys(void)
                                for (j = 0; j < LENGTH(modifiers); j++) {
                                        DNPRINTF(SWM_D_MOUSE, "grabkeys: grab, "
                                            "key: %u, modifiers: %d\n",
-                                           bp->value, bp->mod);
+                                           bp->value, bp->mod | modifiers[j]);
                                        xcb_grab_key(conn, 1,
                                            screens[k].root,
                                            bp->mod | modifiers[j],
@@ -8828,7 +8832,6 @@ setautorun(const char *selector, const char *value, int flags)
                        err(1, "setautorun: realloc");
                a.argv[argc - 1] = ap;
        }
-       free(str);
 
        if ((a.argv = realloc(a.argv, (argc + 1) * sizeof(char *))) == NULL)
                err(1, "setautorun: realloc");
@@ -8840,6 +8843,7 @@ setautorun(const char *selector, const char *value, int flags)
                _exit(1);
        }
        free(a.argv);
+       free(str);
 
        /* parent */
        p = find_pid(pid);
@@ -9634,9 +9638,10 @@ keypress(xcb_key_press_event_t *e)
 
        DNPRINTF(SWM_D_EVENT, "keypress: keysym: %u, win (x,y): %#x (%d,%d), "
            "detail: %u, time: %u, root (x,y): %#x (%d,%d), child: %#x, "
-           "state: %u, same_screen: %s\n", keysym, e->event, e->event_x,
-           e->event_y, e->detail, e->time, e->root, e->root_x, e->root_y,
-           e->child, e->state, YESNO(e->same_screen));
+           "state: %u, cleaned: %u, same_screen: %s\n", keysym, e->event,
+           e->event_x, e->event_y, e->detail, e->time, e->root, e->root_x,
+           e->root_y, e->child, e->state, CLEANMASK(e->state),
+           YESNO(e->same_screen));
 
        bp = binding_lookup(CLEANMASK(e->state), KEYBIND, keysym);
        if (bp == NULL) {