author | Anselm R. Garbe <garbeam@wmii.de> |
Tue, 11 Jul 2006 18:19:01 +0200 | |
changeset 15 | 00d4d52b231f |
parent 14 | 5c078b66347b |
permissions | -rw-r--r-- |
8 | 1 |
/* |
2 |
* (C)opyright MMVI Anselm R. Garbe <garbeam at gmail dot com> |
|
3 |
* See LICENSE file for license details. |
|
4 |
*/ |
|
5 |
||
6 |
#include "wm.h" |
|
7 |
||
8 |
#include <X11/keysym.h> |
|
9 |
||
14 | 10 |
static const char *term[] = { |
11 |
"xterm", "-u8", "-bg", "black", "-fg", "white", "-fn", |
|
12 |
"-*-terminus-medium-*-*-*-13-*-*-*-*-*-iso10646-*", 0 |
|
13 |
}; |
|
14 |
||
15 |
static const char *proglist[] = { |
|
16 |
"sh", "-c", "exec `ls -lL /bin /sbin /usr/bin /usr/local/bin 2>/dev/null | awk 'NF>2 && $1 ~ /^[^d].*x/ {print $NF}' | sort | uniq | gridmenu`", 0 |
|
17 |
}; |
|
18 |
||
8 | 19 |
static Key key[] = { |
14 | 20 |
{ Mod1Mask, XK_Return, run, term }, |
21 |
{ Mod1Mask, XK_p, run, proglist }, |
|
22 |
{ Mod1Mask | ShiftMask, XK_c, kill, NULL}, |
|
23 |
{ Mod1Mask | ShiftMask, XK_q, quit, NULL}, |
|
8 | 24 |
}; |
25 |
||
26 |
void |
|
27 |
update_keys() |
|
28 |
{ |
|
29 |
unsigned int i, len; |
|
30 |
KeyCode code; |
|
31 |
||
32 |
len = sizeof(key) / sizeof(key[0]); |
|
33 |
for(i = 0; i < len; i++) { |
|
34 |
code = XKeysymToKeycode(dpy, key[i].keysym); |
|
35 |
XUngrabKey(dpy, code, key[i].mod, root); |
|
36 |
XGrabKey(dpy, code, key[i].mod, root, True, GrabModeAsync, GrabModeAsync); |
|
37 |
} |
|
38 |
} |
|
9
d567f430a81d
fixed several stuff (gridwm gets better and better)
Anselm R. Garbe <garbeam@wmii.de>
parents:
8
diff
changeset
|
39 |
|
d567f430a81d
fixed several stuff (gridwm gets better and better)
Anselm R. Garbe <garbeam@wmii.de>
parents:
8
diff
changeset
|
40 |
void |
d567f430a81d
fixed several stuff (gridwm gets better and better)
Anselm R. Garbe <garbeam@wmii.de>
parents:
8
diff
changeset
|
41 |
keypress(XEvent *e) |
d567f430a81d
fixed several stuff (gridwm gets better and better)
Anselm R. Garbe <garbeam@wmii.de>
parents:
8
diff
changeset
|
42 |
{ |
d567f430a81d
fixed several stuff (gridwm gets better and better)
Anselm R. Garbe <garbeam@wmii.de>
parents:
8
diff
changeset
|
43 |
XKeyEvent *ev = &e->xkey; |
d567f430a81d
fixed several stuff (gridwm gets better and better)
Anselm R. Garbe <garbeam@wmii.de>
parents:
8
diff
changeset
|
44 |
unsigned int i, len; |
d567f430a81d
fixed several stuff (gridwm gets better and better)
Anselm R. Garbe <garbeam@wmii.de>
parents:
8
diff
changeset
|
45 |
KeySym keysym; |
d567f430a81d
fixed several stuff (gridwm gets better and better)
Anselm R. Garbe <garbeam@wmii.de>
parents:
8
diff
changeset
|
46 |
|
d567f430a81d
fixed several stuff (gridwm gets better and better)
Anselm R. Garbe <garbeam@wmii.de>
parents:
8
diff
changeset
|
47 |
keysym = XKeycodeToKeysym(dpy, (KeyCode)ev->keycode, 0); |
d567f430a81d
fixed several stuff (gridwm gets better and better)
Anselm R. Garbe <garbeam@wmii.de>
parents:
8
diff
changeset
|
48 |
len = sizeof(key) / sizeof(key[0]); |
d567f430a81d
fixed several stuff (gridwm gets better and better)
Anselm R. Garbe <garbeam@wmii.de>
parents:
8
diff
changeset
|
49 |
for(i = 0; i < len; i++) |
d567f430a81d
fixed several stuff (gridwm gets better and better)
Anselm R. Garbe <garbeam@wmii.de>
parents:
8
diff
changeset
|
50 |
if((keysym == key[i].keysym) && (key[i].mod == ev->state)) { |
d567f430a81d
fixed several stuff (gridwm gets better and better)
Anselm R. Garbe <garbeam@wmii.de>
parents:
8
diff
changeset
|
51 |
if(key[i].func) |
14 | 52 |
key[i].func(key[i].aux); |
9
d567f430a81d
fixed several stuff (gridwm gets better and better)
Anselm R. Garbe <garbeam@wmii.de>
parents:
8
diff
changeset
|
53 |
return; |
d567f430a81d
fixed several stuff (gridwm gets better and better)
Anselm R. Garbe <garbeam@wmii.de>
parents:
8
diff
changeset
|
54 |
} |
d567f430a81d
fixed several stuff (gridwm gets better and better)
Anselm R. Garbe <garbeam@wmii.de>
parents:
8
diff
changeset
|
55 |
} |