home *** CD-ROM | disk | FTP | other *** search
/ Amiga ISO Collection / AmigaUtilCD2.iso / Misc / DC-POS24.LZX / pOS / IncPOS.lzx / Device / IEvent.h < prev    next >
Encoding:
C/C++ Source or Header  |  1997-03-18  |  9.5 KB  |  276 lines

  1. #ifndef __INC_POS_DEVICE_IEVENT_H
  2. #define __INC_POS_DEVICE_IEVENT_H
  3. /*******************************************************************
  4.  Includes Release 24
  5.  (C) Copyright 1995-1997 proDAD
  6.      All Rights Reserved
  7.  
  8.  $AUT Holger Burkarth
  9.  $DAT >>IEvent.h<<   22 Jan 1997    14:34:02 - (C) ProDAD
  10. *******************************************************************/
  11. #ifndef __INC_POS_PEXEC_LIST_H
  12. #include <pExec/List.h>
  13. #endif
  14. #ifndef __INC_POS_DEVICE_TIMER_H
  15. #include <Device/Timer.h>
  16. #endif
  17. #ifndef __INC_POS_PLAYER_RECT_H
  18. #include <pLayer/Rect.h>
  19. #endif
  20.  
  21.  
  22.  
  23. enum pOS_InputEventClass
  24. {
  25.   IECLASS_NULL          =0x00, /* A NOP input event */
  26.   IECLASS_RAWKEY        =0x01, /* A raw keycode from the keyboard device */
  27.   IECLASS_RAWMOUSE      =0x02, /* The raw mouse report from the game port device */
  28.   IECLASS_EVENT         =0x03, /* A private console event */
  29.   IECLASS_POINTERPOS    =0x04, /* A Pointer Position report */
  30.   IECLASS_TIMER         =0x06, /* A timer event */
  31.   IECLASS_GADGETDOWN    =0x07, /* select button pressed down over a Gadget (address in ie_EventAddress) */
  32.   IECLASS_GADGETUP      =0x08, /* select button released over the same Gadget (address in ie_EventAddress) */
  33.   IECLASS_GADGETABORT   =0x09, /* (address in ie_EventAddress) */
  34.   IECLASS_MENULIST      =0x0A, /* this is a Menu Number transmission (Menu number is in ie_Code) */
  35.   IECLASS_CLOSEWINDOW   =0x0B, /* User has selected the active Window's Close Gadget */
  36.   IECLASS_SIZEWINDOW    =0x0C, /* this Window has a new size */
  37.   IECLASS_REFRESHWINDOW =0x0D, /* the Window pointed to by ie_EventAddress needs to be refreshed */
  38.   IECLASS_UPDATEGADGET  =0x0E, /* Gadget wurde verändert (prop) (address in ie_EventAddress) */
  39.   IECLASS_DISKREMOVED   =0x0F, /* the disk has been removed */
  40.   IECLASS_DISKINSERTED  =0x10, /* the disk has been inserted */
  41.   IECLASS_ACTIVEWINDOW  =0x11, /* the window is about to be been made active */
  42.   IECLASS_INACTIVEWINDOW=0x12, /* the window is about to be made inactive */
  43.  
  44.   IECLASS_HELP          =0x14, /* Help */
  45.   IECLASS_CHANGEWINDOW  =0x15, /* the Window has been modified with move, size, zoom, or change */
  46.   IECLASS_DRAGKEY       =0x16, /* */
  47.   IECLASS_DROP          =0x17, /* */
  48.  
  49.   IECLASS_MAX           =0x17, /* the last class */
  50. };
  51.  
  52.  
  53. enum pOS_InputEventSubClass
  54. {
  55.   IESUBCLASS_COMPATIBLE=0x00, /* IECLASS_NEWPOINTERPOS */
  56.   IESUBCLASS_PIXEL     =0x01, /* ie_EventAddress points to struct IEPointerPixel */
  57.   IESUBCLASS_TABLET    =0x02, /* ie_EventAddress points to struct IEPointerTablet */
  58.   IESUBCLASS_NEWTABLET =0x03, /* ie_EventAddress points to struct IENewTablet */
  59. };
  60.  
  61.  
  62. enum pOS_InputEventCode
  63. {
  64. /*  IECLASS_RAWKEY */
  65.   IECODE_UP_PREFIX         =0x80,
  66.   IECODE_KEY_CODE_FIRST    =0x00,
  67.   IECODE_KEY_CODE_LAST     =0x77,
  68.   IECODE_COMM_CODE_FIRST   =0x78,
  69.   IECODE_COMM_CODE_LAST    =0x7F,
  70.  
  71. /*  IECLASS_ANSI */
  72.   IECODE_C0_FIRST          =0x00,
  73.   IECODE_C0_LAST           =0x1F,
  74.   IECODE_ASCII_FIRST       =0x20,
  75.   IECODE_ASCII_LAST        =0x7E,
  76.   IECODE_ASCII_DEL         =0x7F,
  77.   IECODE_C1_FIRST          =0x80,
  78.   IECODE_C1_LAST           =0x9F,
  79.   IECODE_LATIN1_FIRST      =0xA0,
  80.   IECODE_LATIN1_LAST       =0xFF,
  81.  
  82. /*  IECLASS_RAWMOUSE */
  83.   IECODE_LBUTTON           =0x68,  /* also uses IECODE_UP_PREFIX */
  84.   IECODE_RBUTTON           =0x69,
  85.   IECODE_MBUTTON           =0x6A,
  86.   IECODE_NOBUTTON          =0xFF,
  87.  
  88. /* IECLASS_SIZEWINDOW, IECLASS_CHANGEWINDOW */
  89.   IECODE_ADDWIDTH          =0x0001,
  90.   IECODE_SUBWIDTH          =0x0002,
  91.   IECODE_ADDHEIGHT         =0x0004,
  92.   IECODE_SUBHEIGHT         =0x0008,
  93.   IECODE_ADDLEFT           =0x0010,
  94.   IECODE_SUBLEFT           =0x0020,
  95.   IECODE_ADDTOP            =0x0040,
  96.   IECODE_SUBTOP            =0x0080,
  97.  
  98. /* IECODE_DROP */
  99.   IECODE_DROP_FIRST        =0x00, /* Message für Drop erzeugen */
  100.   IECODE_DROP_WORK         =0x01, /* Drop-Message bearbeiten */
  101.   IECODE_DROP_ABORT        =0x02, /* Drop-Message wurde nicht bearbeitet */
  102.   IECODE_DROP_REPLYWORK    =0x03, /* Message nach pOS_ReplyMsg bearbeiten */
  103. };
  104.  
  105.  
  106. enum pOS_InputEventGdUpCode /** GadgetUpdate, GadgetUp, GadgetDown, GadgetAbort */
  107. {
  108.   /* wird gefilter =>             +     */
  109.  
  110.   IEGUCODE_Mask=0xff,
  111.   IEGUCODE_Unknown =0,          /*   0 Unbekannt, kann nicht eingeteilt werden */
  112.   IEGUCODE_Start,               /*   1 Prozeß, Vorgang, Ablauf,... wird gestartet */
  113.   IEGUCODE_Stop,                /*     Prozeß, Vorgang, Ablauf,... wurde gestoppt */
  114.   IEGUCODE_End,                 /*     Prozeß, Vorgang, Ablauf,... wurde beendet */
  115.   IEGUCODE_Select,              /*     Der Selektzustand hat sich verändert */
  116.   IEGUCODE_Scroll,              /*+  5 Grafikinhalt wurde verschoben */
  117.   IEGUCODE_Ok,                  /*     Bestätigung */
  118.   IEGUCODE_Cancel,              /*     Widerruft, Abbruch */
  119.   IEGUCODE_Error,               /*     Fehler  */
  120.   IEGUCODE_Notify,              /*     Auslöser ist ICLMTH_Notify */
  121.   IEGUCODE_UpSelect,            /*+ 10 Der Selektzustand hat sich verändert (Update auf IEGUCODE_Select) */
  122.   IEGUCODE_Alternate,           /*     Allegmeine Veränderung, (Eingabe in StrGad) */
  123.   IEGUCODE_Drop,                /*     Eingabe erfolgte per Drag&Drop */
  124.   IEGUCODE_Active,              /*     Gadget wurde aktiviert (Fokus auf Gadget) */
  125.   IEGUCODE_Inactive,            /*     Gadget gibt Fokus ab */
  126.   IEGUCODE_Drag,                /*  15  */
  127.   IEGUCODE_MAX,
  128. };
  129.  
  130.  
  131.  
  132.  
  133.  
  134. enum pOS_InputEventQualifier
  135. {
  136.   IEQUALIFIER_LSHIFT            =0x0001,
  137.   IEQUALIFIER_RSHIFT            =0x0002,
  138.   IEQUALIFIER_CAPSLOCK          =0x0004,
  139.   IEQUALIFIER_CONTROL           =0x0008,
  140.   IEQUALIFIER_LALT              =0x0010,
  141.   IEQUALIFIER_RALT              =0x0020,
  142.   IEQUALIFIER_LCOMMAND          =0x0040,
  143.   IEQUALIFIER_RCOMMAND          =0x0080,
  144.   IEQUALIFIER_NUMERICPAD        =0x0100,
  145.   IEQUALIFIER_REPEAT            =0x0200,
  146.   IEQUALIFIER_INTERRUPT         =0x0400,
  147.   IEQUALIFIER_MULTIBROADCAST    =0x0800,
  148.   IEQUALIFIER_MIDBUTTON         =0x1000,
  149.   IEQUALIFIER_RBUTTON           =0x2000,
  150.   IEQUALIFIER_LEFTBUTTON        =0x4000,
  151.   IEQUALIFIER_RELATIVEMOUSE     =0x8000,
  152.  
  153.   IEQUALIFIERB_LSHIFT           =0,
  154.   IEQUALIFIERB_RSHIFT           =1,
  155.   IEQUALIFIERB_CAPSLOCK         =2,
  156.   IEQUALIFIERB_CONTROL          =3,
  157.   IEQUALIFIERB_LALT             =4,
  158.   IEQUALIFIERB_RALT             =5,
  159.   IEQUALIFIERB_LCOMMAND         =6,
  160.   IEQUALIFIERB_RCOMMAND         =7,
  161.   IEQUALIFIERB_NUMERICPAD       =8,
  162.   IEQUALIFIERB_REPEAT           =9,
  163.   IEQUALIFIERB_INTERRUPT        =10,
  164.   IEQUALIFIERB_MULTIBROADCAST   =11,
  165.   IEQUALIFIERB_MIDBUTTON        =12,
  166.   IEQUALIFIERB_RBUTTON          =13,
  167.   IEQUALIFIERB_LEFTBUTTON       =14,
  168.   IEQUALIFIERB_RELATIVEMOUSE    =15,
  169. };
  170.  
  171.  
  172. /*----------------------------------
  173. -----------------------------------*/
  174. struct pOS_IEPointerPixel
  175. {
  176.   struct pOS_Screen *iepp_Screen;
  177.   struct pOS_Point   iepp_Position;
  178. };
  179.  
  180.  
  181. /*----------------------------------
  182. -----------------------------------*/
  183. struct pOS_IEPointerTablet
  184. {
  185.   struct pOS_Point iept_Range;
  186.   struct pOS_Point iept_Value;
  187.   SWORD            iept_Pressure; /* -128 => 127 (unused, set to 0) */
  188. };
  189.  
  190.  
  191.  
  192. /*----------------------------------
  193. -----------------------------------*/
  194. struct pOS_IENewTablet
  195. {
  196.   struct pOS_Callback *ient_CallBack;
  197.   UWORD ient_ScaledX, ient_ScaledY;
  198.   UWORD ient_ScaledXFraction, ient_ScaledYFraction;
  199.   ULONG ient_TabletX, ient_TabletY;
  200.   ULONG ient_RangeX, ient_RangeY;
  201.   const struct pOS_TagItem *ient_TagList;
  202. };
  203.  
  204.  
  205.  
  206. /*----------------------------------
  207.   ie_Class==IECLASS_DROP
  208.   (struct pOS_IEDragDrop*)ie->ie_EventAddress
  209. -----------------------------------*/
  210. struct pOS_IEDragDrop
  211. {
  212.   struct {
  213.     struct pOS_Screen  *iedd_Screen;
  214.     struct pOS_Window  *iedd_Window;
  215.     struct pOS_Gadget  *iedd_Gadget;
  216.     struct pOS_Point    iedd_Mouse;
  217.     struct pOS_TimeVal  iedd_Time;
  218.  
  219.     UBYTE iedd_Reserved1[8];
  220.  
  221.   } iedd_Src, iedd_Dst;  /* Source, Destination */
  222.  
  223.   const struct pOS_DropAttribute *iedd_DropAtt;
  224.         struct pOS_DataType      *iedd_Object;
  225.         struct pOS_Point          iedd_Offset;
  226.  
  227. };
  228.  
  229.  
  230. /*----------------------------------
  231. -----------------------------------*/
  232. struct pOS_InputEvent
  233. {
  234.   struct pOS_InputEvent *ie_NextEvent;   /* the chronologically next event */
  235.   UBYTE                  ie_Class;       /* the input event class */
  236.   UBYTE                  ie_SubClass;    /* optional subclass of the class */
  237.   ULONG                  ie_Code;        /* the input event code */
  238.   UWORD                  ie_Qualifier;   /* qualifiers in effect for the event*/
  239.   UBYTE                  ie_Reserved1[8];
  240.   union {
  241.     UBYTE   ie_Reserved2[8];
  242.     struct {
  243.       UWORD ie_x;               /* the pointer position for the event*/
  244.       UWORD ie_y;
  245.     } ie_xy;
  246.     APTR    ie_addr;            /* the event address */
  247.     ULONG   ie_deadKey;         /* DeadKey pack */
  248.     struct {
  249.       UBYTE ie_prev1DownCode;   /* previous down keys for dead */
  250.       UBYTE ie_prev1DownQual;   /*   key translation: the ie_Code */
  251.       UBYTE ie_prev2DownCode;   /*   & low byte of ie_Qualifier for */
  252.       UBYTE ie_prev2DownQual;   /*   last & second last down keys */
  253.     } ie_dead;
  254.   } ie_position;
  255.  
  256.   struct pOS_TimeVal ie_TimeStamp;  /* the system tick at the event */
  257.   ULONG              ie_Data;
  258.  
  259.   UBYTE ie_Reserved3[8];
  260. };
  261.  
  262.  
  263. #define ie_DeadKey              ie_position.ie_deadKey
  264.  
  265. #ifndef ie_X
  266.  #define ie_X                    ie_position.ie_xy.ie_x
  267.  #define ie_Y                    ie_position.ie_xy.ie_y
  268.  #define ie_EventAddress         ie_position.ie_addr
  269.  #define ie_Prev1DownCode        ie_position.ie_dead.ie_prev1DownCode
  270.  #define ie_Prev1DownQual        ie_position.ie_dead.ie_prev1DownQual
  271.  #define ie_Prev2DownCode        ie_position.ie_dead.ie_prev2DownCode
  272.  #define ie_Prev2DownQual        ie_position.ie_dead.ie_prev2DownQual
  273. #endif
  274.  
  275. #endif
  276.