home *** CD-ROM | disk | FTP | other *** search
/ The C Users' Group Library 1994 August / wc-cdrom-cusersgrouplibrary-1994-08.iso / listings / v_01_03 / 1n03079b < prev    next >
Text File  |  1990-05-21  |  2KB  |  68 lines

  1. #include    <conio.h>
  2.  
  3.  
  4. /*
  5. ************************************************************************
  6. *    Input - waits for key or mouse button press, then returns value
  7. *
  8. *    Parameters:
  9. *        x (out) - x position of mouse when button pressed
  10. *        y (out) - y position of mouse when button pressed
  11. *
  12. *    Returns:
  13. *        For mouse, returns MOUSE_L or MOUSE_R (left or right button).
  14. *        For normal key press, returns key code (extended ascii).
  15. *        For extended key press, returns second byte of extended key
  16. *            code * -1.
  17. *
  18. *    Notes:
  19. *        This routine blocks waiting user action.
  20. *        Mouse coordinates are virtual screen coordinates.
  21. *        This routine turns the mouse on and off.
  22. *
  23. *    Copyright:
  24. *        Original code by William H. Roetzheim
  25. **********************************************************************
  26. */
  27.  
  28. #define    INVALID        -1
  29. #define    MOUSE_L        -2
  30. #define    MOUSE_R        -3
  31.  
  32. int    Input (int *x, int *y)
  33. {
  34.     int    m1, m2, m3, m4;
  35.     int    mouse;
  36.     int    ch;
  37.     int    retval = 0;
  38.     *x = INVALID;
  39.     *y = INVALID;
  40.  
  41.     MouseOn ();
  42.     while (retval == 0)
  43.     {
  44.         /* return mouse if pressed */
  45.         m1 = 3;        /* check button press on mouse */
  46.         m2 = 0;
  47.         IntMouse (&m1, &m2, &m3, &m4);
  48.         if (m2 != 0)
  49.         {
  50.             /* wait for button release */
  51.             mouse = m2;
  52.             while (m2 != 0) IntMouse (&m1,&m2,&m3,&m4);
  53.             *x = m3;
  54.             *y = m4;
  55.             if (mouse == 1) retval = MOUSE_L;
  56.             else retval = MOUSE_R;
  57.         }
  58.         if (kbhit() != 0) /* keyboard hit test */
  59.         {
  60.            ch = getch();
  61.            if (ch == 0) ch = -(getch());    /* get extended key code */
  62.            retval = ch;
  63.         }
  64.     }
  65.     MouseOff ();
  66.     return retval;
  67. }
  68.