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