From ae6ef24bb00f12bb690153963734e8f1ec138a1c Mon Sep 17 00:00:00 2001 From: gotmor Date: Wed, 13 Jun 2007 11:55:28 +0000 Subject: added keyboard handling added a_grabkeys, a_ungrabkeys, a_scrollend git-svn-id: http://dzen.googlecode.com/svn/trunk@84 f2baff5b-bf2c-0410-a398-912abdc3d8b2 --- main.c | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) (limited to 'main.c') diff --git a/main.c b/main.c index e01955e..9f01edd 100644 --- a/main.c +++ b/main.c @@ -23,6 +23,7 @@ Dzen dzen = {0}; static int last_cnt = 0; typedef void sigfunc(int); +int isfocused = 0; static void @@ -99,7 +100,7 @@ chomp(char *inbuf, char *outbuf, int start, int len) { } while(off < len) { if(inbuf[off] != '\n') { - outbuf[i++] = inbuf[off++]; + outbuf[i++] = inbuf[off++]; } else if(inbuf[off] == '\n') { outbuf[i] = '\0'; return ++off; @@ -283,7 +284,7 @@ x_create_windows(void) { /* window attributes */ wa.override_redirect = 1; wa.background_pixmap = ParentRelative; - wa.event_mask = ExposureMask | ButtonReleaseMask | EnterWindowMask | LeaveWindowMask; + wa.event_mask = ExposureMask | ButtonReleaseMask | EnterWindowMask | LeaveWindowMask | KeyPressMask; #ifdef DZEN_XINERAMA queryscreeninfo(dzen.dpy, &si, dzen.xinescreen); @@ -393,6 +394,8 @@ static void handle_xev(void) { XEvent ev; int i; + char buf[32]; + KeySym ksym; XNextEvent(dzen.dpy, &ev); switch(ev.type) { @@ -457,6 +460,10 @@ handle_xev(void) { break; } break; + case KeyPress: + XLookupString(&ev.xkey, buf, sizeof buf, &ksym, 0); + do_action(ksym+keymarker); + break; } } @@ -668,9 +675,12 @@ main(int argc, char *argv[]) { if(action_string) fill_ev_table(action_string); else { - char edef[] = "entertitle=uncollapse;leaveslave=collapse;" + char edef[] = "entertitle=uncollapse,grabkeys;" + "enterslave=grabkeys;leaveslave=collapse,ungrabkeys;" "button1=menuexec;button2=togglestick;button3=exit:13;" - "button4=scrollup;button5=scrolldown"; + "button4=scrollup;button5=scrolldown;" + "key_Up=scrollup;key_Left=scrollup;key_Down=scrolldown;key_Right=scrolldown;" + "key_q=ungrabkeys,exit"; fill_ev_table(edef); } -- cgit v1.2.3-54-g00ecf