home *** CD-ROM | disk | FTP | other *** search
/ NeXTSTEP 3.2 (Developer) / NS_dev_3.2.iso / NextDeveloper / Headers / dpsclient / event.h < prev    next >
C/C++ Source or Header  |  1992-03-25  |  8KB  |  203 lines

  1.  
  2. /*    
  3.     event.h
  4.  
  5.     Copyright 1988, NeXT, Inc.
  6.  
  7.     This file has the client side definition of the event record.
  8. */
  9.  
  10.  
  11. #ifndef EVENT_H
  12. #define EVENT_H
  13.  
  14. #ifndef DPSFRIENDS_H
  15. #include "dpsfriends.h"
  16. #endif DPSFRIENDS_H
  17.  
  18. typedef float   NXCoord;
  19.  
  20. typedef struct _NXPoint {    /* point */
  21.     NXCoord         x, y;
  22. } NXPoint;
  23.  
  24. typedef struct _NXSize {    /* size */
  25.     NXCoord         width, height;
  26. } NXSize;
  27.  
  28. /* Event types */
  29. #define NX_NULLEVENT        0    /* internal use */
  30. /* mouse events */
  31. #define NX_LMOUSEDOWN        1    /* left mouse-down event */
  32. #define NX_LMOUSEUP        2    /* left mouse-up event */
  33. #define NX_RMOUSEDOWN        3    /* right mouse-down event */
  34. #define NX_RMOUSEUP        4    /* right mouse-up event */
  35. #define NX_MOUSEMOVED        5    /* mouse-moved event */
  36. #define NX_LMOUSEDRAGGED    6    /* left mouse-dragged event */
  37. #define NX_RMOUSEDRAGGED    7    /* right mouse-dragged event */
  38. #define NX_MOUSEENTERED        8    /* mouse-entered event */
  39. #define NX_MOUSEEXITED        9    /* mouse-exited event */
  40. /* keyboard events */
  41. #define NX_KEYDOWN        10    /* key-down event */
  42. #define NX_KEYUP        11    /* key-up event */
  43. #define NX_FLAGSCHANGED        12    /* flags-changed event */
  44. /* composite events */
  45. #define NX_KITDEFINED        13    /* appkit-defined event */
  46. #define NX_SYSDEFINED        14    /* system-defined event */
  47. #define NX_APPDEFINED        15    /* application-defined event */
  48. #define NX_TIMER        16    /* timer used for tracking */
  49. #define NX_CURSORUPDATE        17    /* cursor tracking event */
  50. #define NX_JOURNALEVENT        18    /* event used by journaling */
  51. #define NX_RESERVEDEVENT4    19    /* reserved event */
  52. #define NX_RESERVEDEVENT5    20    /* reserved event */
  53. #define NX_RESERVEDEVENT6    21    /* reserved event */
  54. #define NX_RESERVEDEVENT7    22    /* reserved event */
  55. #define NX_RESERVEDEVENT8    23    /* reserved event */
  56. #define NX_RESERVEDEVENT9    24    /* reserved event */
  57. #define NX_RESERVEDEVENT10    25    /* reserved event */
  58. #define NX_RESERVEDEVENT11    26    /* reserved event */
  59. #define NX_RESERVEDEVENT12    27    /* reserved event */
  60. #define NX_RESERVEDEVENT13    28    /* reserved event */
  61. #define NX_RESERVEDEVENT14    29    /* reserved event */
  62. #define NX_RESERVEDEVENT15    30    /* reserved event */
  63. #define NX_RESERVEDEVENT16    31    /* reserved event */
  64.  
  65. #define NX_FIRSTEVENT        0
  66. #define NX_LASTEVENT        18
  67.  
  68. #define NX_MOUSEDOWN        NX_LMOUSEDOWN        /* Synonym */
  69. #define NX_MOUSEUP        NX_LMOUSEUP        /* Synonym */
  70. #define    NX_MOUSEDRAGGED        NX_LMOUSEDRAGGED    /* Synonym */
  71.  
  72.  
  73.  /* Event masks */
  74.  
  75. #define NX_NULLEVENTMASK    (1 << NX_NULLEVENT)    /* a non-event */
  76. #define NX_LMOUSEDOWNMASK    (1 << NX_LMOUSEDOWN)    /* left mouse-down */
  77. #define NX_LMOUSEUPMASK        (1 << NX_LMOUSEUP)    /* left mouse-up */
  78. #define NX_RMOUSEDOWNMASK    (1 << NX_RMOUSEDOWN)    /* right mouse-down */
  79. #define NX_RMOUSEUPMASK        (1 << NX_RMOUSEUP)    /* right mouse-up */
  80. #define NX_MOUSEMOVEDMASK    (1 << NX_MOUSEMOVED)    /* mouse-moved */
  81. #define NX_LMOUSEDRAGGEDMASK    (1 << NX_LMOUSEDRAGGED)    /* left-dragged */
  82. #define NX_RMOUSEDRAGGEDMASK    (1 << NX_RMOUSEDRAGGED)    /* right-dragged */
  83. #define NX_MOUSEENTEREDMASK    (1 << NX_MOUSEENTERED)    /* mouse-entered */
  84. #define NX_MOUSEEXITEDMASK    (1 << NX_MOUSEEXITED)    /* mouse-exited */
  85. #define NX_KEYDOWNMASK        (1 << NX_KEYDOWN)    /* key-down */
  86. #define NX_KEYUPMASK        (1 << NX_KEYUP)        /* key-up */
  87. #define NX_FLAGSCHANGEDMASK    (1 << NX_FLAGSCHANGED)    /* flags-changed */
  88. #define NX_KITDEFINEDMASK     (1 << NX_KITDEFINED)    /* appkit-defined */
  89. #define NX_APPDEFINEDMASK     (1 << NX_APPDEFINED)    /* app-defined */
  90. #define NX_SYSDEFINEDMASK     (1 << NX_SYSDEFINED)    /* system-defined */
  91. #define NX_TIMERMASK        (1 << NX_TIMER)        /* tracking timer */
  92. #define NX_CURSORUPDATEMASK    (1 << NX_CURSORUPDATE)  /* cursor tracking */
  93. #define NX_JOURNALEVENTMASK    (1 << NX_JOURNALEVENT)    /* journaling event */
  94. #define NX_RESERVEDEVENT4MASK    (1 << NX_RESERVEDEVENT4) /* reserved event */
  95. #define NX_RESERVEDEVENT5MASK    (1 << NX_RESERVEDEVENT5) /* reserved event */
  96. #define NX_RESERVEDEVENT6MASK    (1 << NX_RESERVEDEVENT6) /* reserved event */
  97. #define NX_RESERVEDEVENT7MASK    (1 << NX_RESERVEDEVENT7) /* reserved event */
  98. #define NX_RESERVEDEVENT8MASK    (1 << NX_RESERVEDEVENT8) /* reserved event */
  99. #define NX_RESERVEDEVENT9MASK    (1 << NX_RESERVEDEVENT9) /* reserved event */
  100. #define NX_RESERVEDEVENT10MASK    (1 << NX_RESERVEDEVENT10) /* reserved event */
  101. #define NX_RESERVEDEVENT11MASK    (1 << NX_RESERVEDEVENT11) /* reserved event */
  102. #define NX_RESERVEDEVENT12MASK    (1 << NX_RESERVEDEVENT12) /* reserved event */
  103. #define NX_RESERVEDEVENT13MASK    (1 << NX_RESERVEDEVENT13) /* reserved event */
  104. #define NX_RESERVEDEVENT14MASK    (1 << NX_RESERVEDEVENT14) /* reserved event */
  105. #define NX_RESERVEDEVENT15MASK    (1 << NX_RESERVEDEVENT15) /* reserved event */
  106. #define NX_RESERVEDEVENT16MASK    (1 << NX_RESERVEDEVENT16) /* reserved event */
  107.  
  108. #define    NX_MOUSEDOWNMASK    NX_LMOUSEDOWNMASK    /* Synonym */
  109. #define NX_MOUSEUPMASK        NX_LMOUSEUPMASK        /* Synonym */
  110. #define    NX_MOUSEDRAGGEDMASK    NX_LMOUSEDRAGGEDMASK    /* Synonym */
  111.  
  112. #define NX_EVENTCODEMASK(type) (1 << (type))
  113. #define NX_ALLEVENTS    -1    /* Check for all events */
  114.  
  115. /* masks for the bits in the flags field */
  116.     /* Device-independent bits */
  117. #define    NX_ALPHASHIFTMASK    (1 << 16)    /* if alpha lock is on */
  118. #define    NX_SHIFTMASK        (1 << 17)    /* if shift key is down */
  119. #define NX_CONTROLMASK        (1 << 18)    /* if control key is down */
  120. #define NX_ALTERNATEMASK    (1 << 19)    /* if alt key is down */
  121. #define NX_COMMANDMASK        (1 << 20)    /* if command key is down */
  122. #define NX_NUMERICPADMASK    (1 << 21)    /* if key on numeric pad */
  123. #define NX_HELPMASK        (1 << 22)    /* if help key is down */
  124.  
  125.     /* Device-dependent bits */
  126. #define NX_NEXTCTRLKEYMASK    (1 << 0)    /* control key */
  127. #define NX_NEXTLSHIFTKEYMASK    (1 << 1)    /* left side shift key */
  128. #define NX_NEXTRSHIFTKEYMASK    (1 << 2)    /* right side shift key */
  129. #define NX_NEXTLCMDKEYMASK    (1 << 3)    /* left side command key */
  130. #define NX_NEXTRCMDKEYMASK    (1 << 4)    /* right side command key */
  131. #define NX_NEXTLALTKEYMASK    (1 << 5)    /* left side alt key */
  132. #define NX_NEXTRALTKEYMASK    (1 << 6)    /* right side alt key */
  133. #define NX_STYLUSPROXIMITYMASK    (1 << 7)    /* if stylus is in proximity 
  134.                            (for tablets) */
  135. #define NX_NONCOALSESCEDMASK    (1 << 8)    /* event was generated with
  136.                            event coalescing disabled */
  137.  
  138. /* click state values
  139. If you have the following event in close succession, the click
  140. field has the indicated value:
  141.     Event        Click Value        Comments
  142.     mouse-down    1            Not part of any click yet
  143.     mouse-up    1            Aha! A click!
  144.     mouse-down    2            Doing a double-click
  145.     mouse-up    2            It's finished
  146.     mouse-down    3            A triple
  147.     mouse-up    3
  148. */
  149.  
  150. /* Values for the character set in event.data.key.charSet */
  151. #define    NX_ASCIISET        0
  152. #define NX_SYMBOLSET        1
  153. #define    NX_DINGBATSSET        2
  154.  
  155. /* EventData type: defines the data field of an event */
  156. typedef    union {
  157.     struct {    /* For mouse events */
  158.     short    reserved;
  159.     short    eventNum;        /* unique identifier for this button */
  160.     int    click;            /* click state of this event */
  161.         unsigned char    pressure;    /* pressure value: 0=none, 255=full */
  162.     char        reserved1;
  163.     short        reserved2;
  164.     } mouse;
  165.     struct {    /* For key-down and key-up events */
  166.     short    reserved;
  167.     short    repeat;        /* for key-down: nonzero if really a repeat */
  168.     unsigned short charSet;    /* character set code */
  169.     unsigned short charCode;/* character code in that set */
  170.     unsigned short keyCode;    /* device-dependent key number */
  171.     short       keyData;    /* device-dependent info */
  172.     } key;
  173.     struct {    /* For mouse-entered and mouse-exited events */
  174.     short    reserved;
  175.     short    eventNum;    /* unique identifier from mouse down event */
  176.     int    trackingNum;    /* unique identifier from settrackingrect */
  177.     int    userData;    /* uninterpreted integer from settrackingrect */
  178.     } tracking;
  179.     struct {    /* For appkit-defined, sys-defined, and app-defined events */
  180.     short    reserved;
  181.     short    subtype;    /* event subtype for compound events */
  182.     union {
  183.         float    F[2];    /* for use in compound events */
  184.         long    L[2];    /* for use in compound events */
  185.         short    S[4];    /* for use in compound events */
  186.         char    C[8];    /* for use in compound events */
  187.     } misc;
  188.     } compound;
  189. } NXEventData;
  190.  
  191. /* Finally! The event record! */
  192. typedef struct _NXEvent {
  193.     int type;            /* An event type from above */
  194.     NXPoint location;    /* Base coordinates in window, from lower-left */
  195.     long time;            /* vertical intervals since launch */
  196.     int flags;            /* key state flags */
  197.     unsigned int window;    /* window number of assigned window */
  198.     NXEventData data;        /* type-dependent data */
  199.     DPSContext ctxt;        /* context the event came from */
  200. } NXEvent, *NXEventPtr;
  201.  
  202. #endif EVENT_H
  203.