|
|
|
@ -15,6 +15,8 @@ |
|
|
|
|
#include <X11/Xutil.h> |
|
|
|
|
#include <X11/keysym.h> |
|
|
|
|
|
|
|
|
|
#define CLEANMASK(mask) (mask & ~(numlockmask | LockMask)) |
|
|
|
|
|
|
|
|
|
typedef struct Item Item; |
|
|
|
|
struct Item { |
|
|
|
|
Item *next; /* traverses all items */ |
|
|
|
@ -31,6 +33,7 @@ static int ret = 0; |
|
|
|
|
static int nitem = 0; |
|
|
|
|
static unsigned int cmdw = 0; |
|
|
|
|
static unsigned int promptw = 0; |
|
|
|
|
static unsigned int numlockmask = 0; |
|
|
|
|
static Bool running = True; |
|
|
|
|
static Item *allitems = NULL; /* first of all items */ |
|
|
|
|
static Item *item = NULL; /* first of pattern matching items */ |
|
|
|
@ -187,7 +190,7 @@ kpress(XKeyEvent * e) { |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
if(e->state & Mod1Mask) { |
|
|
|
|
if(CLEANMASK(e->state) & Mod1Mask) { |
|
|
|
|
switch(ksym) { |
|
|
|
|
default: return; |
|
|
|
|
case XK_h: |
|
|
|
@ -347,10 +350,11 @@ main(int argc, char *argv[]) { |
|
|
|
|
char *selbg = SELBGCOLOR; |
|
|
|
|
char *selfg = SELFGCOLOR; |
|
|
|
|
fd_set rd; |
|
|
|
|
int i; |
|
|
|
|
int i, j; |
|
|
|
|
struct timeval timeout; |
|
|
|
|
Item *itm; |
|
|
|
|
XEvent ev; |
|
|
|
|
XModifierKeymap *modmap; |
|
|
|
|
XSetWindowAttributes wa; |
|
|
|
|
|
|
|
|
|
timeout.tv_usec = 0; |
|
|
|
@ -408,6 +412,15 @@ main(int argc, char *argv[]) { |
|
|
|
|
if(select(ConnectionNumber(dpy) + 1, &rd, NULL, NULL, &timeout) < 1) |
|
|
|
|
goto UninitializedEnd; |
|
|
|
|
maxname = readstdin(); |
|
|
|
|
/* init modifier map */ |
|
|
|
|
modmap = XGetModifierMapping(dpy); |
|
|
|
|
for (i = 0; i < 8; i++) { |
|
|
|
|
for (j = 0; j < modmap->max_keypermod; j++) { |
|
|
|
|
if(modmap->modifiermap[i * modmap->max_keypermod + j] == XKeysymToKeycode(dpy, XK_Num_Lock)) |
|
|
|
|
numlockmask = (1 << i); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
XFreeModifiermap(modmap); |
|
|
|
|
/* style */ |
|
|
|
|
dc.norm[ColBG] = getcolor(normbg); |
|
|
|
|
dc.norm[ColFG] = getcolor(normfg); |
|
|
|
|