diff options
Diffstat (limited to 'cmd/click/main.c')
-rw-r--r-- | cmd/click/main.c | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/cmd/click/main.c b/cmd/click/main.c new file mode 100644 index 0000000..3ddc8ef --- /dev/null +++ b/cmd/click/main.c @@ -0,0 +1,62 @@ +/* Copyright ©2006-2010 Kris Maglione <fbsdaemon@gmail.com> + * See LICENSE file for license details. + */ +#define EXTERN +#include "dat.h" +#include <X11/Xproto.h> +#include <X11/extensions/XTest.h> +#include <locale.h> +#include <string.h> +#include "fns.h" + +static const char version[] = "click-"VERSION", ©2010 Kris Maglione\n"; + +static void +usage(void) { + fatal("usage: %s [window]\n", argv0); +} + +static void +click(Window *w, Point p) { + Rectangle r; + Point rp; + + r = getwinrect(w); + rp = subpt(r.max, p); + + XTestFakeMotionEvent(display, 0, rp.x, rp.y, 0); + + XTestFakeButtonEvent(display, 1, true, 0); + XTestFakeButtonEvent(display, 1, false, 0); + + XTestFakeMotionEvent(display, 0, r.max.x, r.max.y, 0); +} + +int +main(int argc, char *argv[]) { + char *s; + + ARGBEGIN{ + default: + usage(); + }ARGEND; + + setlocale(LC_CTYPE, ""); + + initdisplay(); + + s = ARGF(); + if(s && !getulong(s, &win.w)) + usage(); + if (!s) + win.w = getfocus(); + + if(argc) + usage(); + + click(&win, Pt(1, 1)); + + XCloseDisplay(display); + return 0; +} + |