Xinqi Bao's Git
projects
/
dmenu.git
/ diff
summary
|
log
|
commit
|
diff
|
tree
raw
|
patch
|
inline
| side by side (parent:
09813fc
)
added evil key support to dmenu
author
Anselm R. Garbe <
[email protected]
>
Thu, 11 Jan 2007 14:52:37 +0000
(15:52 +0100)
committer
Anselm R. Garbe <
[email protected]
>
Thu, 11 Jan 2007 14:52:37 +0000
(15:52 +0100)
main.c
diff
|
blob
|
history
diff --git
a/main.c
b/main.c
index
46e0b44
..
59b3a72
100644
(file)
--- a/
main.c
+++ b/
main.c
@@
-15,6
+15,8
@@
#include <X11/Xutil.h>
#include <X11/keysym.h>
#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 */
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 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 */
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;
}
}
return;
}
}
- if(
e->state
& Mod1Mask) {
+ if(
CLEANMASK(e->state)
& Mod1Mask) {
switch(ksym) {
default: return;
case XK_h:
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;
char *selbg = SELBGCOLOR;
char *selfg = SELFGCOLOR;
fd_set rd;
- int i;
+ int i
, j
;
struct timeval timeout;
Item *itm;
XEvent ev;
struct timeval timeout;
Item *itm;
XEvent ev;
+ XModifierKeymap *modmap;
XSetWindowAttributes wa;
timeout.tv_usec = 0;
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();
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);
/* style */
dc.norm[ColBG] = getcolor(normbg);
dc.norm[ColFG] = getcolor(normfg);