chiark / gitweb /
wip fetching images from X
[ypp-sc-tools.db-test.git] / pctb / x-manip-window.c
index 2ff1135e4d854633bce16bc305e31e16ecf4f24d..33d08c2d26d47d685441a4e73009cbb1f77cf9c2 100644 (file)
@@ -5,17 +5,13 @@
 #include <string.h>
 
 #include <X11/Xlib.h>
+#include <X11/extensions/XTest.h>
 
 #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;
+  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);
+
+  Window dummy;
+  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);
 }