summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohannes Bensmann <johannesbensmann@gmx.de>2019-06-08 18:09:21 +0200
committerJohannes Bensmann <johannesbensmann@gmx.de>2019-06-08 18:09:21 +0200
commit74e621236aec7ab84f6d25cac373184fefb8d184 (patch)
treefba0b57ced31fb156fab4c67ef7c12da1a43777a
parent32cce84a44c5f1737da7c23f4253e342fdf459bc (diff)
some code cleanup
-rw-r--r--xmouseless.c161
1 files 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 <stdio.h>
#include <stdlib.h>
@@ -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;
}
}