From 74e621236aec7ab84f6d25cac373184fefb8d184 Mon Sep 17 00:00:00 2001 From: Johannes Bensmann Date: Sat, 8 Jun 2019 18:09:21 +0200 Subject: some code cleanup --- xmouseless.c | 161 +++++++++++++++++++++++++++++++---------------------------- 1 file changed, 85 insertions(+), 76 deletions(-) diff --git a/xmouseless.c b/xmouseless.c index 486d05c..ae42741 100644 --- a/xmouseless.c +++ b/xmouseless.c @@ -1,5 +1,5 @@ /* - gcc xmouseless.c -o xmouseless -lX11 -lpthread -lXtst + gcc xmouseless.c -o xmouseless -lX11 -lpthread -lXtst */ #include #include @@ -27,10 +27,22 @@ struct { int movey; } mouseinfo; + +int getrootptr(int *x, int *y); +void moverelative(int x, int y); +void click(int button, int is_press); +void handle_keypress(XKeyEvent event); +void handle_keyrelease(XKeyEvent event); void init_x(); void close_x(); -void redraw(); -int getrootptr(int *x, int *y); + + +int getrootptr(int *x, int *y) { + int di; + unsigned int dui; + Window dummy; + return XQueryPointer(dpy, root, &dummy, &dummy, x, y, &di, &di, &dui); +} void moverelative(int x, int y) { mouseinfo.x += x; @@ -39,6 +51,11 @@ void moverelative(int x, int y) { XFlush(dpy); } +void click(int button, int is_press) { + XTestFakeButtonEvent(dpy, button, is_press, 0); + XFlush(dpy); +} + void init_x() { dpy=XOpenDisplay((char *)0); screen=DefaultScreen(dpy); @@ -46,40 +63,82 @@ void init_x() { XGrabKeyboard(dpy, root, False, GrabModeAsync, GrabModeAsync, CurrentTime); - /* XGrabKey(dpy, XKeysymToKeycode(dpy, XK_Q), 0, root, False, GrabModeAsync, GrabModeAsync); */ - /* XGrabKey(dpy, XKeysymToKeycode(dpy, XK_Alt_L), AnyModifier, root, False, GrabModeAsync, GrabModeAsync); */ - + /* turn auto repeat of key off */ XAutoRepeatOff(dpy); } void close_x() { + /* turn auto repeat on again */ XAutoRepeatOn(dpy); XCloseDisplay(dpy); } -int getrootptr(int *x, int *y) { - int di; - unsigned int dui; - Window dummy; - - return XQueryPointer(dpy, root, &dummy, &dummy, x, y, &di, &di, &dui); -} - -void click(int button, int is_press) { - XTestFakeButtonEvent(dpy, button, is_press, 0); - XFlush(dpy); -} - void *moveforever(void *val) { + /* this is executed in a thread */ while (1) { if (mouseinfo.movex != 0 || mouseinfo.movey != 0) { moverelative(SPEED * mouseinfo.movex, SPEED * mouseinfo.movey); - /* printf("%i, %i\n", mouseinfo.x, mouseinfo.y); */ } usleep(1000000 / MOVE_RATE); } } +void handle_keypress(XKeyEvent event) { + if (event.keycode == 24 || event.keycode == 0x09) { + close_x(); + exit(0); + } + else if (event.keycode == 45) { + mouseinfo.movex = 0; + mouseinfo.movey = 0; + } + else if (event.keycode == 44) { + mouseinfo.movex -= 1; + } + else if (event.keycode == 46) { + mouseinfo.movex += 1; + } + else if (event.keycode == 31) { + mouseinfo.movey -= 1; + } + else if (event.keycode == 59) { + mouseinfo.movey += 1; + } + else if (event.keycode == 64) { + SPEED = 40; + } + else if (event.keycode == 41) { + click(1, True); + } + else if (event.keycode == 39) { + click(3, True); + } +} + +void handle_keyrelease(XKeyEvent event) { + if (event.keycode == 44) { + mouseinfo.movex += 1; + } + else if (event.keycode == 46) { + mouseinfo.movex -= 1; + } + else if (event.keycode == 31) { + mouseinfo.movey += 1; + } + else if (event.keycode == 59) { + mouseinfo.movey -= 1; + } + else if (event.keycode == 64) { + SPEED = 10; + } + else if (event.keycode == 41) { + click(1, False); + } + else if (event.keycode == 39) { + click(3, False); + } +} + int main () { int rc; XEvent event; @@ -103,65 +162,15 @@ int main () { switch (event.type) { case KeyPress: getrootptr(&mouseinfo.x, &mouseinfo.y); + printf("You pressed %i\n", event.xkey.keycode); - printf("You pressed the %i key at %i, %i\n", - event.xkey.keycode, event.xkey.x, event.xkey.y); - - if (event.xkey.keycode == 24 || event.xkey.keycode == 0x09) { - close_x(); - return 0; - } - else if (event.xkey.keycode == 45) { - mouseinfo.movex = 0; - mouseinfo.movey = 0; - } - else if (event.xkey.keycode == 44) { - mouseinfo.movex -= 1; - } - else if (event.xkey.keycode == 46) { - mouseinfo.movex += 1; - } - else if (event.xkey.keycode == 31) { - mouseinfo.movey -= 1; - } - else if (event.xkey.keycode == 59) { - mouseinfo.movey += 1; - } - else if (event.xkey.keycode == 64) { - SPEED = 40; - } - else if (event.xkey.keycode == 41) { - click(1, True); - } - else if (event.xkey.keycode == 39) { - click(3, True); - } + handle_keypress(event.xkey); break; + case KeyRelease: - printf("You released the %i key at %i, %i\n", - event.xkey.keycode, event.xkey.x, event.xkey.y); - - if (event.xkey.keycode == 44) { - mouseinfo.movex += 1; - } - else if (event.xkey.keycode == 46) { - mouseinfo.movex -= 1; - } - else if (event.xkey.keycode == 31) { - mouseinfo.movey += 1; - } - else if (event.xkey.keycode == 59) { - mouseinfo.movey -= 1; - } - else if (event.xkey.keycode == 64) { - SPEED = 10; - } - else if (event.xkey.keycode == 41) { - click(1, False); - } - else if (event.xkey.keycode == 39) { - click(3, False); - } + printf("You released %i\n", event.xkey.keycode); + + handle_keyrelease(event.xkey); break; } } -- cgit v1.2.3