Synergyのソースコードを久々に読みなおして各OSでクリック動作など各動作を疑似再現する
方法を確認しなおしていたのでちょっと練習にとオートクリッカーをつくってみました。
#include <stdio.h> #include <stdlib.h> #include <signal.h> #include <unistd.h> #include <X11/Xlib.h> #include <X11/extensions/XTest.h> void usage(); void finish(int sig); //X11 Display Display* dpy; int main(int argc, char** argv) { //Click margin int margin; if (argc <= 1) { usage(); return -1; } if ((dpy = XOpenDisplay("")) == NULL) { fprintf(stderr, "Failed to open display\n"); exit(-1); } margin = atoi(argv[1]); signal(SIGKILL, finish); while(1) { printf("CLick\n"); //Click XTestFakeButtonEvent(dpy, 1, True, CurrentTime); XFlush(dpy); XTestFakeButtonEvent(dpy, 1, False, CurrentTime); XFlush(dpy); usleep(margin * 1000); } return 0; } void usage() { printf("Usage:\n"); printf("takahash [millsec]\n"); } void finish(int sig) { printf("Finish.."); XCloseDisplay(dpy); exit(0); }
指定された間隔をミリ秒として解釈してその間隔でクリックを連打するようにしています。
高橋名人の一秒16連打!!
./a.out 62
連打されます。