Files
Aerofoil/GpCommon/GpVOSEvent.h
2019-12-24 02:35:24 -05:00

138 lines
1.8 KiB
C++

#pragma once
namespace GpKeyModifiers
{
enum GpKeyModifier
{
kShift,
kCtrl,
};
}
namespace GpKeyIDSubsets
{
enum GpKeyIDSubset
{
kASCII,
kSpecial,
kNumPadASCII,
kNumPadSpecial,
kFKey, // Key value is a raw F number
};
}
typedef GpKeyIDSubsets::GpKeyIDSubset GpKeyIDSubset_t;
namespace GpKeySpecials
{
enum GpKeySpecial
{
kEscape,
kPrintScreen,
kScrollLock,
kPause,
kInsert,
kHome,
kPageUp,
kPageDown,
kDelete,
kEnd,
kBackspace,
kCapsLock,
kEnter,
kLeftShift,
kRightShift,
kLeftCtrl,
kRightCtrl,
kLeftAlt,
kRightAlt,
kNumLock,
};
}
typedef GpKeySpecials::GpKeySpecial GpKeySpecial_t;
namespace GpKeyboardInputEventTypes
{
enum GpKeyboardInputEventType
{
kDown,
kUp,
kAuto,
};
}
typedef GpKeyboardInputEventTypes::GpKeyboardInputEventType GpKeyboardInputEventType_t;
struct GpKeyboardInputEvent
{
union KeyUnion
{
GpKeySpecials::GpKeySpecial m_specialKey;
char m_asciiChar;
};
GpKeyboardInputEventType_t m_eventType;
GpKeyIDSubset_t m_keyIDSubset;
KeyUnion m_key;
};
namespace GpMouseEventTypes
{
enum GpMouseEventType
{
kUp,
kDown,
kMove,
kLeave,
};
}
typedef GpMouseEventTypes::GpMouseEventType GpMouseEventType_t;
namespace GpMouseButtons
{
enum GpMouseButton
{
kNone,
kLeft,
kMiddle,
kRight,
kX1,
kX2,
};
}
typedef GpMouseButtons::GpMouseButton GpMouseButton_t;
struct GpMouseInputEvent
{
int32_t m_x;
int32_t m_y;
GpMouseEventType_t m_eventType;
GpMouseButton_t m_button;
};
namespace GpVOSEventTypes
{
enum GpVOSEventType
{
kKeyboardInput,
kMouseInput,
};
}
typedef GpVOSEventTypes::GpVOSEventType GpVOSEventType_t;
struct GpVOSEvent
{
union EventUnion
{
GpKeyboardInputEvent m_keyboardInputEvent;
GpMouseInputEvent m_mouseInputEvent;
};
EventUnion m_event;
GpVOSEventType_t m_eventType;
};