Index: /branches/kapa-mods-2007-05/Ohana/src/kapa2/src/CheckPipe.c
===================================================================
--- /branches/kapa-mods-2007-05/Ohana/src/kapa2/src/CheckPipe.c	(revision 13464)
+++ /branches/kapa-mods-2007-05/Ohana/src/kapa2/src/CheckPipe.c	(revision 13465)
@@ -10,4 +10,8 @@
   InitSocket = KapaServerInit (&Address);
   return;
+}
+
+int GetActiveSocket () {
+  return (sock);
 }
 
@@ -57,7 +61,9 @@
     if (strcmp (word, "NCUR")) {
       fprintf (stderr, "wrong end message %s\n", word);
+      KiiSendCommand (sock, 4, "DONE");
       FINISHED (TRUE);
     }
     ACTIVE_CURSOR = FALSE;
+    KiiSendCommand (sock, 4, "DONE");
     FINISHED (TRUE);
   } 
@@ -67,4 +73,5 @@
   if (!strcmp (word, "CURS")) {
     ACTIVE_CURSOR = TRUE;
+    KiiSendCommand (sock, 4, "DONE");
     FINISHED (TRUE);
   }
@@ -269,4 +276,5 @@
 
   fprintf (stderr, "unknown signal %s\n", word);
+  KiiSendCommand (sock, 4, "DONE");
   FINISHED (TRUE);
 }
Index: /branches/kapa-mods-2007-05/Ohana/src/kapa2/src/InterpretKeys.c
===================================================================
--- /branches/kapa-mods-2007-05/Ohana/src/kapa2/src/InterpretKeys.c	(revision 13464)
+++ /branches/kapa-mods-2007-05/Ohana/src/kapa2/src/InterpretKeys.c	(revision 13465)
@@ -3,6 +3,7 @@
 int InterpretKeys (Graphic *graphic, XKeyEvent *event) {
 
-  double 	   X, Y, offset;
-  int    	   modstate;
+  float           *imdata;
+  double 	   X, Y, Z, R, D, offset;
+  int    	   sock, DX, DY, modstate;
   char   	  *name, string[16], line[40];
   KeySym           keysym;
@@ -23,4 +24,8 @@
   // XXX allow user to choose graph or image coords
   if (ACTIVE_CURSOR) {
+
+    sock = GetActiveSocket ();
+    if (sock == -1) goto skip_cursor;
+
     name = XKeysymToString (keysym);
 
@@ -43,7 +48,10 @@
     if (!strcmp (name, "(null)")) goto skip_cursor;
 
+    Z = -1;
+
     if (graph) {
       X = (event[0].x - graph[0].axis[0].fx)*(graph[0].axis[0].max - graph[0].axis[0].min)/graph[0].axis[0].dfx + graph[0].axis[0].min;
       Y = (event[0].y - graph[0].axis[1].fy)*(graph[0].axis[1].max - graph[0].axis[1].min)/graph[0].axis[1].dfy + graph[0].axis[1].min;
+      XY_to_RD (&R, &D, X, Y, &graph[0].data.coords);
     } 
     if (image && !graph) {
@@ -53,8 +61,18 @@
       if (event[0].y > image[0].picture.y + image[0].picture.dy) goto skip_cursor;
       Screen_to_Image (&X, &Y, (double)event[0].x, (double)event[0].y, image);
+      XY_to_RD (&R, &D, X, Y, &image[0].coords);
+
+      DX = image[0].matrix.Naxis[0];
+      DY = image[0].matrix.Naxis[1];
+
+      if (X < 0) goto off_image;
+      if (Y < 0) goto off_image;
+      if (X >= DX) goto off_image;
+      if (Y >= DY) goto off_image;
+      imdata = (float *) image[0].matrix.buffer;
+      Z      = imdata[DX*(int)(Y) + (int)(X)];
     }
-    snprintf (line, 40, "%12s %12.6f %12.6f ", name, X, Y);
-    // XXX need to do something different here
-    // xxx write (sock, line, 40);
+  off_image:
+    KiiSendMessage (sock, "%12s %12.6f %12.6f %12.6f %12.6f %12.6f", name, X, Y, Z, R, D);
   }
 
Index: /branches/kapa-mods-2007-05/Ohana/src/kapa2/src/InterpretPresses.c
===================================================================
--- /branches/kapa-mods-2007-05/Ohana/src/kapa2/src/InterpretPresses.c	(revision 13464)
+++ /branches/kapa-mods-2007-05/Ohana/src/kapa2/src/InterpretPresses.c	(revision 13465)
@@ -3,7 +3,8 @@
 int InterpretPresses (Graphic *graphic, XButtonEvent *event) {
 
-  int              status, done, this_button, old_cursor;
+  int              sock, DX, DY, status, done, this_button, old_cursor;
   char             name[16], line[40];
-  double           X, Y;
+  double           X, Y, Z, R, D;
+  float           *imdata;
   KeySym           keysym;
   Button          *button;
@@ -20,8 +21,12 @@
   // XXX allow user to choose graph or image coords
   if (ACTIVE_CURSOR) {
+    sock = GetActiveSocket ();
+    if (sock == -1) goto skip_cursor;
+
     sprintf (name, "Button%d", event[0].button);
     if (graph) {
       X = (event[0].x - graph[0].axis[0].fx)*(graph[0].axis[0].max - graph[0].axis[0].min)/graph[0].axis[0].dfx + graph[0].axis[0].min;
       Y = (event[0].y - graph[0].axis[1].fy)*(graph[0].axis[1].max - graph[0].axis[1].min)/graph[0].axis[1].dfy + graph[0].axis[1].min;
+      XY_to_RD (&R, &D, X, Y, &graph[0].data.coords);
     } 
     if (image && !graph) {
@@ -30,10 +35,20 @@
       if (event[0].x > image[0].picture.x + image[0].picture.dx) goto skip_cursor;
       if (event[0].y > image[0].picture.y + image[0].picture.dy) goto skip_cursor;
-	
       Screen_to_Image (&X, &Y, (double)event[0].x, (double)event[0].y, image);
+
+      XY_to_RD (&R, &D, X, Y, &image[0].coords);
+
+      DX = image[0].matrix.Naxis[0];
+      DY = image[0].matrix.Naxis[1];
+
+      if (X < 0) goto off_image;
+      if (Y < 0) goto off_image;
+      if (X >= DX) goto off_image;
+      if (Y >= DY) goto off_image;
+      imdata = (float *) image[0].matrix.buffer;
+      Z      = imdata[DX*(int)(Y) + (int)(X)];
     }
-    snprintf (line, 40, "%12s %12.6f %12.6f ", name, X, Y);
-    // need to do something different here...
-    // xxx write (sock, line, 40);
+  off_image:
+    KiiSendMessage (sock, "%12s %12.6f %12.6f %12.6f %12.6f %12.6f", name, X, Y, Z, R, D);
   }
 
Index: /branches/kapa-mods-2007-05/Ohana/src/libkapa/include/kapa.h
===================================================================
--- /branches/kapa-mods-2007-05/Ohana/src/libkapa/include/kapa.h	(revision 13464)
+++ /branches/kapa-mods-2007-05/Ohana/src/libkapa/include/kapa.h	(revision 13465)
@@ -142,5 +142,5 @@
 int KiiCursorOn (int fd);
 int KiiCursorOff (int fd);
-int KiiCursorRead (int fd, double *x, double *y, char *key);
+int KiiCursorRead (int fd, double *x, double *y, double *z, double *r, double *d, char *key);
 
 /* KapaWindow.c */
Index: /branches/kapa-mods-2007-05/Ohana/src/libkapa/src/IOfuncs.c
===================================================================
--- /branches/kapa-mods-2007-05/Ohana/src/libkapa/src/IOfuncs.c	(revision 13464)
+++ /branches/kapa-mods-2007-05/Ohana/src/libkapa/src/IOfuncs.c	(revision 13465)
@@ -75,5 +75,5 @@
   /* make the string easy to parse */
 
-  // fprintf (stderr, "message recv: %s\n", message);
+  // fprintf (stderr, "recv: %s\n", message);
 
   /* scan the incoming message */
@@ -109,4 +109,7 @@
 
   write (device, string, length);
+
+  // fprintf (stderr, "send: %s\n", string);
+
   free (string);
   return (TRUE);
Index: /branches/kapa-mods-2007-05/Ohana/src/libkapa/src/KiiCursor.c
===================================================================
--- /branches/kapa-mods-2007-05/Ohana/src/libkapa/src/KiiCursor.c	(revision 13464)
+++ /branches/kapa-mods-2007-05/Ohana/src/libkapa/src/KiiCursor.c	(revision 13465)
@@ -15,15 +15,8 @@
 }
 
-int KiiCursorRead (int fd, double *x, double *y, char *key) {
+int KiiCursorRead (int fd, double *x, double *y, double *z, double *r, double *d, char *key) {
 
-  char buffer[40];
-
-  bzero (buffer, 40);
-  read (fd, buffer, 40);
-  buffer[39] = 0;
-
-  sscanf (buffer, "%s %lf %lf", key, x, y);
+  KiiScanMessage (fd, "%s %lf %lf %lf %lf %lf", key, x, y, z, r, d);
   if (ispunct(key[0])) strcpy (key, "_");
-
   return (TRUE);
 }
Index: /branches/kapa-mods-2007-05/Ohana/src/opihi/cmd.data/cursor.c
===================================================================
--- /branches/kapa-mods-2007-05/Ohana/src/opihi/cmd.data/cursor.c	(revision 13464)
+++ /branches/kapa-mods-2007-05/Ohana/src/opihi/cmd.data/cursor.c	(revision 13465)
@@ -7,6 +7,4 @@
   double X, Y, R, D, Z;
   void *oldsignal;
-  Graphdata graphmode;
-  Buffer *buf;
 
   // XXX need to be able to specify graph vs image coords
@@ -22,5 +20,5 @@
     remove_argument (N, &argc, argv);
   }
-  if (!GetGraph (&graphmode, &kapa, name)) return (FALSE);
+  if (!GetGraphData (NULL, &kapa, name)) return (FALSE);
   FREE (name);
 
@@ -33,17 +31,12 @@
   }
   
-  buf = NULL;
-  // if (IsImage) buf = SelectBuffer (GetImageName(), OLDBUFFER, FALSE);
-  // XXX this stuff will go away with 32bit image data
-  
   KiiCursorOn (kapa);
   
   oldsignal = signal (SIGINT, handle_interrupt);
   interrupt = FALSE;
-  Z = -1.0;
+
   for (i = 0; ((i < N) || (N == 0)) && !interrupt; i++) {
 
-    // XXX have kapa return x,y,z,ra,dec for all options
-    KiiCursorRead (kapa, &X, &Y, key);
+    KiiCursorRead (kapa, &X, &Y, &Z, &R, &D, key);
 
     sprintf (string, "X%s", key);
@@ -51,17 +44,15 @@
     sprintf (string, "Y%s", key);
     set_variable (string, Y);
+    sprintf (string, "Z%s", key);
+    set_variable (string, Z);
+    sprintf (string, "R%s", key);
+    set_variable (string, R);
+    sprintf (string, "D%s", key);
+    set_variable (string, D);
+
     set_str_variable ("KEY", key);
     
-    if (buf != NULL) { 
-      Z = gfits_get_matrix_value (&buf[0].matrix, (int) X, (int) Y);
-      // gprint (GP_LOG, "%s %f %f  %f\n", key, X, Y, Z);
-    } else {
-      XY_to_RD (&R, &D, X, Y, &graphmode.coords);
-      sprintf (string, "R%s", key);
-      set_variable (string, R);
-      sprintf (string, "D%s", key);
-      set_variable (string, D);
-      gprint (GP_LOG, "%s %f %f\n", key, X, Y);
-    }
+    gprint (GP_LOG, "%s %f %f %f %f %f\n", key, X, Y, Z, R, D);
+
     if (!strcasecmp (key, "Q")) break;
   }
Index: /branches/kapa-mods-2007-05/Ohana/src/opihi/dvo/scripts/navigate
===================================================================
--- /branches/kapa-mods-2007-05/Ohana/src/opihi/dvo/scripts/navigate	(revision 13464)
+++ /branches/kapa-mods-2007-05/Ohana/src/opihi/dvo/scripts/navigate	(revision 13465)
@@ -11,5 +11,5 @@
   $KEY = "none"
   while ("$KEY" != "q")
-    cursor -g 1
+    cursor 1
 
     # help list
@@ -147,5 +147,5 @@
       $ok = $KEY
       echo "type 'd' again at endpoint"
-      cursor -g 1
+      cursor 1
       $r1 = $R$KEY
       $d1 = $D$KEY
@@ -168,5 +168,5 @@
       $ok = $KEY
       echo "type 'z' again at radius"
-      cursor -g 1
+      cursor 1
       $r1 = $R$KEY
       $d1 = $D$KEY
@@ -400,5 +400,5 @@
     if ("$KEY" == "p") 
       echo "P - new coords; p - old coords"
-      cursor -g 1
+      cursor 1
       exec echo $Rp $Dp $RP $DP >> fix.coords
     end
Index: /branches/kapa-mods-2007-05/Ohana/src/relphot/src/plotstuff.c
===================================================================
--- /branches/kapa-mods-2007-05/Ohana/src/relphot/src/plotstuff.c	(revision 13464)
+++ /branches/kapa-mods-2007-05/Ohana/src/relphot/src/plotstuff.c	(revision 13465)
@@ -24,5 +24,5 @@
 
   sprintf (name, "gastro [%d]", N);
-  Xgraph[N] = KapaOpen ("/home/kiawe/eugene/psconfig/dev.linux/bin/kapa2", name);
+  Xgraph[N] = KapaOpen ("kapa2", name);
 
   if (Xgraph[N] < 0) {
