#pragma once #include #include "core/point.h" namespace kku { struct SystemEvent { enum class Type { None = 0, Resize = 1, KeyPress = 2, KeyRelease = 3, MouseWheelScroll = 4, MouseMove = 5, MousePress = 6, MouseRelease = 7 }; struct Size { std::size_t width = 0; std::size_t height = 0; }; struct Key { char view = char(0); bool alt = false; bool control = false; bool shift = false; }; struct Mouse { Point position; bool scrolled_up = false; enum class Button { None = 0, Wheel = 1, Left = 2, Right = 3 }; Button button = Button::Left; }; struct None {}; Type type = Type::None; std::variant data; }; }