#ifndef DEVICES_INPUTEVENT_H
#define DEVICES_INPUTEVENT_H

/*******************************************************************
 pOS / Amiga adapt
*******************************************************************/

#ifndef EXEC_TYPES_H
#include <exec/types.h>
#endif
#ifndef DEVICES_TIMER_H
#include <devices/timer.h>
#endif
#ifndef UTILITY_HOOKS_H
#include <utility/hooks.h>
#endif
#ifndef UTILITY_TAGITEM_H
#include <utility/tagitem.h>
#endif
#ifndef __INC_POS_DEVICE_IEVENT_H
#include <pDevice/IEvent.h>
#endif



struct IEPointerPixel
{
  struct Screen *iepp_Screen;
  struct {
    SLONG X;
    SLONG Y;
  } iepp_Position;
};

struct IEPointerTablet
{
  struct {
    ULONG X;
    ULONG Y;
  } iept_Range;

  struct {
    ULONG X;
    ULONG Y;
  } iept_Value;

  SWORD iept_Pressure;
};


struct IENewTablet
{
  struct Hook *ient_CallBack;
  UWORD ient_ScaledX, ient_ScaledY;
  UWORD ient_ScaledXFraction, ient_ScaledYFraction;
  ULONG ient_TabletX, ient_TabletY;
  ULONG ient_RangeX, ient_RangeY;
  struct TagItem *ient_TagList;
};


struct InputEvent
{
  struct  InputEvent *ie_NextEvent;
  UBYTE   ie_Class;
  UBYTE   ie_SubClass;
  ULONG   ie_Code;
  UWORD   ie_Qualifier;
  UBYTE   ie_Reserved1[8];
  union {
    UBYTE   ie_Reserved2[8];
    struct {
        WORD  ie_x;
        WORD  ie_y;
    } ie_xy;
    APTR    ie_addr;
    struct {
        UBYTE ie_prev1DownCode;
        UBYTE ie_prev1DownQual;
        UBYTE ie_prev2DownCode;
        UBYTE ie_prev2DownQual;
    } ie_dead;
  } ie_position;
  struct timeval ie_TimeStamp;
  ULONG          ie_Data;
  UBYTE          ie_Reserved3[8];
};

#endif  /* DEVICES_INPUTEVENT_H */
