IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 6716


Ignore:
Timestamp:
Mar 28, 2006, 9:14:51 AM (20 years ago)
Author:
eugene
Message:

better key interactions

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Ohana/src/kii/event/InterpretKeys.c

    r6674 r6716  
    33int InterpretKeys (Graphic *graphic, Layout *layout, XEvent *event) {
    44
    5   double X, Y;
    6   int    status;
     5  double X, Y, offset;
     6  int    modstate;
    77  char   string[10];
    88  KeySym keysym;
     
    1212  keyevent = (XKeyEvent *) event;
    1313  XLookupString (keyevent, string, 9, &keysym, &composestatus);
    14  
     14  modstate = keyevent[0].state;
     15
     16  // offset is in image pixels:
     17  // 0.5 image pixels is 1 screen pixel for expand == +2
     18  // 2.0 image pixels is 1 screen pixel for expand == -2
     19  if (layout[0].expand == 0) layout[0].expand = 1;
     20  offset = (layout[0].expand > 0) ? 1.0 / layout[0].expand : -layout[0].expand;
     21  if (modstate & ControlMask) offset *= 100;
    1522
    1623  switch (keysym) {
    1724
     25    case XK_KP_Home:
     26    case XK_Home:
     27      layout[0].expand = 1;
     28      Reorient (graphic, layout, layout[0].X, layout[0].Y, 0);
     29      break;
     30    case XK_KP_End:
     31    case XK_End:
     32      layout[0].expand = 1;
     33      Reorient (graphic, layout, 0, 0, 0);
     34      break;
    1835    case XK_KP_Enter:
     36    case XK_KP_Begin:
    1937    case XK_Return:
    2038      Screen_to_Image (&X, &Y, (double)keyevent[0].x, (double)keyevent[0].y, layout);
     
    2442      break;
    2543    case XK_Prior:
     44    case XK_KP_Prior:
    2645      Reorient (graphic, layout, layout[0].X, layout[0].Y, +1);
    2746      break;
    2847    case XK_Next:
     48    case XK_KP_Next:
    2949      Reorient (graphic, layout, layout[0].X, layout[0].Y, -1);
    3050      break;
    3151    case XK_Up:
    32       Reorient (graphic, layout, layout[0].X, layout[0].Y + 50, 0);
     52    case XK_KP_Up:
     53      Reorient (graphic, layout, layout[0].X, layout[0].Y + offset, 0);
    3354      break;
    3455    case XK_Down:
    35       Reorient (graphic, layout, layout[0].X, layout[0].Y - 50, 0);
     56    case XK_KP_Down:
     57      Reorient (graphic, layout, layout[0].X, layout[0].Y - offset, 0);
    3658      break;
    3759    case XK_Left:
    38       Reorient (graphic, layout, layout[0].X + 50, layout[0].Y, 0);
     60    case XK_KP_Left:
     61      Reorient (graphic, layout, layout[0].X + offset, layout[0].Y, 0);
    3962      break;
    4063    case XK_Right:
    41       Reorient (graphic, layout, layout[0].X - 50, layout[0].Y, 0);
     64    case XK_KP_Right:
     65      Reorient (graphic, layout, layout[0].X - offset, layout[0].Y, 0);
    4266      break;
    4367
     
    4569      MOVE_POINTER = MOVE_POINTER ^ TRUE;
    4670      if (MOVE_POINTER) UpdatePointer (graphic, layout, (XMotionEvent *)event);
    47       status = TRUE;
    4871      break;
    49 
    50     default:
    51       status = TRUE;
    5272  }
    5373
    54   return (status);
    55 
     74  return (TRUE);
    5675}
    5776
     77/* other keys we might want to use:
    5878
     79 
    5980
    60 
    61 /************* the stuff below this line is old - remove eventually */
    62 /*
    63   case XK_Right:
    64   case XK_Left:
    65   this is all old, but a good example for putting in the cursor motion.
    66 
    67   break;
    6881*/
    6982
Note: See TracChangeset for help on using the changeset viewer.