v1.4.4
This commit is contained in:
commit
9c94d113d3
10260 changed files with 1237388 additions and 0 deletions
274
source/application/StarInputEvent.hpp
Normal file
274
source/application/StarInputEvent.hpp
Normal file
|
@ -0,0 +1,274 @@
|
|||
#ifndef STAR_INPUT_EVENT_HPP
|
||||
#define STAR_INPUT_EVENT_HPP
|
||||
|
||||
#include "StarString.hpp"
|
||||
#include "StarBiMap.hpp"
|
||||
#include "StarVariant.hpp"
|
||||
#include "StarVector.hpp"
|
||||
|
||||
namespace Star {
|
||||
|
||||
enum class Key : uint16_t {
|
||||
Backspace,
|
||||
Tab,
|
||||
Clear,
|
||||
Return,
|
||||
Escape,
|
||||
Space,
|
||||
Exclaim,
|
||||
QuotedBL,
|
||||
Hash,
|
||||
Dollar,
|
||||
Ampersand,
|
||||
Quote,
|
||||
LeftParen,
|
||||
RightParen,
|
||||
Asterisk,
|
||||
Plus,
|
||||
Comma,
|
||||
Minus,
|
||||
Period,
|
||||
Slash,
|
||||
Zero,
|
||||
One,
|
||||
Two,
|
||||
Three,
|
||||
Four,
|
||||
Five,
|
||||
Six,
|
||||
Seven,
|
||||
Eight,
|
||||
Nine,
|
||||
Colon,
|
||||
Semicolon,
|
||||
Less,
|
||||
Equals,
|
||||
Greater,
|
||||
Question,
|
||||
At,
|
||||
LeftBracket,
|
||||
Backslash,
|
||||
RightBracket,
|
||||
Caret,
|
||||
Underscore,
|
||||
Backquote,
|
||||
A,
|
||||
B,
|
||||
C,
|
||||
D,
|
||||
E,
|
||||
F,
|
||||
G,
|
||||
H,
|
||||
I,
|
||||
J,
|
||||
K,
|
||||
L,
|
||||
M,
|
||||
N,
|
||||
O,
|
||||
P,
|
||||
Q,
|
||||
R,
|
||||
S,
|
||||
T,
|
||||
U,
|
||||
V,
|
||||
W,
|
||||
X,
|
||||
Y,
|
||||
Z,
|
||||
Delete,
|
||||
Kp0,
|
||||
Kp1,
|
||||
Kp2,
|
||||
Kp3,
|
||||
Kp4,
|
||||
Kp5,
|
||||
Kp6,
|
||||
Kp7,
|
||||
Kp8,
|
||||
Kp9,
|
||||
Kp_period,
|
||||
Kp_divide,
|
||||
Kp_multiply,
|
||||
Kp_minus,
|
||||
Kp_plus,
|
||||
Kp_enter,
|
||||
Kp_equals,
|
||||
Up,
|
||||
Down,
|
||||
Right,
|
||||
Left,
|
||||
Insert,
|
||||
Home,
|
||||
End,
|
||||
PageUp,
|
||||
PageDown,
|
||||
F1,
|
||||
F2,
|
||||
F3,
|
||||
F4,
|
||||
F5,
|
||||
F6,
|
||||
F7,
|
||||
F8,
|
||||
F9,
|
||||
F10,
|
||||
F11,
|
||||
F12,
|
||||
F13,
|
||||
F14,
|
||||
F15,
|
||||
NumLock,
|
||||
CapsLock,
|
||||
ScrollLock,
|
||||
RShift,
|
||||
LShift,
|
||||
RCtrl,
|
||||
LCtrl,
|
||||
RAlt,
|
||||
LAlt,
|
||||
RGui,
|
||||
LGui,
|
||||
AltGr,
|
||||
Compose,
|
||||
Help,
|
||||
PrintScreen,
|
||||
SysReq,
|
||||
Pause,
|
||||
Menu,
|
||||
Power
|
||||
};
|
||||
extern EnumMap<Key> const KeyNames;
|
||||
|
||||
enum class KeyMod : uint16_t {
|
||||
NoMod = 0x0000,
|
||||
LShift = 0x0001,
|
||||
RShift = 0x0002,
|
||||
LCtrl = 0x0040,
|
||||
RCtrl = 0x0080,
|
||||
LAlt = 0x0100,
|
||||
RAlt = 0x0200,
|
||||
LGui = 0x0400,
|
||||
RGui = 0x0800,
|
||||
Num = 0x1000,
|
||||
Caps = 0x2000,
|
||||
AltGr = 0x4000
|
||||
};
|
||||
extern EnumMap<KeyMod> const KeyModNames;
|
||||
|
||||
KeyMod operator|(KeyMod a, KeyMod b);
|
||||
KeyMod operator&(KeyMod a, KeyMod b);
|
||||
KeyMod operator~(KeyMod a);
|
||||
KeyMod& operator|=(KeyMod& a, KeyMod b);
|
||||
KeyMod& operator&=(KeyMod& a, KeyMod b);
|
||||
|
||||
enum class MouseButton : uint8_t {
|
||||
Left,
|
||||
Middle,
|
||||
Right,
|
||||
FourthButton,
|
||||
FifthButton
|
||||
};
|
||||
extern EnumMap<MouseButton> const MouseButtonNames;
|
||||
|
||||
enum class MouseWheel : uint8_t {
|
||||
Up,
|
||||
Down
|
||||
};
|
||||
extern EnumMap<MouseWheel> const MouseWheelNames;
|
||||
|
||||
typedef uint32_t ControllerId;
|
||||
|
||||
struct KeyDownEvent {
|
||||
Key key;
|
||||
KeyMod mods;
|
||||
};
|
||||
|
||||
struct KeyUpEvent {
|
||||
Key key;
|
||||
};
|
||||
|
||||
struct TextInputEvent {
|
||||
String text;
|
||||
};
|
||||
|
||||
struct MouseMoveEvent {
|
||||
Vec2I mouseMove;
|
||||
Vec2I mousePosition;
|
||||
};
|
||||
|
||||
struct MouseButtonDownEvent {
|
||||
MouseButton mouseButton;
|
||||
Vec2I mousePosition;
|
||||
};
|
||||
|
||||
struct MouseButtonUpEvent {
|
||||
MouseButton mouseButton;
|
||||
Vec2I mousePosition;
|
||||
};
|
||||
|
||||
struct MouseWheelEvent {
|
||||
MouseWheel mouseWheel;
|
||||
Vec2I mousePosition;
|
||||
};
|
||||
|
||||
struct ControllerAxisEvent {
|
||||
ControllerId controller;
|
||||
unsigned controllerAxis;
|
||||
float controllerAxisValue;
|
||||
};
|
||||
|
||||
struct ControllerButtonDownEvent {
|
||||
ControllerId controller;
|
||||
unsigned controllerButton;
|
||||
};
|
||||
|
||||
struct ControllerButtonUpEvent {
|
||||
ControllerId controller;
|
||||
unsigned controllerButton;
|
||||
};
|
||||
|
||||
typedef Variant<
|
||||
KeyDownEvent,
|
||||
KeyUpEvent,
|
||||
TextInputEvent,
|
||||
MouseMoveEvent,
|
||||
MouseButtonDownEvent,
|
||||
MouseButtonUpEvent,
|
||||
MouseWheelEvent,
|
||||
ControllerAxisEvent,
|
||||
ControllerButtonDownEvent,
|
||||
ControllerButtonUpEvent>
|
||||
InputEvent;
|
||||
|
||||
inline KeyMod operator|(KeyMod a, KeyMod b) {
|
||||
return (KeyMod)((uint16_t)a | (uint16_t)b);
|
||||
}
|
||||
|
||||
inline KeyMod operator&(KeyMod a, KeyMod b) {
|
||||
return (KeyMod)((uint16_t)a & (uint16_t)b);
|
||||
}
|
||||
|
||||
inline KeyMod operator~(KeyMod a) {
|
||||
return (KeyMod) ~(uint16_t)a;
|
||||
}
|
||||
|
||||
inline KeyMod& operator|=(KeyMod& a, KeyMod b) {
|
||||
uint16_t a_cast = (uint16_t)a;
|
||||
a_cast |= (uint16_t)b;
|
||||
a = (KeyMod)a_cast;
|
||||
return a;
|
||||
}
|
||||
|
||||
inline KeyMod& operator&=(KeyMod& a, KeyMod b) {
|
||||
uint16_t a_cast = (uint16_t)a;
|
||||
a_cast &= (uint16_t)b;
|
||||
a = (KeyMod)a_cast;
|
||||
return a;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
#endif
|
Loading…
Add table
Add a link
Reference in a new issue