Link Here
|
60 |
{ "circulate", FUNC_CIRCUL<<FUNC_SHIFT}, |
60 |
{ "circulate", FUNC_CIRCUL<<FUNC_SHIFT}, |
61 |
{ "hist", (FUNC_HIST<<FUNC_SHIFT)|FMOD_RAISE}, |
61 |
{ "hist", (FUNC_HIST<<FUNC_SHIFT)|FMOD_RAISE}, |
62 |
{ "view_hist", (FUNC_VIEW_HIST<<FUNC_SHIFT)|FMOD_RAISE}, |
62 |
{ "view_hist", (FUNC_VIEW_HIST<<FUNC_SHIFT)|FMOD_RAISE}, |
|
|
63 |
{ "exit", FUNC_EXIT<<FUNC_SHIFT}, |
64 |
{ "restart", FUNC_RESTART<<FUNC_SHIFT}, |
63 |
{ "kill", FUNC_KILL<<FUNC_SHIFT}, |
65 |
{ "kill", FUNC_KILL<<FUNC_SHIFT}, |
64 |
{ "lower", FUNC_LOWER<<FUNC_SHIFT}, |
66 |
{ "lower", FUNC_LOWER<<FUNC_SHIFT}, |
65 |
{ "enter", XACT_ENTER<<FUNC_SHIFT}, |
67 |
{ "enter", XACT_ENTER<<FUNC_SHIFT}, |
Link Here
|
192 |
c->dyn.area = c->hist[c->hist_index]; |
194 |
c->dyn.area = c->hist[c->hist_index]; |
193 |
break; |
195 |
break; |
194 |
#endif |
196 |
#endif |
|
|
197 |
case FUNC_EXIT: { |
198 |
sendcmessage(DefaultRootWindow(dpy), xa_wm_exit, 0L, 1); |
199 |
XSync(dpy, False); |
200 |
exit(EXIT_SUCCESS); |
201 |
} |
202 |
case FUNC_RESTART: { |
203 |
sendcmessage(DefaultRootWindow(dpy), xa_wm_restart, 0L, 1); |
204 |
XSync(dpy, False); |
205 |
exit(EXIT_SUCCESS); |
206 |
} |
207 |
|
195 |
case FUNC_KILL: { |
208 |
case FUNC_KILL: { |
196 |
int i, n, found = 0; |
209 |
int i, n, found = 0; |
197 |
Atom *protocols; |
210 |
Atom *protocols; |
Link Here
|
202 |
found++; |
215 |
found++; |
203 |
XFree(protocols); |
216 |
XFree(protocols); |
204 |
} |
217 |
} |
|
|
218 |
|
205 |
if (found) { |
219 |
if (found) { |
206 |
XEvent ev; |
220 |
sendcmessage(c->dyn.window, xa_wm_protos, xa_wm_delete, 0); |
207 |
ev.type = ClientMessage; |
221 |
XSync(dpy, False); |
208 |
ev.xclient.window = c->dyn.window; |
|
|
209 |
ev.xclient.message_type = xa_wm_protos; |
210 |
ev.xclient.format = 32; |
211 |
ev.xclient.data.l[0] = xa_wm_delete; |
212 |
ev.xclient.data.l[1] = CurrentTime; |
213 |
XSendEvent(dpy, c->dyn.window, False, NoEventMask, &ev); |
214 |
} else |
222 |
} else |
215 |
XKillClient(dpy, c->dyn.window); |
223 |
XKillClient(dpy, c->dyn.window); |
216 |
} break; |
224 |
} break; |
Link Here
|
304 |
|
312 |
|
305 |
if (t->mask>=(FUNC_SPAWN<<FUNC_SHIFT) && !strng |
313 |
if (t->mask>=(FUNC_SPAWN<<FUNC_SHIFT) && !strng |
306 |
&& z->mask>=(FUNC_SPAWN<<FUNC_SHIFT)) |
314 |
&& z->mask>=(FUNC_SPAWN<<FUNC_SHIFT)) |
307 |
LOG_ERROR("Err, Not a mask:%s %s %p %p\n", tmp, strng, tmp, strng); |
315 |
LOG_ERROR("Err, Not a mask:%s NULL %p %p\n", tmp, tmp, strng); |
308 |
} |
316 |
} |
309 |
} |
317 |
} |
310 |
if (!found) { |
318 |
if (!found) { |
Link Here
|
578 |
char akey = 0; |
586 |
char akey = 0; |
579 |
if (evnt) switch (evnt->type) { |
587 |
if (evnt) switch (evnt->type) { |
580 |
case KeyPress: |
588 |
case KeyPress: |
581 |
key = XKeycodeToKeysym(dpy, evnt->xkey.keycode, 0); |
589 |
key = XLookupKeysym(&evnt->xkey, 0); |
582 |
char* sym=XKeysymToString(key); |
590 |
char* sym=XKeysymToString(key); |
583 |
if (sym && sym[1] == 0 ) { |
591 |
if (sym && sym[1] == 0 ) { |
584 |
akey = tolower(sym[0]); |
592 |
akey = tolower(sym[0]); |