X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~yarrgweb/git?a=blobdiff_plain;f=pctb%2Fx-manip-window.c;fp=pctb%2Fx-manip-window.c;h=7dd15a7e29b70516cebe2cab5c4f630d1ac955b2;hb=4429a63ef0b8a3255bb8a85aa63b134785329f80;hp=2ff1135e4d854633bce16bc305e31e16ecf4f24d;hpb=d9d0cf7585c008aafe1d2de5365b772cda30ff13;p=ypp-sc-tools.web-live.git diff --git a/pctb/x-manip-window.c b/pctb/x-manip-window.c index 2ff1135..7dd15a7 100644 --- a/pctb/x-manip-window.c +++ b/pctb/x-manip-window.c @@ -5,17 +5,13 @@ #include #include +#include #define eassert assert static Display *disp; static long id; -static void kmevent(XEvent *ev) { - int r; - r= XSendEvent(disp,id,False,0,ev); assert(r); -} - static KeyCode keycode(const char *s) { KeySym sym= XStringToKeysym(s); return XKeysymToKeycode(disp,sym); @@ -24,13 +20,33 @@ static KeyCode keycode(const char *s) { int main(int argc, const char *const *argv) { char *ep; XWindowAttributes attr; - XEvent ev; + Window dummy; + int xpos,ypos; + unsigned width,height,bd,depth; int r; id= strtoul(*++argv,&ep,0); disp= XOpenDisplay(0); eassert(disp); + r= XRaiseWindow(disp, id); eassert(r); + r= XGetWindowAttributes(disp, id, &attr); eassert(r); + r= XGetGeometry(disp,id, &attr.root,&xpos,&ypos,&width,&height, &bd,&depth); + eassert(r); + + r= XTranslateCoordinates(disp, id,attr.root, 160,160, &xpos,&ypos, + &dummy); + eassert(r); + + int screen= XScreenNumberOfScreen(attr.screen); + XTestFakeMotionEvent(disp,screen, xpos, ypos, 0); + XTestFakeButtonEvent(disp,1,1, 0); + XTestFakeButtonEvent(disp,1,0, 100); + + XTestFakeKeyEvent(disp, keycode("Next"),1, 100); + XTestFakeKeyEvent(disp, keycode("Next"),0, 100); + +#if 0 while (*++argv) { @@ -40,7 +56,6 @@ int main(int argc, const char *const *argv) { switch (**argv) { case 'r': - r= XRaiseWindow(disp, id); eassert(r); break; #define KMEVENT(e,t) \ @@ -55,7 +70,7 @@ int main(int argc, const char *const *argv) { kmevent(&ev); \ break; - case 'K': KE.keycode= keycode(*++argv); KMEVENT(KE,KeyPress); + case 'K': KE.keycode= ; KMEVENT(KE,KeyPress); case 'k': KE.keycode= keycode(*++argv); KMEVENT(KE,KeyRelease); case 'M': ME.button=1; KMEVENT(ME,ButtonPress); case 'm': ME.button=1; ME.state=Button1Mask; KMEVENT(ME,ButtonRelease); @@ -63,7 +78,8 @@ int main(int argc, const char *const *argv) { abort(); } } - + +#endif r= XSync(disp, False); eassert(r); exit(0); }