home *** CD-ROM | disk | FTP | other *** search
/ OpenStep 4.2 / Openstep-4.2-Intel-Developer.iso / NextLibrary / Frameworks / AppKit.framework / Versions / B / Headers / event.h < prev    next >
Text File  |  1996-10-17  |  8KB  |  194 lines

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