home *** CD-ROM | disk | FTP | other *** search
/ NeXTSTEP 3.2 (Developer) / NS_dev_3.2.iso / NextDeveloper / Headers / bsd / dev / m68k / event.h < prev    next >
C/C++ Source or Header  |  1993-10-19  |  8KB  |  229 lines

  1. /******************************************************************************
  2.     event.h (PostScript side version)
  3.     
  4.     CONFIDENTIAL
  5.     Copyright (c) 1988 NeXT, Inc. as an unpublished work.
  6.     All Rights Reserved.
  7.  
  8.     Created Leo 01Mar88
  9.  
  10.     Modified:
  11.     04May88 Leo  Final event types and record
  12.     22Aug88 Leo  Change short -> int for window, add reserved
  13.     26May90 Ted  Added NX_UNDIMMASK to correct triggering of UndoAutoDim
  14.     12Dec91 Mike Brought into sync with dpsclient/event.h, and fixed
  15.              the #ifndef interlock with dpsclient/event.h that was
  16.              broken during the Great Header Revision.
  17.  
  18.     The PostScript version of this file differs from the
  19.     Window Kit version in that the coordinates here are
  20.     ints instead of floats.
  21. ******************************************************************************/
  22.  
  23. #ifndef _M68K_DEV_EVENT_
  24. #define _M68K_DEV_EVENT_
  25.  
  26.  
  27. #ifdef EVENT_H        /* Interlock with dpsclient/event.h */
  28. #if !defined(_NXSIZE_)    /* Work around patch for old event.h in Phase 3 projs*/
  29. #define _NXSIZE_    1    /* NXCoord, NXPoint, NXSize decl seen */
  30. #define _NXSize_    NXSize
  31. #endif _NXSIZE_
  32. #else  EVENT_H        /* Haven't seen dpsclient/event.h, so define away */
  33. #define EVENT_H
  34.  
  35. #ifdef    KERNEL
  36. #else    KERNEL
  37.  
  38. #if !defined(_NXSIZE_)    /* Work around patch for old event.h in Phase 3 projs*/
  39. #define _NXSIZE_    1    /* NXCoord, NXPoint, NXSize decl seen */
  40. typedef float   NXCoord;
  41.  
  42. typedef struct _NXPoint {    /* point */
  43.     NXCoord         x, y;
  44. } NXPoint;
  45.  
  46. typedef struct _NXSize {    /* size */
  47.     NXCoord         width, height;
  48. } NXSize;
  49. #define _NXSize_    NXSize    /* Correct usage in event_status_driver.h */
  50. #endif _NXSIZE_
  51.  
  52. #endif    KERNEL
  53.  
  54. /* Event types */
  55.  
  56. #define NX_NULLEVENT        0    /* internal use */
  57.  
  58. /* mouse events */
  59.  
  60. #define NX_LMOUSEDOWN        1    /* left mouse-down event */
  61. #define NX_LMOUSEUP        2    /* left mouse-up event */
  62. #define NX_RMOUSEDOWN        3    /* right mouse-down event */
  63. #define NX_RMOUSEUP        4    /* right mouse-up event */
  64. #define NX_MOUSEMOVED        5    /* mouse-moved event */
  65. #define NX_LMOUSEDRAGGED    6    /* left mouse-dragged event */
  66. #define NX_RMOUSEDRAGGED    7    /* right mouse-dragged event */
  67. #define NX_MOUSEENTERED        8    /* mouse-entered event */
  68. #define NX_MOUSEEXITED        9    /* mouse-exited event */
  69.  
  70. /* keyboard events */
  71.  
  72. #define NX_KEYDOWN        10    /* key-down event */
  73. #define NX_KEYUP        11    /* key-up event */
  74. #define NX_FLAGSCHANGED        12    /* flags-changed event */
  75.  
  76. /* composite events */
  77.  
  78. #define NX_KITDEFINED        13    /* application-kit-defined event */
  79. #define NX_SYSDEFINED        14    /* system-defined event */
  80. #define NX_APPDEFINED        15    /* application-defined event */
  81. /* There are additional DPS client defined events past this point. */
  82.  
  83. #define NX_FIRSTEVENT        0
  84. #define NX_LASTEVENT        15
  85. #define NX_NUMPROCS        (NX_LASTEVENT-NX_FIRSTEVENT+1)
  86.  
  87. /* Event masks */
  88.  
  89. #define NX_LMOUSEDOWNMASK    (1 << NX_LMOUSEDOWN)    /* left mouse-down */
  90. #define NX_LMOUSEUPMASK        (1 << NX_LMOUSEUP)    /* left mouse-up */
  91. #define NX_RMOUSEDOWNMASK    (1 << NX_RMOUSEDOWN)    /* right mouse-down */
  92. #define NX_RMOUSEUPMASK        (1 << NX_RMOUSEUP)    /* right mouse-up */
  93. #define NX_MOUSEMOVEDMASK    (1 << NX_MOUSEMOVED)    /* mouse-moved */
  94. #define NX_LMOUSEDRAGGEDMASK    (1 << NX_LMOUSEDRAGGED)    /* left-dragged */
  95. #define NX_RMOUSEDRAGGEDMASK    (1 << NX_RMOUSEDRAGGED)    /* right-dragged */
  96. #define NX_MOUSEENTEREDMASK    (1 << NX_MOUSEENTERED)    /* mouse-entered */
  97. #define NX_MOUSEEXITEDMASK    (1 << NX_MOUSEEXITED)    /* mouse-exited */
  98. #define NX_KEYDOWNMASK        (1 << NX_KEYDOWN)    /* key-down */
  99. #define NX_KEYUPMASK        (1 << NX_KEYUP)        /* key-up */
  100. #define NX_FLAGSCHANGEDMASK    (1 << NX_FLAGSCHANGED)    /* flags-changed */
  101. #define NX_KITDEFINEDMASK     (1 << NX_WINCHANGED)    /* kit-defined */
  102. #define NX_SYSDEFINEDMASK     (1 << NX_SYSDEFINED)    /* system-defined */
  103. #define NX_APPDEFINEDMASK     (1 << NX_APPDEFINED)    /* app-defined */
  104.  
  105. #define EventCodeMask(type)    (1 << (type))
  106. #define NX_ALLEVENTS        -1    /* Check for all events */
  107.  
  108.  
  109. /* Masks for the bits in event.flags */
  110.  
  111. /* device-independent */
  112.  
  113. #define    NX_ALPHASHIFTMASK    0x00010000
  114. #define    NX_SHIFTMASK        0x00020000
  115. #define    NX_CONTROLMASK        0x00040000
  116. #define    NX_ALTERNATEMASK    0x00080000
  117. #define    NX_COMMANDMASK        0x00100000
  118. #define    NX_NUMERICPADMASK    0x00200000
  119. #define    NX_HELPMASK        0x00400000
  120.  
  121. /* device-dependent */
  122.  
  123. #define    NX_NEXTCTLKEYMASK    0x00000001
  124. #define    NX_NEXTLSHIFTKEYMASK    0x00000002
  125. #define    NX_NEXTRSHIFTKEYMASK    0x00000004
  126. #define    NX_NEXTLCMDKEYMASK    0x00000008
  127. #define    NX_NEXTRCMDKEYMASK    0x00000010
  128. #define    NX_NEXTLALTKEYMASK    0x00000020
  129. #define    NX_NEXTRALTKEYMASK    0x00000040
  130. #define NX_STYLUSPROXIMITYMASK    0x00000080
  131. #define NX_NONCOALSESCEDMASK    0x00000100
  132.  
  133. /* click state values
  134.  * If you have the following events in close succession, the click
  135.  * field has the indicated value:
  136.  *    
  137.  *  Event    Click Value    Comments
  138.  *  mouse-down    1        Not part of any click yet
  139.  *  mouse-up    1        Aha! A click!
  140.  *  mouse-down    2        Doing a double-click
  141.  *  mouse-up    2        It's finished
  142.  *  mouse-down    3        A triple
  143.  *  mouse-up    3
  144.  */
  145.  
  146. /* Values for the character set in event.data.key.charSet */
  147.  
  148. #define    NX_ASCIISET        0
  149. #define NX_SYMBOLSET        1
  150. #define    NX_DINGBATSSET        2
  151.  
  152. /* EventData type: defines the data field of an event */
  153.  
  154. typedef    union {
  155.     struct {    /* For mouse-down and mouse-up events */
  156.     unsigned char    subx;        /* sub-pixel position for x */
  157.     unsigned char    suby;        /* sub-pixel position for y */
  158.     short        eventNum;    /* unique identifier for this button */
  159.     int        click;        /* click state of this event */
  160.         unsigned char    pressure;    /* pressure value: 0=none, 255=full */
  161.     char        reserved1;
  162.     short        reserved2;
  163.     } mouse;
  164.     struct {    /* For key-down and key-up events */
  165.         short    reserved;
  166.     short    repeat;        /* for key-down: nonzero if really a repeat */
  167.     unsigned short charSet;    /* character set code */
  168.     unsigned short charCode;/* character code in that set */
  169.     unsigned short keyCode;    /* device-dependent key number */
  170.     short       keyData;    /* device-dependent info */
  171.     } key;
  172.     struct {    /* For mouse-entered and mouse-exited events */
  173.         short    reserved;
  174.     short    eventNum;    /* unique identifier from mouse down event */
  175.     int    trackingNum;    /* unique identifier from settrackingrect */
  176.     int    userData;   /* uninterpreted integer from settrackingrect */
  177.     } tracking;
  178.     struct {    /* For window-changed, sys-defined, and app-defined events */
  179.         short    reserved;
  180.     short    subType;    /* event subtype for compound events */
  181.     union {
  182.         float    F[2];    /* for use in compound events */
  183.         long    L[2];    /* for use in compound events */
  184.         short    S[4];    /* for use in compound events */
  185.         char    C[8];    /* for use in compound events */
  186.     } misc;
  187.     } compound;
  188. } NXEventData;
  189.  
  190. /* Finally! The event record! */
  191. typedef struct _NXEvent {
  192.     int            type;        /* An event type from above */
  193.     struct {
  194.     int        x, y;        /* Base coordinates in window, */
  195.     }            location;    /* from bottom left */
  196.     long        time;        /* vertical intervals since launch */
  197.     int            flags;        /* key state flags */
  198.     unsigned int    window;        /* window number of assigned window */
  199.     NXEventData        data;        /* type-dependent data */
  200. } NXEvent, *NXEventPtr;
  201.  
  202. /* How to pick window(s) for event (for PostEvent) */
  203. #define NX_NOWINDOW        -1
  204. #define NX_BYTYPE        0
  205. #define NX_BROADCAST        1
  206. #define NX_TOPWINDOW        2
  207. #define NX_FIRSTWINDOW        3
  208. #define NX_MOUSEWINDOW        4
  209. #define NX_NEXTWINDOW        5
  210. #define NX_LASTLEFT        6
  211. #define NX_LASTRIGHT        7
  212. #define NX_LASTKEY        8
  213. #define NX_EXPLICIT        9
  214. #define NX_TRANSMIT        10
  215. #define NX_BYPSCONTEXT        11
  216.  
  217. #endif EVENT_H    /* End of defs common with dpsclient/event.h */
  218.  
  219. /* Mask of events that cause screen to undim */
  220.  
  221. #define NX_UNDIMMASK        (NX_KEYDOWNMASK | NX_KEYUPMASK | \
  222.                  NX_LMOUSEDOWNMASK | NX_LMOUSEUPMASK | \
  223.                  NX_RMOUSEDOWNMASK | NX_RMOUSEUPMASK | \
  224.                  NX_MOUSEMOVEDMASK | NX_FLAGSCHANGEDMASK | \
  225.                  NX_MOUSEENTEREDMASK | NX_MOUSEEXITEDMASK | \
  226.                  NX_LMOUSEDRAGGEDMASK | NX_RMOUSEDRAGGEDMASK)
  227.  
  228. #endif _M68K_DEV_EVENT_
  229.