From b51a0bc53ddce9314576bfbc4bf7076d19220e20 Mon Sep 17 00:00:00 2001 From: davidovski Date: Tue, 13 Apr 2021 11:51:46 +0100 Subject: [PATCH] tidied up --- anyscroll.c | 48 ++++++++++++++++++++++++++---------------------- mids | Bin 16640 -> 0 bytes mids.o | Bin 3400 -> 0 bytes window | Bin 16504 -> 0 bytes window.c | 32 -------------------------------- 5 files changed, 26 insertions(+), 54 deletions(-) delete mode 100755 mids delete mode 100644 mids.o delete mode 100755 window delete mode 100644 window.c diff --git a/anyscroll.c b/anyscroll.c index c441bb8..419600f 100644 --- a/anyscroll.c +++ b/anyscroll.c @@ -6,44 +6,49 @@ #include #include #include +#include + static Display *dpy; static int scr, sw, sh; static int sx = -1, sy = -1; static Window root; +static const int direction = -1; +static const int pixels_to_scroll = 16; static void scroll(int v) { + v = v * direction; + int btn; if (v > 0) btn = 4; else if (v < 0) btn = 5; else return; - for (int i = 0; i < abs(v); i++) { + int times = ceil(abs(v) / pixels_to_scroll) + 1; + for (int i = 0; i < times; i++) { XTestFakeButtonEvent(dpy, btn, True, CurrentTime); XFlush(dpy); -// usleep(100000); XTestFakeButtonEvent(dpy, btn, False, CurrentTime); XFlush(dpy); } } static void select_events(Display *dpy, Window win) { - XIEventMask evmasks[1]; - unsigned char mask1[(XI_LASTEVENT + 7)/8]; + XIEventMask evmasks[1]; + unsigned char mask1[(XI_LASTEVENT + 7)/8]; - memset(mask1, 0, sizeof(mask1)); + memset(mask1, 0, sizeof(mask1)); - /* select for button and key events from all master devices */ - XISetMask(mask1, XI_RawButtonPress); - XISetMask(mask1, XI_RawButtonRelease); + XISetMask(mask1, XI_RawButtonPress); + XISetMask(mask1, XI_RawButtonRelease); - evmasks[0].deviceid = XIAllMasterDevices; - evmasks[0].mask_len = sizeof(mask1); - evmasks[0].mask = mask1; + evmasks[0].deviceid = XIAllMasterDevices; + evmasks[0].mask_len = sizeof(mask1); + evmasks[0].mask = mask1; - XISelectEvents(dpy, win, evmasks, 1); - XFlush(dpy); + XISelectEvents(dpy, win, evmasks, 1); + XFlush(dpy); } static void getmousepos(int *px, int *py) { @@ -62,22 +67,21 @@ static void* loop() { dy = py - ly; if (sx != -1 && sy != -1) scroll(dy); - printf("%d, %d with deltas (%d, %d)\n", sx, sy, dx, dy); + + if (dx != 0 | dy != 0) { + printf("%d, %d with deltas (%d, %d)\n", sx, sy, dx, dy); + } sleep(0.1); - - } } static void mouse_down(XIRawEvent *xev) { getmousepos(&sx, &sy); - printf("Button pressed %d @ %d, %d\n", xev->detail, sx, sy); } static void mouse_up(XIRawEvent *xev) { sx = -1; sy = -1; - printf("Button released %d %d\n", xev->detail); } int main(int argc, const char **argv) { @@ -95,7 +99,7 @@ int main(int argc, const char **argv) { sw = DisplayWidth(dpy, scr); sh = DisplayHeight(dpy, scr); - fprintf(stdout, "waiting for events\n"); + fprintf(stdout, "waiting for events...\n"); XEvent ev; XIEvent *xi_event; @@ -119,15 +123,15 @@ int main(int argc, const char **argv) { switch (cookie->evtype) { case XI_RawButtonPress: if (xev->detail == 2) mouse_down(xev); - break; + break; case XI_RawButtonRelease: if (xev->detail == 2) mouse_up(xev); - break; + break; } XFreeEventData(dpy, cookie); } - } + } // there is no way out of this loop lol XCloseDisplay(dpy); return 0; } diff --git a/mids b/mids deleted file mode 100755 index e1d998341d8bb7ccb61f43b084a0a288b8f0ad01..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16640 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 diff --git a/mids.o b/mids.o deleted file mode 100644 index 8a0fc6b40c0488bb15411819f2070e6822d3c7db..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3400 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 AU;qFB diff --git a/window.c b/window.c deleted file mode 100644 index 0d55011..0000000 --- a/window.c +++ /dev/null @@ -1,32 +0,0 @@ -#include -#include -#include -#include - -int main(int argc, const char **argv) { - Display *d; - XEvent e; - const char *message = "do you see the fun in gcc?"; - - d = XOpenDisplay(NULL); - if (d == NULL) { - fprintf(stderr, "error opening display\n"); - exit(1); - } - - int s = DefaultScreen(d); - Window w = XCreateSimpleWindow(d, RootWindow(d, s), 10, 10, 100, 100, 1, BlackPixel(d, s), WhitePixel(d, s)); - - XSelectInput(d, w, ExposureMask | KeyPressMask); - XMapWindow(d, w); - - while (1) { - XNextEvent(d, &e); - if (e.type == Expose) { - XDrawString(d, w, DefaultGC(d, s), 10, 50, message, strlen(message)); - } - } - - XCloseDisplay(d); - return 0; -}